Clojure Hiccup을 사용하여 스타일 정보를 렌더링하는 관용적 방법

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

  •  12-12-2019
  •  | 
  •  

문제

변수 "top"및 "left"로 표시된 위치에 요소를 배치하려면 딸꾹질에서 스타일 정보를 작성해야합니다.내 코드는 다음과 같습니다 :

(html [: div {: Style (style) "왼쪽"왼쪽 "왼쪽)} "일부 텍스트"])

이 코드는 꽤 못생긴 것입니다.Hiccup이 표준 CSS 스타일 규칙을 사용하여 "스타일"속성을 자동으로 렌더링 한 경우 ... 다음을 쓸 수 있습니다.

(html [: div {: style {: 맨 위로 : 왼쪽 왼쪽}}}} "일부 텍스트"])

이미이 라이브러리가 있습니까?또는, 내 솔루션을 굴릴 필요가 있습니까?

어떤 포인터를 위해 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"})
.

은 아직 collure에별로 없지만 이러한 종류의 요구를위한 솔루션과 같은 주음의 소리와 같은 '변형'기반 접근법 - https://github.com/cgrand/enlive

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top