如何用純 CSS 創作一個搖搖晃晃的 loader
效果預覽
線上演示按下右側的“點選預覽”按鈕可以在當前頁面預覽,點選連結可以全屏預覽。
https://codepen.io/comehope/pen/oyJvpe
可互動視訊
此視訊是可以互動的,你可以隨時暫停視訊,編輯視訊中的程式碼。
請用 chrome, safari, edge 開啟觀看。
https://scrimba.com/p/pEgDAM/cqwpQh7
原始碼下載
本地下載每日前端實戰系列的全部原始碼請從 github 下載:
https://github.com/comehope/front-end-daily-challenges
程式碼解讀
定義 dom,容器中包含一個子元素,子元素內是文字:
<div class="loader">
<span>Loading...</span>
</div>
居中顯示:
body {
margin: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-color: black;
}
定義容器尺寸:
.loader {
width: 10em;
height: 10em;
font-size: 30px;
box-sizing: border-box;
}
設定文字樣式:
.loader span {
position: absolute;
color: white;
width: inherit;
height: inherit;
text-align: center;
line-height: 10em;
font-family: sans-serif;
}
畫出組成圓的頂部弧線:
.loader {
border-top: 0.3em solid hotpink;
border-radius: 50%;
}
用偽元素畫出組成圓的另外 2 條弧線:
.loader {
position: relative;
}
.loader::before,
.loader::after {
content: '';
position: absolute;
width: inherit;
height: inherit;
border-radius: 50%;
box-sizing: border-box;
top: -0.2em;
}
.loader::before {
border-top: 0.3em solid dodgerblue;
transform: rotate(120deg);
}
.loader::after {
border-top: 0.3em solid gold;
transform: rotate(240deg);
}
定義動畫效果:
@keyframes rotating {
50% {
transform: rotate(calc(180deg * var(--direction)));
}
100% {
transform: rotate(calc(360deg * var(--direction)));
}
}
把動畫效果應用到圓上:
.loader {
animation: rotating 2s ease-in-out infinite;
--direction: 1;
}
把動畫效果應用到文字上:
.loader span {
animation: rotating 2s linear infinite;
--direction: -1;
}
最後,隱藏可能超出視窗的內容:
body {
overflow: hidden;
}
大功告成!
原文地址:https://segmentfault.com/a/1190000015424389相關文章
- 微信搖一搖的一個有趣應用
- iOS-OC-仿微信搖一搖iOS
- iOS微信朋友圈與搖一搖iOS
- Android搖一搖、螢幕方向的監聽Android
- swift實現仿知乎搖一搖彈出框Swift
- 實現微信搖一搖功能簡單介紹
- 微信IOS中搖一搖無法播放聲音iOS
- iOS通過加速計計算搖一搖次數iOS
- Android利用感測器實現-仿微信搖一搖Android
- Flutter 實現微信搖一搖的功能 Flutter 加速度感應Flutter
- 搖桿程式
- 不會吧,這也行?iOS後臺鎖屏監聽搖一搖iOS
- HTML5 語音聊天 IM|仿微信語音介面|搖一搖效果HTML
- anroid Api demo自帶的一個shake(搖頭)效果API
- Java地位無可動搖的12個原因Java
- 前端每日實戰:103# 影片演示如何用純 CSS 創作一隻監視眼前端CSS
- html5版聊天室|仿微信語音|搖一搖|地圖定位HTML地圖
- 和 transformjs 一起搖擺ORMJS
- 和transformjs一起搖擺ORMJS
- webpack 搖樹處理Web
- 前端每日實戰:158# 視訊演示如何用純 CSS 創作一個雨傘 toggle 控制元件前端CSS控制元件
- 價格離譜的配件,與蘋果搖搖欲墜的奢侈品人設蘋果
- IT的消費化:尾巴搖狗
- 盤點叫車App市場:嘀嘀、搖搖、易叫車列前三APP
- 如何用CSS製作一個圓形放大鏡CSS
- 天體搖擺儀的工作原理
- 2-59. 製作可砍伐的樹木搖晃和倒下動畫動畫
- 【canvas】搖桿操控飛船的動畫原理Canvas動畫
- 如何用CSS3製作一個漂亮的登入框CSSS3
- Unity——EasyTouch搖桿外掛使用Unity
- Android joystick,安卓模擬搖桿Android安卓
- R星:我的成功,源自我的搖滾核心
- 堅持“動態清零”不動搖
- 如何用 css 畫一個心形CSS
- 趣玩Python——利用python搖身一變社會人Python
- Android搖晃重新整理實用教程Android
- 為什麼內推成了遊戲人的搖錢樹?遊戲
- Angular 應用裡的搖樹優化 - tree shakingAngular優化