前言
Hello鞍泉!小伙伴骗村!
非常感謝您閱讀海轟的文章,倘若文中有錯誤的地方,歡迎您指出~
?自我介紹 ?(?ˊ?ˋ)?
昵稱:海轟
標簽:程序猿|C++選手|學生
簡介:因C語言結識編程捐腿,隨后轉(zhuǎn)入計算機專業(yè),有幸拿過國獎柿顶、省獎等茄袖,已保研。目前正在學習C++/Linux(真的真的太難了~)
學習經(jīng)驗:扎實基礎 + 多做筆記 + 多敲代碼 + 多思考 + 學好英語嘁锯!
?<font color="red" font-wight="800">【動畫消消樂】</font> 平時學習生活比較枯燥宪祥,無意之間對一些網(wǎng)頁、應用程序的過渡/加載動畫產(chǎn)生了濃厚的興趣家乘,想知道具體是如何實現(xiàn)的蝗羊? 便在空閑的時候?qū)W習下如何使用css實現(xiàn)一些簡單的動畫效果,文章僅供作為自己的學習筆記仁锯,記錄學習生活耀找,爭取理解動畫的原理,多多“消滅”動畫!
效果展示
Demo代碼
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<section><span></span></section>
</body>
</html>
CSS
html, body {
margin: 0;
height: 100%;
}
body {
display: flex;
justify-content: center;
align-items: center;
background: #ed556a;
/* background-color: #82466e; */
animation: backColor 4s infinite;
}
section {
width: 650px;
height: 300px;
padding: 10px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
border: 2px solid white;
}
span {
width: 48px;
height: 6px;
display: inline-block;
position: relative;
border-radius: 4px;
/* background-color: black; */
top: -35px;
color: white;
animation: loading .6s linear infinite;
}
@keyframes loading {
0% {
box-shadow: -10px 20px, 10px 35px, 0px 50px;
}
25% {
box-shadow: 0px 20px, 0px 35px, 10px 50px;
}
50% {
box-shadow: 10px 20px, -10px 35px, 0px 50px;
}
75% {
box-shadow: 0px 20px, 0px 35px, -10px 50px;
}
100% {
box-shadow: -10px 20px, 10px 35px, 0px 50px;
}
}
原理詳解
步驟1
使用span標簽野芒,設置為
- 相對定位
- 寬度:48px 高度:6px
- border-radius: 4px
- 背景色:黑色
- color:白色(之后陰影是白色的)
span {
width: 48px;
height: 6px;
position: relative;
border-radius: 4px;
background-color: black;
color: white;
}
效果圖如下
步驟2
將span上移35px
span {
top: -35px;
}
效果圖如下
步驟3
使用span的三個陰影 蓄愁,位置關系為
box-shadow: 0px 20px, /*陰影1*/
0px 35px, /*陰影2*/
0px 50px;/*陰影3*/
效果圖如下
步驟4
為span的三個陰影添加動畫
每個陰影動畫過程其實都一致,只是初始位置不同
這里以一個陰影的動畫效果為例狞悲,其余同理可得
陰影1動畫關鍵有5幀
簡單描述為:從左移動到右撮抓,再回到左邊
位置關系上,y軸偏移量一直不變摇锋,x軸方向偏移量變化
變化為 -10 -> 0 -> 10 -> 0 -> -10
代碼為
@keyframes loadingx {
0% {
box-shadow: -10px 20px;
}
25% {
box-shadow: 0px 20px;
}
50% {
box-shadow: 10px 20px;
}
75% {
box-shadow: 0px 20px;
}
100% {
box-shadow: -10px 20px;
}
}
注意這里
效果圖如下
陰影2丹拯、3 同理
只是動畫初始位置不同
陰影2 10 -> 0 -> -10 -> 0 -> 10
陰影3 0 -> -10 -> 0 -> 10 -> 0
@keyframes loading {
0% {
box-shadow: -10px 20px, 10px 35px, 0px 50px;
}
25% {
box-shadow: 0px 20px, 0px 35px, 10px 50px;
}
50% {
box-shadow: 10px 20px, -10px 35px, 0px 50px;
}
75% {
box-shadow: 0px 20px, 0px 35px, -10px 50px;
}
100% {
box-shadow: -10px 20px, 10px 35px, 0px 50px;
}
}
三個陰影動畫效果如下
步驟5
注釋掉span背景色
span {
/* background-color: black; */
}
最終效果圖如下
結語
文章僅作為學習筆記,記錄從0到1的一個過程
希望對您有所幫助荸恕,如有錯誤歡迎小伙伴指正~
我是海轟?(?ˊ?ˋ)?咽笼,如果您覺得寫得可以的話,請點個贊吧
謝謝支持??