重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

css怎么实现无限轮播图动画

这篇文章主要介绍css怎么实现无限轮播图动画,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为乐东黎族企业提供专业的网站制作、成都网站建设乐东黎族网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

1、设置动画的舞台

HTML与之前文章里的示例非常相似。我们要有一个动画发生的舞台(#stage),一个将会旋转的div容器和一系列图像:

内联样式属性引用下面的动画@keyframes。它需要内联而不是CSS,以便我们能够使用JavaScript停止和重新启动动画。

2、在3D空间中布置照片

CSS样式用于定位多张照片,首先围绕y轴旋转它们(垂直向上翻页),然后径向向外平移:

#stage{

margin:2emauto1em50%;

height:140px;

-webkit-perspective:1200px;

-webkit-perspective-origin:050%;

}

#rotatora{

position:absolute;

left:-81px;

}

#rotatoraimg{

padding:10px;

border:1pxsolid#ccc;

background:#fff;

-webkit-backface-visibility:hidden;

}

#rotatora:nth-of-type(1)img{

-webkit-transform:rotateY(-90deg)translateZ(300px);

}

#rotatora:nth-of-type(2)img{

-webkit-transform:rotateY(-60deg)translateZ(300px);

}

#rotatora:nth-of-type(3)img{

-webkit-transform:rotateY(-30deg)translateZ(300px);

}

#rotatora:nth-of-type(4)img{

-webkit-transform:translateZ(300px);

background:#000;

}

#rotatora:nth-of-type(5)img{

-webkit-transform:rotateY(30deg)translateZ(300px);

}

#rotatora:nth-of-type(6)img{

-webkit-transform:rotateY(60deg)translateZ(300px);

}

#rotatora:nth-of-type(n+7){display:none;}

照片设置-81px的值代表向左移动,使前向照片在旋转轴上居中。距离是图像宽度的一半(140px/2)加上LHS图像填充(10px)和边框(1px)。

该阶段需要设置立体的动画,舞台从页面的中心开始,因此旋转元素下的锚元素需要向后移动以使动画居中。

我们只开始准备六张照片,左边三张,中间一张,右边两张。最左侧的照片(位置1)从左侧开始,因此仅在第一次旋转后才可见。

当照片旋转时,它会消失(显示:无),并且新照片会附加到左侧,准备从位置1旋转。在7和更高的位置可以有任意数量的照片。只有当它们移动到可见位置时,它们才会出现。

甚至可以在动画进行时使用Ajax加载新照片。

3、添加动画效果

正如我们之前尝试的那样,不是将照片轮旋转整整360度,而是我们实际做的只是旋转30度(足以从一张照片到下一张照片):

@-webkit-keyframesrotator{

from{-webkit-transform:rotateY(0deg);}

to{-webkit-transform:rotateY(30deg);}

}

#rotator{

-webkit-transform-origin:00;

-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(){

varrotateComplete=function(){

target.style.webkitAnimationName="";

target.insertBefore(arr[arr.length-1],arr[0]);

setTimeout(function(el){

el.style.webkitAnimationName="rotator";

},0,target);

};

vartarget=document.getElementById("rotator");

vararr=target.getElementsByTagName("a");

target.addEventListener("webkitAnimationEnd",rotateComplete,false);

},false);

对于每个WebKit样式和其他引用,存在Firefox(-moz-或Moz),Opera(-o-或O),甚至InternetExplorer(-ms-或ms)的替代品-我们必须忍受的混乱直到标准最终确定。

要在Safari,Chrome,Firefox,Opera和InternetExplorer10中使用此功能,我们需要包含以下额外的设置:

varrotateComplete=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);

};

vartarget=document.getElementById("rotator");

vararr=target.getElementsByTagName("a");

target.addEventListener("webkitAnimationEnd",rotateComplete,false);

target.addEventListener("animationend",rotateComplete,false);

target.addEventListener("MSAnimationEnd",rotateComplete,false);

目前尚不清楚为何需要setTimeout。我们不需要它来设置延迟,因为使用CSS完成,但没有setTimeout(甚至0ms)动画无法重新触发。

以上是“css怎么实现无限轮播图动画”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


分享文章:css怎么实现无限轮播图动画
标题URL:http://cqcxhl.com/article/ippcpe.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP