css动画实例 css动画效果网站
这篇文章给大家聊聊关于css动画实例,以及css动画效果网站对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
css如何实现无限轮播图动画(代码示例)
本篇文章给大家带来的内容是如何实现自动无限播放的轮播图动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
在之前的文章【css如何实现图片的旋转展示效果】中介绍了手动无限轮播图的制作,本篇我们来看看自动无限轮播图动画的制作。下面我们就来看看动画效果是如何实现的。
1、设置动画的舞台
HTML与之前文章里的示例非常相似。我们要有一个动画发生的舞台(#stage),一个将会旋转的div容器和一系列图像:
<div id="stage">
<div id="rotator" style="-webkit-animation-name: rotator;">
<a rel="external nofollow" href="1.jpg"><img src="1.jpg" width="140"></a>
<a rel="external nofollow" href="2.jpg"><img src="2.jpg" width="140"></a>
<a rel="external nofollow" href="3.jpg"><img src="3.jpg" width="140"></a>
<a rel="external nofollow" href="4.jpg"><img src="4.jpg" width="140"></a>
<a rel="external nofollow" href="5.jpg"><img src="5.jpg" width="140"></a>
<a rel="external nofollow" href="6.jpg"><img src="6.jpg" width="140"></a>
<a rel="external nofollow" href="7.jpg"><img src="7.jpg" width="140"></a>
<a rel="external nofollow" href="8.jpg"><img src="8.jpg" width="140"></a>
</div>
</div>内联样式属性引用下面的动画@keyframes。它需要内联而不是CSS,以便我们能够使用JavaScript停止和重新启动动画。
2、在3D空间中布置照片
CSS样式用于定位多张照片,首先围绕y轴旋转它们(垂直向上翻页),然后径向向外平移:
#stage{
margin: 2em auto 1em 50%;
height: 140px;
-webkit-perspective: 1200px;
-webkit-perspective-origin: 0 50%;
}
#rotator a{
position: absolute;
left:-81px;
}
#rotator a img{
padding: 10px;
border: 1px solid#ccc;
background:#fff;
-webkit-backface-visibility: hidden;
}
#rotator a:nth-of-type(1) img{
-webkit-transform: rotateY(-90deg) translateZ(300px);
}
#rotator a:nth-of-type(2) img{
-webkit-transform: rotateY(-60deg) translateZ(300px);
}
#rotator a:nth-of-type(3) img{
-webkit-transform: rotateY(-30deg) translateZ(300px);
}
#rotator a:nth-of-type(4) img{
-webkit-transform: translateZ(300px);
background:#000;
}
#rotator a:nth-of-type(5) img{
-webkit-transform: rotateY(30deg) translateZ(300px);
}
#rotator a:nth-of-type(6) img{
-webkit-transform: rotateY(60deg) translateZ(300px);
}
#rotator a:nth-of-type(n+7){ display: none;}照片设置-81px的值代表向左移动,使前向照片在旋转轴上居中。距离是图像宽度的一半(140px/ 2)加上LHS图像填充(10px)和边框(1px)。
该阶段需要设置立体的动画,舞台从页面的中心开始,因此旋转元素下的锚元素需要向后移动以使动画居中。
我们只开始准备六张照片,左边三张,中间一张,右边两张。最左侧的照片(位置1)从左侧开始,因此仅在第一次旋转后才可见。
当照片旋转时,它会消失(显示:无),并且新照片会附加到左侧,准备从位置1旋转。在7和更高的位置可以有任意数量的照片。只有当它们移动到可见位置时,它们才会出现。
甚至可以在动画进行时使用Ajax加载新照片。
3、添加动画效果
正如我们之前尝试的那样,不是将照片轮旋转整整360度,而是我们实际做的只是旋转30度(足以从一张照片到下一张照片):
@-webkit-keyframes rotator{
from{-webkit-transform: rotateY(0deg);}
to{-webkit-transform: rotateY(30deg);}
}
#rotator{
-webkit-transform-origin: 0 0;
-webkit-transform-style: preserve-3d;
-webkit-animation-timing-function: cubic-bezier(1, 0.2, 0.2, 1);
-webkit-animation-duration: 1s;
-webkit-animation-delay: 1s;
}
#rotator:hover{
-webkit-animation-play-state: paused;
}要使关键帧在其他浏览器中工作,请复制所有样式,替换-webkit- with-moz-和-ms-,如下面的示例代码块所示。
动画完成后,它会触发一个JavaScript事件,您可以在下一节中阅读该事件。事件处理程序沿着照片移动,以便在动画重置时,而不是回到初始状态,照片都围绕圆圈移动了一步。
为了更清楚地了解正在发生的事情,中心照片已在下面的演示中突出显示。在动画发生时,您将看到突出显示的节点旋转,然后重置回起始位置,但包含不同的照片。
4、 JavaScript添加动画控制器
我们在此示例中需要JavaScript来检测动画何时结束,以便协调通过车轮重置移动的照片。没有这个,轮子只会在前两张照片之间交替出现。
document.addEventListener("DOMContentLoaded", function(){
var rotateComplete= function(){
target.style.webkitAnimationName="";
target.insertBefore(arr[arr.length-1], arr[0]);
setTimeout(function(el){
el.style.webkitAnimationName="rotator";
}, 0, target);
};
var target= document.getElementById("rotator");
var arr= target.getElementsByTagName("a");
target.addEventListener("webkitAnimationEnd", rotateComplete, false);
}, false);对于每个WebKit样式和其他引用,存在Firefox(-moz-或Moz),Opera(-o-或O),甚至Internet Explorer(-ms-或ms)的替代品-我们必须忍受的混乱直到标准最终确定。
要在Safari,Chrome,Firefox,Opera和Internet Explorer 10中使用此功能,我们需要包含以下额外的设置:
var rotateComplete= function(){
with(target.style){
webkitAnimationName= MozAnimationName= msAnimationName="";
}
target.insertBefore(arr[arr.length-1], arr[0]);
setTimeout(function(el){
with(el.style){
webkitAnimationName= MozAnimationName= msAnimationName="rotator";
}
}, 0, target);
};
var target= document.getElementById("rotator");
var arr= target.getElementsByTagName("a");
target.addEventListener("webkitAnimationEnd", rotateComplete, false);
target.addEventListener("animationend", rotateComplete, false);
target.addEventListener("MSAnimationEnd", rotateComplete, false);目前尚不清楚为何需要setTimeout。我们不需要它来设置延迟,因为使用CSS完成,但没有setTimeout(甚至0ms)动画无法重新触发。
5、效果展示
这只是横向的轮播,在之后的文章【css实现三面立体旋转无限轮播图动画】里会在本篇文章的基础上改进轮播方式,制作不一样的的轮播图动画。
如何通过css实现按钮点击动画过渡
通过CSS实现按钮点击动画过渡的核心方法是利用:active伪类与transition属性,结合位移、缩放、颜色和阴影变化模拟按压效果。以下是具体实现方案及代码示例:
1.基础按压效果(位移+阴影)通过transform: translateY()和box-shadow变化模拟物理按压感:
.button{ padding: 12px 24px; background-color:#007bff; color: white; border: none; border-radius: 6px; cursor: pointer; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transform: translateY(0); transition: all 0.1s ease;}.button:active{ transform: translateY(2px);/*按钮下移2px*/ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);/*阴影减弱*/}效果:点击时按钮轻微下移,阴影变短变淡,释放后平滑恢复。
2.缩放式点击反馈使用transform: scale()实现按钮缩小,增强交互感:
.button-scale{ padding: 12px 24px; background-color:#28a745; color: white; border: none; border-radius: 6px; cursor: pointer; transform: scale(1); transition: transform 0.1s ease;}.button-scale:active{ transform: scale(0.95);/*按钮缩小5%*/}适用场景:图标按钮或卡片式操作元素,需避免缩放过度影响布局。
3.颜色渐变过渡通过背景色和边框色变化传递按下信号:
.button-color{ padding: 12px 24px; background-color:#ff6b6b; color: white; border: 2px solid#ff6b6b; border-radius: 6px; cursor: pointer; transition: all 0.15s ease;}.button-color:active{ background-color:#d63031;/*背景色变深*/ border-color:#d63031;/*边框色同步变化*/}关键点:颜色变化需配合transition避免突兀切换。
4.综合动画(位移+缩放+阴影+颜色)结合多种属性与缓动曲线打造自然反馈:
.button-combo{ padding: 12px 24px; background-color:#74b9ff; color: white; border: none; border-radius: 8px; cursor: pointer; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); transform: translateY(0); transition: all 0.1s cubic-bezier(0.4, 0, 0.2, 1);/*自定义缓动曲线*/}.button-combo:active{ transform: translateY(3px) scale(0.98);/*同时下移和缩小*/ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);/*阴影减弱*/ background-color:#0984e3;/*背景色变深*/}优化点:使用cubic-bezier()控制动画节奏,使过渡更流畅。
关键原则属性选择:优先使用transform(位移/缩放)和opacity,避免触发重排的属性(如width/margin)。时间控制:动画时长建议0.1s~0.3s,过短会显得突兀,过长会拖沓。缓动曲线:默认ease适合简单效果,复杂动画可用cubic-bezier()自定义。细节平衡:避免同时应用过多变化(如位移+缩放+旋转),防止视觉混乱。扩展建议硬件加速:对性能要求高的场景,可添加will-change: transform优化。状态扩展:结合:hover和:focus实现多状态交互。无障碍:确保动画不影响可访问性(如避免频繁闪烁)。通过合理组合这些技术,可以创建出专业且符合用户预期的点击反馈效果。
css动画用什么规则
想要创建CSS3动画就需要使用到@keyframes规则和animation属性;其中@keyframes规则是创建动画,它指定一个CSS样式和动画将逐步从目前的样式更改为新的样式。
CSS3动画是什么?
动画是使元素从一种样式逐渐变化为另一种样式的效果。使用@keyframes规则,你可以创建动画。
当在@keyframes创建动画,把它绑定到一个选择器,否则动画不会有任何效果。
指定至少这两个CSS3的动画属性绑定向一个选择器:
●规定动画的名称
●规定动画的时长
浏览器支持
表格中的数字表示支持该属性的第一个浏览器版本号。
紧跟在-webkit-,-ms-或-moz-前的数字为支持该前缀属性的第一个浏览器版本号。
@keyframes规则
语法
@keyframes animationname{keyframes-selector{css-styles;}}属性值:
●animationname必需的。定义animation的名称。
●keyframes-selector必需的。动画持续时间的百分比。
合法值:
●0-100%
●from(和0%相同)
●to(和100%相同)
●css-styles必需的。一个或多个合法的CSS样式属性
说明:
您可以改变任意多的样式任意多的次数。
请用百分比来规定变化发生的时间,或用关键词"from"和"to",等同于 0%和 100%。
0%是动画的开始,100%是动画的完成。
为了得到最佳的浏览器支持,您应该始终定义 0%和 100%选择器。
css动画示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
div
{
width:100px;
height:100px;
background:red;
position:relative;
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite;/* Safari and Chrome*/
}
@keyframes mymove
{
0%{top:0px; left:0px; background:red;}
25%{top:0px; left:100px; background:blue;}
50%{top:100px; left:100px; background:yellow;}
75%{top:100px; left:0px; background:green;}
100%{top:0px; left:0px; background:red;}
}
@-webkit-keyframes mymove/* Safari and Chrome*/
{
0%{top:0px; left:0px; background:red;}
25%{top:0px; left:100px; background:blue;}
50%{top:100px; left:100px; background:yellow;}
75%{top:100px; left:0px; background:green;}
100%{top:0px; left:0px; background:red;}
}
</style>
</head>
<body>
<div></div>
</body>
</html>效果图:
关于css动画实例的内容到此结束,希望对大家有所帮助。