Pregunta

Necesito crear información de estilo dentro de HICCUP para colocar un elemento en una ubicación indicada por las variables "top" y "izquierda".Mi código se ve así:

(HTML [: DIV {: Style (STR "TOP" TOP "; izquierda" izquierda)} "Algunos texto"])

Este código es bastante feo.Sería mejor si HICCUP hiciera automáticamente el atributo "Estilo" usando reglas de estilo CSS estándar ... entonces podría escribir lo siguiente:

(HTML [: DIV {: Style {: Top Top: izquierda izquierda}} "Algunos texto"])

¿Ya es una biblioteca que hace esto?O, ¿necesito para rodar mi propia solución?

¡Gracias clojurianos para cualquier puntero!

¿Fue útil?

Solución

Podrías escribir una función que haría eso, e incluso sería un poco menos escrito que el mapa.Por ejemplo:

(defn style [& info]
  {:style (.trim (apply str (map #(let [[kwd val] %]
                                   (str (name kwd) ":" val "; "))
                                (apply hash-map info))))})

que le permitiría escribirlo así ...

(html [:div (style :top top :left left) "some text"])

Salida de muestra de la función ...

user=> (style :top 32 :left 14)
{:style "top: 32; left: 14;"}

Otros consejos

¿Qué hay de esto:

(defn style [s]
  (str/join ";" (map #(str (name %) ":" ((keyword %) s)) (keys s))))

(style {:padding     "20px"
        :background  "#e68a00"
        :color       "white"
        :font-size   "large"
        :font-weight "bold"})

No mucho en Clojure, sino un enfoque basado en "transformación" como el de enllevar los sonidos como la solución para este tipo de necesidades. https://github.com/cgrand/enlive

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top