Clojure Hiccupを使用してスタイル情報をレンダリングする慣性的な方法
質問
変数「top」と「左」で示された場所に要素を配置するために、Hiccup内のスタイル情報を構築する必要があります。私のコードはそのように見えます:
(html [:div {:style(str "top" top ";左の"左)} 「テキスト」))
このコードはかなり醜いです。Hiccupが標準のCSSスタイルのルールを使用して「style」属性を自動的にレンダリングした場合、それはNICERになるでしょう...それから私は次のことを書くことができます:
(html [:div {:style {:top top:左左}} 「テキスト」))
これを行う図書館はありますか?それとも、私自身の解決策をロールアップする必要がありますか?
ありがとうございました。
解決
それをするであろう関数を書くことができ、それは地図よりもわずかに入力されていないでしょう。例えば:
(defn style [& info]
{:style (.trim (apply str (map #(let [[kwd val] %]
(str (name kwd) ":" val "; "))
(apply hash-map info))))})
.
これはあなたがそれをこのように書くことを可能にするだろう...
(html [:div (style :top top :left left) "some text"])
.
関数からの出力例...
user=> (style :top 32 :left 14)
{:style "top: 32; left: 14;"}
. 他のヒント
これについてどうした:
(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"})
. Clojureにはまだありませんが、これらの種類のニーズのためのソリューションのように見えるような「変革」ベースのアプローチ - https://github.com/cgrand/enlive
所属していません StackOverflow