早上無心間進入一個網站,看到他們的LOGO效果略屌,如圖: segmentfault
剛開始覺得是gif動畫之類的,審查元素髮現竟然是用SVG + CSS3動畫實現的,頓時激起了個人(hao)欲(qi)望(xin),決定要一探究竟,查看代碼以後,發現原理竟然是如此簡單:多個SVG描邊動畫使用不一樣的animation-delay便可!svg
對於一個形狀SVG元素或文本SVG元素,能夠使用stroke-dasharray來控制描邊的間隔樣式,而且能夠用stroke-dashoffset來控制描邊的偏移量,藉此能夠實現描邊動畫效果,更具體的資料能夠看看張大神的《<a href="http://www.zhangxinxu.com/wordpress/2014/04/animateion-line-drawing-svg-path-%E5%8A%A8%E7%94%BB-%E8%B7%AF%E5%BE%84/" target="_blank">純CSS實現帥氣的SVG路徑描邊動畫效果</a>》wordpress
咱們先實現一個簡單的文字描邊動畫:動畫
<svg width="100%" height="100"> <text text-anchor="middle" x="50%" y="50%" class="text"> segmentfault.com </text> </svg>
.text{ font-size: 64px; font-weight: bold; text-transform: uppercase; fill: none; stroke: #3498db; stroke-width: 2px; stroke-dasharray: 90 310; animation: stroke 6s infinite linear; } @keyframes stroke { 100% { stroke-dashoffset: -400; } }
演示地址:<a href="http://output.jsbin.com/demiculoqe" target="_blank">http://output.jsbin.com/demic...</a>網站
而後咱們同時使用多個描邊動畫,並設置不一樣的animation-delay:code
<svg width="100%" height="100"> <text text-anchor="middle" x="50%" y="50%" class="text text-1"> segmentfault.com </text> <text text-anchor="middle" x="50%" y="50%" class="text text-2"> segmentfault.com </text> <text text-anchor="middle" x="50%" y="50%" class="text text-3"> segmentfault.com </text> <text text-anchor="middle" x="50%" y="50%" class="text text-4"> segmentfault.com </text> </svg>
注意:要使用多少種顏色,就放多少個textorm
.text{ font-size: 64px; font-weight: bold; text-transform: uppercase; fill: none; stroke-width: 2px; stroke-dasharray: 90 310; animation: stroke 6s infinite linear; } .text-1{ stroke: #3498db; text-shadow: 0 0 5px #3498db; animation-delay: -1.5s; } .text-2{ stroke: #f39c12; text-shadow: 0 0 5px #f39c12; animation-delay: -3s; } .text-3{ stroke: #e74c3c; text-shadow: 0 0 5px #e74c3c; animation-delay: -4.5s; } .text-4{ stroke: #9b59b6; text-shadow: 0 0 5px #9b59b6; animation-delay: -6s; } @keyframes stroke { 100% { stroke-dashoffset: -400; } }
大功告成,演示地址:<a href="http://output.jsbin.com/vuyuvojiro" target="_blank">http://output.jsbin.com/vuyuv...</a> 圖片
須要注意的幾個點:get
1.各個元素的animation-delay與animation的總時長的設置要協調 2.stroke-dashoffset與stroke-dasharray的設置要協調animation