Clojurescript의 dom에 SVG 요소를 추가하는 가장 좋은 방법은 무엇입니까? Twitterbuzz 예제는 Google 클로저 lib의 Graphics 객체를 사용하지만 IE 호환성을 신경 쓰지 않는다고 말하면 HTML과 같은 요소를 추가 할 수있는 방법이 있습니까 (dom/build [:svg [:g [:text "something like this ?"]]])
클로저의 그래픽 라이브러리를 사용해 보았지만 많이 사용하지는 않습니다. 편리한 SVG 기능. Apogee를 사용해 보았지만 SVG 코드를 직렬화하면 직접 DOM 조작을 선호합니다.Clojurescript의 SVG
답변
dom/build는 네임 스페이스가없는 DOM 요소를 생성합니다. dom/build를 향상 시키거나 SVG를 작성해야합니다. 다음 코드를 사용하여 SVG 요소를 만듭니다.
(defn element-ns
"Create a namespaced dom element"
[namespace tag & args]
(let [[tag attrs children] (normalize-args tag args)
parent (. js/document createElementNS namespace (name tag))
[parent children] (if (string? (first children))
[(set-text (element-ns namespace tag attrs) (first children))
(rest children)]
[parent children])]
(doseq [[k v] attrs]
(. parent setAttributeNS nil (name k) v))
(apply append parent children)))
(defn build-svg
"Build up a svg element from nested vectors."
[x]
(if (vector? x)
(let [[parent children] (if (keyword? (first x))
[(apply element-ns "http://www.w3.org/2000/svg" (take-while element-arg? x))
(drop-while element-arg? x)]
[(first x) (rest x)])
children (map build-svg children)]
(apply append parent children))
x))
당신은 D3 자바 스크립트 라이브러리에 대한 ClojureScript 래퍼 내 cljs-d3 도서관에 관심이있을 수 있습니다. D3은 SVG DOM을 조작하기위한 훌륭한 도구입니다.
Enlive을 SVG 용으로 사용 하시겠습니까? 이것은 내가 몇 가지 실시간 프로젝트에 사용할 계획입니다.
왜냐하면 AFAIK, Enlive는 런타임에 클라이언트에서 SVG를 생성하는 반면 서버에서 HTML을 생성하는 데 좋은 HTML 템플릿 라이브러리입니다. 또한 SVG에 필요한 XML 네임 스페이스를 지원하지 않는다고 생각합니다. – Hendekagon
아, 알겠습니다. 제 사과 - ClojureScript 랜드에 대한 'Enfocus'를 살펴보십시오. 클라이언트와 서버 모두에서 svg를 생성 할 것입니다. – humasect
- 1. SVG?
- 2. svg 경로를 svg 폴리 라인으로
- 3. SVG 대안?
- 4. 셀렌과 SVG
- 5. 는 SVG
- 6. SVG 대체
- 7. Keith Wood 's의 jQuery SVG 플러그인으로 외부로드 SVG 애니메이션하기
- 8. jQuery SVG plugin : 미리 정의 된 SVG 이미지를 표시하는 방법
- 9. SVG 그래픽이 포함 된 svg 요소 외부로 넘치도록 허용
- 10. 웹 링크 in svg
- 11. XUL에 SVG 삽입하기
- 12. SVG 절대 좌표?
- 13. Google지도의 SVG 아이콘 V3
- 14. j2Me에서 SVG 사용하기
- 15. SVG 디코딩 - 휴대용 솔루션
- 16. grapha svg import size
- 17. XSLFO를 사용하여 SVG 표시
- 18. foreignobject in svg
- 19. 크롬에서 SVG 지원
- 20. 플렉스에 SVG 표시하기
- 21. SVG 경로 계산
- 22. Python을 사용하여 SVG 만들기
- 23. SVG Parser in Javascript
- 24. 브라우저에서 SVG 인쇄
- 25. SVG feBlend in Pattern?
- 26. Android에서 SVG 스케일링?
- 27. pylons 또는 turbogears의 SVG?
- 28. 그린 SVG 라인?
- 29. Firefox에서 SVG 렌더링이 잘못되었습니다.
- 30. Gnuplot의 SVG 출력을 최적화하십시오.
[element-ns] (https://gist.github.com/1274699) – Hendekagon
'element-arg?''normalize-args','set-text' 및'append'는 어디에 정의되어 있습니까? – noisesmith