我需要在打嗝中构建样式信息,以便在变量“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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top