有時候可能會看到一些網站有線條會隨著形狀慢慢跑出來的效果,這種效果我們可以使用 SVG 搭配 CSS 的動畫來幫我們達成。
首先先準備一個 SVG 的形狀,我這邊是畫一個六角形。
<svg class="logo" viewBox="0 0 112 112">
<polygon class="hex" points="101.9,82.5 101.9,29.5 56,3 10.1,29.5 10.1,82.5 56,109 "/>
</svg>
接著設定樣式,我讓這個形狀只有線條。
.hex{ stroke:red; stroke-width: 2px; fill: none; }
這時我們應該可以看到這樣的形狀。
接著來認識一個屬性 SVG 特有的 CSS 屬性 stroke-dasharray,當設定完這個屬性,我們可以看到線條就變成虛線了。
.hex{ stroke-dasharray: 20; }
這個 stroke-dasharray 的數字越大,線條就會越長。
接著再來看一個屬性叫作 stroke-dashoffset,這個可以讓線條起始的位置不一樣,如果我們搭配 CSS 的動畫,這樣線條就會動起來了。
@keyframes dash { to { stroke-dashoffset: 1000; } } .hex{ stroke:red; stroke-width: 2px; fill: none; stroke-dasharray: 20; animation: dash 5s linear; }
那如果我們要做線條慢慢跑出來,只要讓他的 stroke-dasharray 的長度比線條長,再設定 stroke-offset,這樣線條就會看不到了。
.hex{ stroke:red; stroke-width: 2px; fill: none; stroke-dasharray: 1000; stroke-dashoffset: 1000; }
最後我們再加上動畫,讓 stroke-dashoffset 變成 0,這樣線條就會長出來了。
@keyframes dash { to { stroke-dashoffset: 0; } } .hex{ stroke:red; stroke-width: 2px; fill: none; stroke-dasharray: 1000; stroke-dashoffset: 1000; animation: dash 5s linear; }