按下右側的「點擊預覽」按鈕在當前頁面預覽,點擊連接全屏預覽。css
https://codepen.io/zhang-ou/pen/qYqwQphtml
此視頻是能夠交互的,你能夠隨時暫停視頻,編輯視頻中的代碼。git
請用 chrome, safari, edge 打開觀看。github
https://scrimba.com/c/cp24VfVchrome
請從 github 下載。dom
https://github.com/comehope/front-end-daily-challenges/tree/master/006-blue-dazzling-diamondflex
定義 dom,容器中包含一個元素:動畫
<div class="diamond"> <span></span> </div>
居中顯示:spa
html, body { height: 100%; display: flex; align-items: center; justify-content: center; }
畫出第一組刻面的形狀:code
.diamond { display: grid; } .diamond span { border-width: 50px; border-style: solid; }
爲第一組刻面上色,由於後面還要用到這些色值,因此定義了變量:
:root { --color1: deepskyblue; --color2: steelblue; --color3: royalblue; --color4: dodgerblue; } .diamond span { border-color: var(--color1) var(--color2) var(--color3) var(--color4); }
dom容器 中再增長3組刻面:
<div class="diamond"> <span></span> <span></span> <span></span> <span></span> </div>
把4組刻面先組成田字格,再轉換成鑽石形狀:
.diamond { grid-template-columns: 1fr 1fr; transform: rotate(45deg); } .diamond span:first-child { border-color: transparent var(--color2) var(--color3) transparent; }
定義動畫效果:
@keyframes animate { 0% { border-color: var(--color1) var(--color2) var(--color3) var(--color4); } 25% { border-color: var(--color4) var(--color1) var(--color2) var(--color3); } 50% { border-color: var(--color3) var(--color4) var(--color1) var(--color2); } 75% { border-color: var(--color2) var(--color3) var(--color4) var(--color1); } 100% { border-color: var(--color1) var(--color2) var(--color3) var(--color4); } }
最後,把動畫效果應用到除第1組之外的刻面上:
.diamond span:not(:first-child) { animation: animate 2s linear infinite; }
大功告成!