在線演示html
按下右側的「點擊預覽」按鈕能夠在當前頁面預覽,點擊連接能夠全屏預覽。
https://codepen.io/comehope/pen/YvBvBr前端
此視頻是能夠交互的,你能夠隨時暫停視頻,編輯視頻中的代碼。git
請用 chrome, safari, edge 打開觀看。github
https://scrimba.com/p/pEgDAM/cwE7NCmchrome
本地下載
segmentfault
每日前端實戰系列的所有源代碼請從 github 下載:dom
https://github.com/comehope/front-end-daily-challengesoop
定義 dom,只有 1 個元素:flex
<div class="loader"></div>
居中顯示:動畫
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background: radial-gradient(darkgreen 30%, forestgreen); }
定義容器尺寸:
.loader { width: 10em; height: 10em; font-size: 20px; }
用 box-shadow 畫出 2 組點陣:
.loader::before, .loader::after { content: ''; position: absolute; width: 1em; height: 1em; background-color: currentColor; box-shadow: 0 0, 2em 0, 4em 0, 6em 0, 0 2em, 2em 2em, 4em 2em, 6em 2em, 0 4em, 2em 4em, 4em 4em, 6em 4em, 0 6em, 2em 6em, 4em 6em, 6em 6em; border-radius: 50%; } .loader::before { color: gold; } .loader::after { color: dodgerblue; }
定義動畫:
@keyframes round { 0% { transform: translateX(0) translateY(0); } 25% { transform: translateX(3em) translateY(0); } 50% { transform: translateX(3em) translateY(3em); } 75% { transform: translateX(0) translateY(3em); } }
最後,把動畫效果應用到點陣上:
.loader::before, .loader::after { animation: round 2s ease infinite; } .loader::after { animation-delay: -1s; }
大功告成!
原文地址:https://segmentfault.com/a/1190000015444368