CSS 轮播图的实现(纯CSS,连续滑动无倒滑效果)

html-css035

CSS 轮播图的实现(纯CSS,连续滑动无倒滑效果),第1张

简单demo:使用HTML+CSS 实现轮播图(三张图为例,分别为:红、绿、蓝)的效果。

不能发视频,截图来代替吧

1.显示 轮播图1(实际轮播的第2个元素li)

2.显示 轮播图2(实际轮播的第3个元素li)

3.显示 轮播图3(实际轮播的第4个元素li)

4.显示 轮播图1(实际轮播的第5个元素li,之后会紧跟着重复以上动作)

animation-name: 规定需要绑定到选择器的 keyframe 名称。

animation-duration: 规定完成动画所花费的时间,以秒或毫秒计。

animation-timing-function: 规定动画的速度曲线。

animation-delay:规定在动画开始之前的延迟。

animation-iteration-count: 规定动画应该播放的次数。

animation-direction:规定是否应该轮流反向播放动画。

@keyframes{

}

给每个动画及暂停分配时间,按照总时间的百分比分配;

以三张图片为例制作轮播图,若将最后的数值设置为100%,出现问题在于最后一张到第一张的切换没有动画;尝试给最后一张图片到第一张图片的动画时间,但是中间的切换效果是从最后一张向右滑动直到显示出第一张图,其效果反人类,不美观;但是,通过尝试在最后的一张图片后面在添加一张与第一张相同的图片,可实现循环的效果;

方法与一中大致相同,唯一更改的地方是css3的@keyframes规则里面的内容

若只将要显示的三张图片导入,会出现最后一张图片到第一张图片没有动画效果;通过尝试在最后的一张图片后面在添加一张与第一张相同的图片,可实现循环的效果;

问题在于图片一直处于切换状态,中间没有停顿;

img 不要用浮动

简单点的做法就是 把 img 也设置为 position:absolutetop:0width:100%height:100%

left先不设置 然后用js判断有几个 img 给个循环 js代码大概如下:

//js部分

for(var i = 0  i < img.length  i++){

    //动态设置img的left

    //js

    img.style.left = (i*200)+"px"

}

//补充: 在循环结束后 要设置 #1的width属性为 img.length*200

之后的轮播可以 就改变 #1这个div的 left 属性 每次都是 一张图片的大小 200px 当然应该设置的是 -200px

最好是可以给一个计数器, 现在显示的是第几张图片,再判断如果是最后一张 下一次轮播就播放第一张 也就是 #1 的left = 0

如果不太明白 可以设置 #k的overflow:auto 来看效果。

做了个例子给你参考一下:

<!DOCTYPE>

<html>

<head>

    <title></title>

    <style type="text/css">

        #k{width:200px height:280px position:relative border:solid 1px #cccbackground-color:#eee overflow:hidden}

        #img_box{position:absolute top:0left:0}

        #img_box img{width:200pxheight:280px position:absolute top:0}

    </style>

    <script type="text/javascript">

        function Onload() {

            var imgs = document.getElementsByTagName("img")

            img_box.style.width = (imgs.length * 200) + "px"

            for (var i = 0 i < imgs.length i++) {

                imgs[i].style.left = (i * 200) + "px"

            }

        }

    </script>

</head>

<body onload="Onload()">

    <div id="k">

        <div id="img_box" class="a">

            <img src="" alt="图片1" style="background-color:Red" />

            <img src="" alt="图片2" style="background-color:Blue" />

            <img src="" alt="图片3" style="background-color:Green" />

            <img src="" alt="图片4" style="background-color:Yellow" />

        </div>

    </div>

</body>

</html>