Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
用戶正在瀏覽網(wǎng)站網(wǎng)頁(yè)時(shí),為了更好的用戶體驗(yàn),經(jīng)常會(huì)使用 加載中 文字或者動(dòng)畫(huà)來(lái)表示正在 加載數(shù)據(jù) 或 執(zhí)行某項(xiàng)操作。而使用動(dòng)畫(huà)不僅能夠吸引用戶的注意力,同時(shí)也能夠傳達(dá)信息"系統(tǒng)正在工作中",需要一些時(shí)間來(lái)完成任務(wù)。本文將詳細(xì)介紹如何通過(guò) CSS 創(chuàng)建一個(gè) 加載中 動(dòng)畫(huà)效果。
首先是HTML代碼,定義了一個(gè)類(lèi)名container的<div>容器:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Animation</title>
<link rel="stylesheet" href="./index.css">
</head>
<body>
<div class="container">
<div class="loader" style="--r: 1">
<span style="--i: 1"></span>
<span style="--i: 2"></span>
<span style="--i: 3"></span>
<span style="--i: 4"></span>
<span style="--i: 5"></span>
<span style="--i: 6"></span>
<span style="--i: 7"></span>
<span style="--i: 8"></span>
<span style="--i: 9"></span>
<span style="--i: 10"></span>
<span style="--i: 11"></span>
<span style="--i: 12"></span>
<span style="--i: 13"></span>
<span style="--i: 14"></span>
<span style="--i: 15"></span>
<span style="--i: 16"></span>
<span style="--i: 17"></span>
<span style="--i: 18"></span>
<span style="--i: 19"></span>
<span style="--i: 20"></span>
</div>
<div class="loader" style="--r: 2">
<span style="--i: 1"></span>
<span style="--i: 2"></span>
<span style="--i: 3"></span>
<span style="--i: 4"></span>
<span style="--i: 5"></span>
<span style="--i: 6"></span>
<span style="--i: 7"></span>
<span style="--i: 8"></span>
<span style="--i: 9"></span>
<span style="--i: 10"></span>
<span style="--i: 11"></span>
<span style="--i: 12"></span>
<span style="--i: 13"></span>
<span style="--i: 14"></span>
<span style="--i: 15"></span>
<span style="--i: 16"></span>
<span style="--i: 17"></span>
<span style="--i: 18"></span>
<span style="--i: 19"></span>
<span style="--i: 20"></span>
</div>
<div class="loader" style="--r: 3">
<span style="--i: 1"></span>
<span style="--i: 2"></span>
<span style="--i: 3"></span>
<span style="--i: 4"></span>
<span style="--i: 5"></span>
<span style="--i: 6"></span>
<span style="--i: 7"></span>
<span style="--i: 8"></span>
<span style="--i: 9"></span>
<span style="--i: 10"></span>
<span style="--i: 11"></span>
<span style="--i: 12"></span>
<span style="--i: 13"></span>
<span style="--i: 14"></span>
<span style="--i: 15"></span>
<span style="--i: 16"></span>
<span style="--i: 17"></span>
<span style="--i: 18"></span>
<span style="--i: 19"></span>
<span style="--i: 20"></span>
</div>
<div class="loader" style="--r: 4">
<span style="--i: 1"></span>
<span style="--i: 2"></span>
<span style="--i: 3"></span>
<span style="--i: 4"></span>
<span style="--i: 5"></span>
<span style="--i: 6"></span>
<span style="--i: 7"></span>
<span style="--i: 8"></span>
<span style="--i: 9"></span>
<span style="--i: 10"></span>
<span style="--i: 11"></span>
<span style="--i: 12"></span>
<span style="--i: 13"></span>
<span style="--i: 14"></span>
<span style="--i: 15"></span>
<span style="--i: 16"></span>
<span style="--i: 17"></span>
<span style="--i: 18"></span>
<span style="--i: 19"></span>
<span style="--i: 20"></span>
</div>
</div>
</body>
</html>
接下來(lái)看CSS代碼,重置全局樣式后,給.container元素定義了水平垂直居中布局,然后使用filter樣式屬性來(lái)應(yīng)用色相旋轉(zhuǎn)(hue-rotate)濾鏡,將背景色調(diào)整為90度的色相。因此,子元素的任何顏色同樣會(huì)添加濾鏡。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container {
min-height: 100vh;
background-color: #042104;
filter: hue-rotate(90deg);
display: flex;
justify-content: center;
align-items: center;
}
.loader {
position: relative;
transform: rotate(calc(var(--r) * 45deg));
}
.loader span {
position: absolute;
top: 0;
left: -200px;
width: 200px;
height: 2px;
transform-origin: right;
transform: rotate(calc(var(--i) * 18deg));
}
.loader span::before {
content: "";
display: block;
width: 15px;
height: 15px;
background-color: #00ff0a;
border-radius: 15px;
box-shadow: 0 0 10px #00ff0a,
0 0 20px #00ff0a,
0 0 40px #00ff0a,
0 0 60px #00ff0a,
0 0 80px #00ff0a, 0 0 100px #00ff0a;
animation: animate 5s linear infinite;
animation-delay: calc(-0.5s * var(--i));
}
@keyframes animate {
0% {
transform: translateX(200px) scale(1);
opacity: 0;
}
10% {
opacity: 1;
}
80% {
opacity: 1;
}
100% {
transform: translateX(0) scale(0);
opacity: 1;
}
}
@media screen and (max-width: 576px) {
.container .loader {
scale: .6;
}
}
此外,通過(guò)animation屬性和@keyframes規(guī)則,定義了名為animate的關(guān)鍵幀動(dòng)畫(huà)。該動(dòng)畫(huà)在5秒內(nèi)線性地進(jìn)行,無(wú)限循環(huán)播放。動(dòng)畫(huà)的每個(gè)關(guān)鍵幀設(shè)置了不同的變換效果,包括 平移、縮放和透明度 變化。根據(jù)時(shí)間的進(jìn)展,加載器的形狀和位置會(huì)發(fā)生變化,從而創(chuàng)造出動(dòng)態(tài)的效果。
關(guān)于減少長(zhǎng)時(shí)間等待的焦慮感,相關(guān) 加載中 動(dòng)畫(huà)效果的文章。
通過(guò)本篇文章的詳細(xì)介紹,相信能夠幫助你更好地使用CSS來(lái)創(chuàng)建一個(gè)loading加載中動(dòng)畫(huà),從而理解掌握和應(yīng)用這個(gè)效果。你可以根據(jù)自己的需求調(diào)整大小、顏色和持續(xù)時(shí)間等參數(shù),創(chuàng)建符合你網(wǎng)頁(yè)風(fēng)格的加載中動(dòng)畫(huà)。加載中動(dòng)畫(huà)不僅能夠提供視覺(jué)上的反饋,告訴用戶系統(tǒng)正在工作中,還能夠改善用戶體驗(yàn),減少長(zhǎng)時(shí)間等待的焦慮感。
作者:掘一
鏈接:https://juejin.cn/post/7296404570949173298
CSS3引入了強(qiáng)大的動(dòng)畫(huà)功能,使得開(kāi)發(fā)者能夠在不依賴(lài)JavaScript的情況下創(chuàng)建豐富的視覺(jué)動(dòng)效。本文將深入探討CSS3動(dòng)畫(huà)的核心概念、主要特性以及如何通過(guò)關(guān)鍵幀動(dòng)畫(huà)和過(guò)渡效果實(shí)現(xiàn)各類(lèi)動(dòng)畫(huà)效果。
1.1 過(guò)渡(Transition)
過(guò)渡是CSS3中最為基礎(chǔ)的動(dòng)畫(huà)形式之一,它定義了一個(gè)元素在兩種狀態(tài)之間變化時(shí)的速度曲線和時(shí)間間隔。
/* 基本語(yǔ)法 */
.element {
transition: property duration timing-function delay;
}
/* 示例 */
.button {
background-color: red;
transition: background-color 0.5s ease-in-out;
}
在這個(gè)例子中,當(dāng).button的background-color屬性發(fā)生變化時(shí),將會(huì)在0.5秒內(nèi)平滑過(guò)渡。
關(guān)鍵幀動(dòng)畫(huà)允許我們自定義更復(fù)雜的動(dòng)畫(huà)序列,包括多個(gè)中間狀態(tài)。
/* 定義關(guān)鍵幀動(dòng)畫(huà) */
@keyframes fadeInOut {
0% { opacity: 0; }
50% { opacity: 1; }
100% { opacity: 0; }
}
/* 應(yīng)用動(dòng)畫(huà) */
.element {
animation: fadeInOut 2s infinite;
}
上述代碼定義了一個(gè)名為fadeInOut的關(guān)鍵幀動(dòng)畫(huà),該動(dòng)畫(huà)讓元素從透明度0漸變至1再回到0,整個(gè)動(dòng)畫(huà)循環(huán)持續(xù)2秒,并且無(wú)限重復(fù)。
示例1 - 圖片淡入淡出滾動(dòng)效果
.image-slide {
opacity: 0;
transition: opacity 0.5s;
will-change: opacity;
/* 當(dāng)圖片進(jìn)入可視區(qū)域時(shí)觸發(fā)動(dòng)畫(huà) */
&.is-visible {
opacity: 1;
}
}
示例2 - 旋轉(zhuǎn)動(dòng)畫(huà)
.rotate {
animation: rotate 2s linear infinite;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
總結(jié)起來(lái),CSS3動(dòng)畫(huà)功能強(qiáng)大且靈活,通過(guò)過(guò)渡和關(guān)鍵幀動(dòng)畫(huà),我們可以輕松構(gòu)建豐富多樣的網(wǎng)頁(yè)動(dòng)態(tài)效果,提升用戶體驗(yàn)并增強(qiáng)交互性。隨著對(duì)CSS3動(dòng)畫(huà)特性的深入理解和掌握,開(kāi)發(fā)者能夠更加自如地運(yùn)用這些技術(shù)來(lái)創(chuàng)作富有創(chuàng)意和吸引力的Web界面。
1.什么是CSS?
2.為什么使用CSS?
3.CSS作用
動(dòng)畫(huà)的原理
定義
概念
瀏覽器渲染過(guò)程步驟
三棵樹(shù)
如何更新樣式
一般JS來(lái)更新樣式
三種更新方式
1.JS/CSS》樣式》布局》繪制》合成
全走
比如:div.remove()會(huì)觸發(fā)當(dāng)前消失,其它元素relayout。
2.JS/CSS》樣式》繪制》合成
跳過(guò)Layout
比如:改變背景色,直接repaint+composite。
3.JS/CSS》樣式》合成
跳過(guò)Layout和Paint
比如:改變transform,直接composite。
CSS動(dòng)畫(huà)優(yōu)化
一. transform
四個(gè)常用功能
經(jīng)驗(yàn):
transform: translate
經(jīng)驗(yàn):
#demo{
left:50%;
top:50%;
transform:translate(-50%,-50%);
}
transform: scale
經(jīng)驗(yàn):
transform: rotate
經(jīng)驗(yàn):
transform: skew
經(jīng)驗(yàn):
transform 可以組合使用
transition 過(guò)渡
作用
語(yǔ)法
并不是所有的屬性都能過(guò)度
二. animation
縮寫(xiě)語(yǔ)法
使用animation
如何讓動(dòng)畫(huà)停在最后一幀
@keyframes 完整語(yǔ)法
本文為作者本人的原創(chuàng)文章,著作權(quán)歸作者本人和饑人谷所有,轉(zhuǎn)載務(wù)必注明來(lái)源。
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。