使用Clojure Hiccup呈现样式信息的惯用法

drc*_*ode 8 css clojure hiccup

我需要在打嗝内建立样式信息,以便将元素放在变量"top"和"left"所指示的位置.我的代码看起来像这样:

(html [:div {:style(str"top"top"; left"left)}"some text"])

这段代码非常难看.如果打嗝使用标准CSS样式规则自动呈现"样式"属性会更好...然后我可以写下面的内容:

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

是否有一个图书馆可以做到这一点?或者,我需要推出自己的解决方案吗?

感谢Clojurians任何指针!

Bil*_*ill 9

你可以编写一个能够做到这一点的函数,它甚至可以比地图略微打字.例如:

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

哪个允许你这样写...

(html [:div (style :top top :left left) "some text"])
Run Code Online (Sandbox Code Playgroud)

函数的样本输出......

user=> (style :top 32 :left 14)
{:style "top: 32; left: 14;"}
Run Code Online (Sandbox Code Playgroud)