Question

J'ai besoin de construire des informations de style au sein de HICCUP afin de placer un élément à un emplacement indiqué par les variables "TOP" et "GAUCHE".Mon code ressemble donc à:

(html [: div {: style (str "haut" haut "; gauche" laissé)} "Quelque texte"])

Ce code est assez moche.Il serait plus agréable si Hiccup a automatiquement rendu l'attribut "style" à l'aide de règles de style CSS standard ... alors je pourrais écrire ce qui suit:

(html [: div {: style {: top top: gauche gauche}} "Quelque texte"])

Y a-t-il déjà une bibliothèque qui fait cela?Ou, dois-je lancer ma propre solution?

Merci Clojuriens pour tous les indicateurs!

Était-ce utile?

La solution

Vous pouvez écrire une fonction qui le ferait, et cela serait même légèrement moins tapé que la carte.Par exemple:

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

Qui vous permettrait d'écrire comme ça ...

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

Échantillon de sortie de la fonction ...

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

Autres conseils

Et ceci:

(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"})

Pas beaucoup dans le clojure encore, mais une approche basée sur la «transformation» comme celle des sons de discussion comme la solution pour ce type de besoins - https://github.com/cgrand/enlive

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top