使用clojure打嗝渲染风格信息的惯用方式
题
我需要在打嗝中构建样式信息,以便在变量“top”和“left”所示的位置处放置一个元素。我的代码如下所示:
(html [:div {:style(str“顶部”top“;左”左“} “一些文本”])
这个代码非常丑陋。如果打嗝自动使用标准CSS样式规则将自动呈现“样式”属性,则会更好......然后我可以写下列:
(html [:div {:style {:top top:left left}} “一些文本”])
已经有一个图书馆吗?或者,我需要滚动自己的解决方案吗?
谢谢Clojurians的任何指针!
解决方案
您可以编写一个函数,这会这样做,并且甚至比地图稍微少于键入。例如:
(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