按下右側的「點擊預覽」按鈕能夠在當前頁面預覽,點擊連接能夠全屏預覽。css
https://codepen.io/comehope/pen/QxbmxJhtml
此視頻是能夠交互的,你能夠隨時暫停視頻,編輯視頻中的代碼。前端
請用 chrome, safari, edge 打開觀看。git
https://scrimba.com/p/pEgDAM/cepNzTWgithub
每日前端實戰系列的所有源代碼請從 github 下載:chrome
https://github.com/comehope/front-end-daily-challengesdom
定義 dom,容器中包含 9 個 <span>:佈局
<div class="heart"> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> </div>
居中顯示:flex
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background: radial-gradient(circle at center, navy, black); }
定義容器尺寸:動畫
.heart { width: 14em; height: 11em; }
佈局容器中的豎條紋:
.heart { display: flex; justify-content: space-between; } .heart span { width: 1em; background-color: lightblue; border-radius: 0.5em; }
爲豎條紋配色,條紋的樣式是左右對稱的:
.heart span { background-color: var(--c); } .heart span:nth-child(1), .heart span:nth-child(9) { --c: orangered; } .heart span:nth-child(2), .heart span:nth-child(8) { --c: gold; } .heart span:nth-child(3), .heart span:nth-child(7) { --c: limegreen; } .heart span:nth-child(4), .heart span:nth-child(6) { --c: dodgerblue; } .heart span:nth-child(5) { --c: mediumpurple; }
爲豎條紋設置高度,組成心形圖案:
.heart span { height: var(--h); position: relative; top: var(--t); } .heart span:nth-child(1), .heart span:nth-child(9) { --h: 3em; --t: 2.2em; } .heart span:nth-child(2), .heart span:nth-child(8) { --h: 6em; --t: 0.6em; } .heart span:nth-child(3), .heart span:nth-child(7) { --h: 8em; --t: 0; } .heart span:nth-child(4), .heart span:nth-child(6) { --h: 9em; --t: 0.8em; } .heart span:nth-child(5) { --h: 9.4em; --t: 1.6em; }
設置位移動畫效果:
.heart span { animation: beating 5s infinite; } @keyframes beating{ 0%, 30% { top: var(--t); height: var(--h); } 60%, 70% { top: 25%; height: 50%; } }
最後,爲動畫過程當中的條紋設置去色、模糊和變窄效果,增強與彩色條紋的差別對比:
@keyframes beating{ 0%, 30% { background-color: var(--c); filter: blur(0); width: 1em; } 60%, 70% { background-color: lightblue; filter: blur(5px); width: 0.1em; } }
大功告成!