page contents

HTML纯CSS3动画轮播图(详解)

HTML纯CSS3动画轮播图(详解) 网页开发初学者学习时,一般都是先编写静态的页面,并没有JS、JQ等,在学习CSS3 时可以利用animation 属性制作一个简单的纯CSS3轮播图 基础知识 废话不多说...

attachments-2021-07-InuDosVb60f1225e8cd39.png

HTML纯CSS3动画轮播图(详解)

网页开发初学者学习时,一般都是先编写静态的页面,并没有JS、JQ等,在学习CSS3 时可以利用animation 属性制作一个简单的纯CSS3轮播图

基础知识

废话不多说,先来复习一下CSS的animation 属性:

attachments-2021-07-DnZFbD6Z60f1227f5ec72.png

除了这 9 个属性之外,动画效果还有一个重要的属性,就是关键帧属性:@keyframes。 它的作用是声明一个动画,然后在 animation 调用关键帧声明的动画。

接下来详解9个属性的属性值:(已经熟悉animation的可以不用看,这里只是方便小白更好的理解接下来的代码):

1.animation-name:myani;

attachments-2021-07-0CznbWm260f122a6cedcb.png

2.animation-duration:

用来设置动画的时间: animation-duration:1s

3.animation-timing-function

//设置缓动

如:animation-timing-function: ease-in;attachments-2021-07-P2eAcZPd60f122c76eb35.png

4.animation-delay

设置延迟时间 :animation-delay: 1s;

5.animation-iteration-count

//设置循环次数

如:animation-iteration-count:infinteattachments-2021-07-rPI8tzcj60f122e27d335.png

6.animation-direction

//设置缓动方向交替

如:animation-diretion:alternate

attachments-2021-07-4QveG4eS60f122fbf0832.png

7.animation-play-state

//设置停止播放动画

animation-play-state: paused;

8.animation-fill-mode

//设置结束后不在返回

如:animation-fill-mode: forwards;

attachments-2021-07-9tFUSWOT60f12323d867c.png

//both 需要结合,次数和播放方向 animation-iteration-count: 4; animation-direction: alternate;

最后为了兼容旧版本,需要加上相应的浏览器前缀:

//兼容完整版,Opera 在这个属性上加入 webkit,所以没有-o-

-webkit-animation: myani 1s ease 2 alternate 0s both;

-moz-animation: myani 1s ease 2 alternate 0s both;

-ms-animation: myani 1s ease 2 alternate 0s both; transition: all 1s ease 0s;


//@keyframes 也需要加上前缀

@-webkit-keyframes myani {…}

@-moz-keyframes myani {…}

@-o-keyframes myani {…}

@-ms-keyframes myani {…} keyframes myani {…}


原理图

attachments-2021-07-aUcdSylo60f12353b7ff5.jpg

主要将li设置为左浮动float:left;将图片放入li中,注意每个li的宽度和高度都为图片的宽高,接着设置ul的宽高,宽度为所有图片的总宽,高度即为一张图片的高度,接着再将放置图片的div盒子宽度高度均为图片的宽高,再接着设置overflow:hidden;这样子只有显示一张图片的大小了,最后设置动画效果,用margin-left 设置,一次移动 (-)800px;便移动一张图片,代码如下:

代码块

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
                background: silver;
            }
            /*初始化页面*/
            .CarouselBox {
                width: 800px;
                height: 600px;
                margin: 100px auto;
                overflow: hidden;   
            }
            /*设置放置轮播图的盒子*/
            li {
                width: 800px;
                height: 600px;
                float: left;
                list-style: none;
            }
            /*对放置图片的li进行设置*/
            /*设置动画的主要属性*/
            ul {
                width: 4800px;
                height: 600px;
                animation: myani 10s 0s alternate ease-in-out infinite;
                -ms-animation: myani 10s 0s alternate ease-in-out infinite;
                -moz-animation: myani 10s 0s alternate ease-in-out infinite;
                -webkit-animation: myani 10s 0s alternate ease-in-out infinite;
            }


            /* 对动画的关键帧进行设置*/
            @keyframes myani {
                0% {
                    margin-left: 0px;
                }
                20% {
                    margin-left: -800px;
                }
                40% {
                    margin-left: -1600px;
                }
                60% {
                    margin-left: -2400px;
                }
                80% {
                    margin-left: -3200px;
                }
                100% {
                    margin-left: -4000px;
                }
            }
            /*对动画的关键帧进行兼容处理*/
            @-webkit-keyframes myani {
                0% {
                    margin-left: 0px;
                }
                20% {
                    margin-left: -800px;
                }
                40% {
                    margin-left: -1600px;
                }
                60% {
                    margin-left: -2400px;
                }
                80% {
                    margin-left: -3200px;
                }
                100% {
                    margin-left: -4000px;
                }
            }
            @-moz-keyframes myani {
                0% {
                    margin-left: 0px;
                }
                20% {
                    margin-left: -800px;
                }
                40% {
                    margin-left: -1600px;
                }
                60% {
                    margin-left: -2400px;
                }
                80% {
                    margin-left: -3200px;
                }
                100% {
                    margin-left: -4000px;
                }
            }
            @-ms-keyframes myani {
                0% {
                    margin-left: 0px;
                }
                20% {
                    margin-left: -800px;
                }
                40% {
                    margin-left: -1600px;
                }
                60% {
                    margin-left: -2400px;
                }
                80% {
                    margin-left: -3200px;
                }
                100% {
                    margin-left: -4000px;
                }
            }
        </style>
    </head>
    <body>
        <div class="CarouselBox">
            <ul>
                <li>
                    <a href="##"><img src="Image/1 (1).jpg" width="800" height="600"></a>
                </li>
                <li>
                    <a href="##"><img src="Image/1 (2).jpg" width="800" height="600"></a>
                </li>
                <li>
                    <a href="##"><img src="Image/1 (3).jpg" width="800" height="600"></a>
                </li>
                <li>
                    <a href="##"><img src="Image/1 (4).jpg" width="800" height="600"></a>
                </li>
                <li>
                    <a href="##"><img src="Image/1 (5).jpg" width="800" height="600"></a>
                </li>
                <li>
                    <a href="##"><img src="Image/1 (6).jpg" width="800" height="600"></a>
                </li>
            </ul>
        </div>
    </body>
</html>

效果图

attachments-2021-07-fnI2cumT60f1237a0b8f4.jpg

好了,简单的纯CSS动画的轮播图就到这里了

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-99vlaDH062ad3fb0747c3.jpeg

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 1131 文章
  3. 小柒 1038 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章