使用純 CSS 創(chuàng)作一個(gè)脈動(dòng) loader效果的源碼

效果預(yù)覽
按下右側(cè)的“點(diǎn)擊預(yù)覽”按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。
https://codepen.io/comehope/pen/wYvGwr
可交互視頻
此視頻是可以交互的,你可以隨時(shí)暫停視頻,編輯視頻中的代碼。
請(qǐng)用 chrome, safari, edge 打開觀看。
https://scrimba.com/p/pEgDAM/cnMgQTr
源代碼下載
每日前端實(shí)戰(zhàn)系列的全部源代碼請(qǐng)從 github 下載:
https://github.com/comehope/front-end-daily-challenges
代碼解讀
定義 dom,容器中包含 10 個(gè)子元素:
<div class="loader"> <span></span> <span></span> <span></span> <span></span> <span></span> <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: linear-gradient(#eee 70%, pink); }
設(shè)置容器的樣式,是粉色背景并描邊的一個(gè)圓:
.loader { width: 6em; height: 6em; padding: 3em; font-size: 10px; background-color: pink; border-radius: 50%; border: 0.8em solid hotpink; }
設(shè)置子元素的布局方式為橫向平鋪:
.loader { display: flex; align-items: center; justify-content: space-between; }
設(shè)置子元素的樣式:
.loader > span { width: 0.5em; height: 50%; background-color: deeppink; }
增加子元素的動(dòng)畫效果:
.loader > span { transform: scaleY(0.05) translateX(-0.5em); animation: span-animate 1.5s infinite ease-in-out; } @keyframes span-animate { 0%, 100% { transform: scaleY(0.05) translateX(-0.5em); } 15% { transform: scaleY(1.2) translateX(1em); } 90%, 100% { background-color: hotpink; } }
設(shè)置子元素下標(biāo),讓子元素依次播放動(dòng)畫:
.loader > span { animation-delay: calc(var(--n) * 0.05s); }
.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; } .loader > span:nth-child(6) { --n: 6; } .loader > span:nth-child(7) { --n: 7; } .loader > span:nth-child(8) { --n: 8; } .loader > span:nth-child(9) { --n: 9; } .loader > span:nth-child(10) { --n: 10; }
增加容器動(dòng)畫,加強(qiáng)脈動(dòng)的效果:
.loader { animation: loader-animate 1.5s infinite ease-in-out; } @keyframes loader-animate { 45%, 55% { transform: scale(1.05); } }
總結(jié)
以上所述是小編給大家介紹的使用純 CSS 創(chuàng)作一個(gè)脈動(dòng) loader效果的源碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
- css-loader是一款簡(jiǎn)單實(shí)用的純css3 loader加載指示器特效。雖然使用gif圖片可以很好的完成loader指示效果,但是使用css3來制作loader指示器,可以避免使用圖片,也更容易定2017-02-22
純CSS3實(shí)現(xiàn)的29款超全頁面加載loading動(dòng)畫庫Loaders.css特效源碼
是一段實(shí)現(xiàn)了29款常用且有意思的頁面加載loading動(dòng)畫庫效果的Loaders.css代碼,本段loading加載動(dòng)畫代碼適應(yīng)于所有網(wǎng)頁使用,有興趣的朋友們可以前來下載使用2016-05-12使用Loader.css和css-spinners來制作加載動(dòng)畫的方法
這篇文章主要介紹了使用Loader.css和css-spinners來制作加載動(dòng)畫的方法,基本上使用純CSS就可以實(shí)現(xiàn),簡(jiǎn)單高效,需要的朋友可以參考下2016-04-05CSS3制作ajax loader icon實(shí)現(xiàn)思路及代碼
用到了兩個(gè)CSS3屬性transform、animation,實(shí)現(xiàn)原理為:transform控制每個(gè)小方塊在Y軸的偏移,rotate控制旋轉(zhuǎn)的角度,scale縮放至原大小的一半,具體祥看下文,希望對(duì)大家2013-08-25