如何用純 CSS 創作一個跳 8 字型舞的 loader
阿新 • • 發佈:2018-11-29
效果預覽
按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。
https://codepen.io/comehope/pen/gKNMMm
可互動視訊
此視訊是可以互動的,你可以隨時暫停視訊,編輯視訊中的程式碼。
請用 chrome, safari, edge 開啟觀看。
https://scrimba.com/p/pEgDAM/cd339Ur
原始碼下載
每日前端實戰系列的全部原始碼請從 github 下載:
https://github.com/comehope/front-end-daily-challenges
程式碼解讀
定義 dom,容器中包含 5 個元素:
<div class="loader">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
居中顯示:
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background-color: goldenrod; }
定義容器尺寸:
.loader {
width: 8em;
height: 8em;
font-size: 30px;
}
畫出圓點:
.loader span {
position: absolute;
top: 4em;
width: 1em;
height: 1em;
background-color: #222;
border-radius: 50%;
}
定義動畫效果:
.loader span { transform-origin: 4em top; animation: dance 1s linear infinite; } @keyframes dance { to { transform: rotateX(360deg) rotateZ(360deg); } }
最後,為各圓點增加動畫延時:
.loader span {
animation-delay: calc((var(--n) - 5) * 0.1s);
}
.loader span:nth-child(1) {
--n: 1;
}
.loader span:nth-child(2) {
--n: 2;
}
.loader span:nth-child(3) {
--n: 3;
}
.loader span:nth-child(4) {
--n: 4;
}
.loader span:nth-child(5) {
--n: 5;
}
大功告成!
原文地址:https://segmentfault.com/a/1190000015534639