Clojure Hiccupを使用してスタイル情報をレンダリングする慣性的な方法

StackOverflow https://stackoverflow.com//questions/12679754

  •  12-12-2019
  •  | 
  •  

質問

変数「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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top