📅  最后修改于: 2023-12-03 15:00:06.824000             🧑  作者: Mango
CSS动画是通过CSS属性实现的图形变换或者样式变化,让网页更有动感。通过CSS动画,不需要使用JavaScript或者JQuery等脚本语言就可以实现类似于动画的效果。
CSS动画有很多分类,其中一些比较重要的分类有:
transition
是 CSS 属性集,它用于实现元素属性的渐变变化效果。可以通过 transition 来设置 transition-property、transition-duration、transition-timing-function 和 transition-delay 四个属性来实现。
以下是一个简单的例子:
#box {
background-color: blue;
transition: background-color 1s ease-in-out;
}
#box:hover {
background-color: red;
}
在上面的例子中,当鼠标悬停在 #box
元素上时,元素的背景色会从蓝色渐变到红色,并且这个渐变的过程会持续 1 秒钟。
animation
是 CSS 属性集,它用于实现更复杂的动画效果。animation 属性需要设置多个子属性来实现,其中包括以下属性:
以下是一个简单的例子:
#box {
animation: bounce 1s ease-in-out infinite;
}
@keyframes bounce {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-20px);
}
}
在上面的例子中,一个名为 "bounce" 的动画被应用在了 #box
元素上。这个动画会让元素在执行过程中上下弹跳,并且这个弹跳的过程会持续 1 秒钟,并且这个动画会一直循环下去。
CSS动画是通过CSS属性实现的,因此我们需要先了解各种CSS属性的用法以及他们之间的关系。
transition 属性常常用在mouseover的交互动效中,实现从一种状态到另一种状态的过度。
以下是一个例子:
<div class="box"></div>
.box {
width: 100px;
height: 100px;
background-color: blue;
transition: background-color 0.5s;
}
.box:hover {
background-color: green;
}
在上面的例子中,当鼠标悬停在 div
元素上时,元素的背景色会从蓝色渐变到绿色,并且这个渐变的过程会持续 0.5 秒钟。
animation 属性常常用在动画效果场景下,可以通过JS控制CSS动画的播放状态。
以下是一个例子:
<div class="box"></div>
<button id="btn">开始</button>
.box {
width: 100px;
height: 100px;
background-color: blue;
animation-name: bounce;
animation-duration: 1s;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
@keyframes bounce {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-20px);
}
}
.paused {
animation-play-state: paused;
}
const btn = document.getElementById('btn');
const box = document.querySelector('.box');
btn.addEventListener('click', function () {
if (box.classList.contains('paused')) {
box.classList.remove('paused');
btn.innerText = '开始';
} else {
box.classList.add('paused');
btn.innerText = '暂停';
}
});
在上面的例子中,一个名为 "bounce" 的动画被应用在了 div
元素上。这个动画会让元素在执行过程中上下弹跳,并且这个弹跳的过程会持续 1 秒钟,并且这个动画会一直循环下去。通过按钮的点击事件,可以实现动画的开始和暂停。