使用純 CSS 創(chuàng)作一個脈動 loader效果的源碼
效果預(yù)覽

按下右側(cè)的“點擊預(yù)覽”按鈕可以在當(dāng)前頁面預(yù)覽,點擊鏈接可以全屏預(yù)覽。
https://codepen.io/comehope/pen/wYvGwr

可交互視頻
此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。
請用 chrome, safari, edge 打開觀看。
https://scrimba.com/p/pEgDAM/cnMgQTr
源代碼下載
每日前端實戰(zhàn)系列的全部源代碼請從 github 下載:
https://github.com/comehope/front-end-daily-challenges
代碼解讀
定義 dom,容器中包含 10 個子元素:
<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è)置容器的樣式,是粉色背景并描邊的一個圓:
.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;
}
增加子元素的動畫效果:
.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),讓子元素依次播放動畫:
.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; }
增加容器動畫,加強脈動的效果:
.loader {
animation: loader-animate 1.5s infinite ease-in-out;
}
@keyframes loader-animate {
45%, 55% {
transform: scale(1.05);
}
}
總結(jié)
以上所述是小編給大家介紹的使用純 CSS 創(chuàng)作一個脈動 loader效果的源碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
css-loader是一款簡單實用的純css3 loader加載指示器特效。雖然使用gif圖片可以很好的完成loader指示效果,但是使用css3來制作loader指示器,可以避免使用圖片,也更容易定2017-02-22
純CSS3實現(xiàn)的29款超全頁面加載loading動畫庫Loaders.css特效源碼
是一段實現(xiàn)了29款常用且有意思的頁面加載loading動畫庫效果的Loaders.css代碼,本段loading加載動畫代碼適應(yīng)于所有網(wǎng)頁使用,有興趣的朋友們可以前來下載使用2016-05-12使用Loader.css和css-spinners來制作加載動畫的方法
這篇文章主要介紹了使用Loader.css和css-spinners來制作加載動畫的方法,基本上使用純CSS就可以實現(xiàn),簡單高效,需要的朋友可以參考下2016-04-05CSS3制作ajax loader icon實現(xiàn)思路及代碼
用到了兩個CSS3屬性transform、animation,實現(xiàn)原理為:transform控制每個小方塊在Y軸的偏移,rotate控制旋轉(zhuǎn)的角度,scale縮放至原大小的一半,具體祥看下文,希望對大家2013-08-25



