-2
A
回答
1
動畫這是一種使用行程dasharray和中風dashoffset SVG屬性的絕招。
基本上你發現使用
var totalLength = path.node().getTotalLength();
然後創建一個虛線那是你的路徑的大小兩倍的線長,它的一半是虛線,其他空。
attr("stroke-dasharray", totalLength + " " + totalLength)
最後,您將爲它製作動畫。從totalLength的大小開始。這是你的虛線的明確部分:
.attr("stroke-dashoffset", totalLength)
末的0動畫,只讓虛線的填充部分所示:
.attr("stroke-dashoffset", 0)
代碼片段:
var _s32 = (Math.sqrt(3)/2);
var A = 55;
var diff = 100;
var pointData = [
[105+diff, 10+diff],
[25+diff, 60+diff],
[25+diff, 150+diff],
[100+diff, 190+diff],
[175+diff,150+diff],
[175+diff,60+diff],
[95+diff, 10+diff]
];
var svgContainer = d3.select("#animation") //create container
.append("svg")
.attr("width", 1000)
.attr("height", 1000);
var line = d3.svg.line()
\t .interpolate('linear')
.x(function(d,i) { return d[0];})
.y(function(d) { return d[1];});
var path = svgContainer.append('path')
\t .attr('d', line(pointData))
.attr('stroke', '#92c8a1')
.attr('stroke-width', '22')
.attr('fill', 'none');
var totalLength = path.node().getTotalLength();
path
.attr("stroke-dasharray", totalLength + " " + totalLength)
.attr("stroke-dashoffset", totalLength)
.transition()
.duration(2000)
.ease("linear")
.attr("stroke-dashoffset", 0);
svgContainer.on("click", function(){
path
.transition()
.duration(2000)
.ease("linear")
.attr("stroke-dashoffset", totalLength);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.10/d3.min.js"></script>
<div id="animation"></div>
+0
非常感謝,你幫了我很大的時間。 @drinck我還有1個問題,如果你可以在這裏查看,你可以看到我是如何編碼的情況,我有什麼和期望的六邊形。 http://i68.tinypic.com/5jy1xe.jpg,http://i68.tinypic.com/5jy1xe.jpg你認爲這可以用d3完成 –
相關問題
- 1. 請幫我這個! [Sorting Arrays]
- 2. 請幫我這個查詢
- 3. 請幫我解決這個
- 4. 請幫我的動畫不工作ios
- 5. 請幫我旋轉動畫在android?
- 6. 請幫我一個三角算法
- 7. 請幫我在這的JavaScript
- 8. 請幫我拿這個返回值
- 9. 請幫我看這個Listview的問題
- 10. 請幫助我在這個MySQL代碼
- 11. 請幫我簡化這個jQuery代碼
- 12. Python函數:請幫我在這一個
- 13. 請幫我理解這個python代碼
- 14. 請幫我這個ajax/javascript/php
- 15. 請幫我理解這個 - Python
- 16. 請幫我使用這個Ruby代碼
- 17. 請幫我解決這個佈局
- 18. Javascript:請幫我理解這個功能
- 19. 幫我優化這個查詢。請
- 20. 請幫我找到這個錯誤
- 21. 請幫我理解這個nios2代碼
- 22. 請幫我修復這個錯誤
- 23. 請幫我理解這個codility測試
- 24. 請幫我調試這個php代碼
- 25. 請幫我這個頁面,IE 7/8
- 26. 請幫我這個序言鍛鍊; Tibial
- 27. 請幫我重構這個jQuery代碼
- 28. 請幫我理解這個PL/SQL
- 29. 請幫我優化這個Linq聲明
- 30. 請幫我出這個異常
請不要改變你的問題,使其無效現有的答案。如果需要,可以問另一個問題。你可以隨時在這個新問題中引用這個問題。 –