Domanda

Ho bisogno di costruire informazioni di stile all'interno del singhiozzo per posizionare un elemento in una posizione indicata dalle variabili "Top" e "Sinistra".Il mio codice sembra così:

.

(HTML [: DIV {DIV {: STYLE (STR "TOP" TOP "; SINISTRA" SINISTRA)} "Qualche testo"])

Questo codice è piuttosto brutto.Sarebbe più bello se HICCUP ha reso automaticamente l'attributo "Stile" utilizzando le regole di stile CSS standard ... Quindi potrei scrivere quanto segue:

.

(HTML [: Div {: Style {: Top Top: a sinistra sinistra}} "Qualche testo"])

C'è già una biblioteca che fa questo?Oppure, ho bisogno di rotolare la mia soluzione?

Grazie Clojurians per qualsiasi suggerimento!

È stato utile?

Soluzione

Potresti scrivere una funzione che lo farebbe, e sarebbe anche leggermente meno digitando della mappa.Ad esempio:

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

Quale ti permetterebbe di scriverlo come questo ...

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

Esecuzione del campione dalla funzione ...

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

Altri suggerimenti

Che dire di questo:

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

Non ancora molto nel cloudo, ma un approccio basato su "trasformazione" come quello di rallegrarsi come la soluzione per questo tipo di esigenze - https://github.com/cgrand/enlive

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top