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

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

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


基础知识

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

属性说明
animation-name用来指定一个关键帧动画的名称,这个动画名必须对应一个@keyframes 规则。CSS 加 载时会应用 animation-name 指定的动画, 从而执行动画。
animation-duration用来设置动画播放所需要的时间。
animation-timing-function用来设置动画的播放方式。
animation-delay用来指定动画的延迟时间
animation-iteartion-count用来指定动画的播放的循环次数
animation-direction用来指定动画的播放方向
animation- play-state用来控制动画的播放状态
animation-fill-mode用来设置动画的时间外属性
animation以上的简称

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

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

属性值说明
none默认值,没有指定任何动画
INDEX是由@keyframes 指定创建的动画名称

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

3.animation-timing-function
//设置缓动
如:animation-timing-function: ease-in;

属性值说明
ease默认值,元素样式从初始状态过渡到终止状态时速度由快到慢,逐渐变慢。等同于贝塞尔曲线(0.25, 0.1,0.25, 1.0)
linear元素样式从初始状态过渡到终止状态速度是恒速。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
ease-in元素样式从初始状态过渡到终止状态时,速度越来越快,呈一种加速状态。等同于贝塞尔曲线(0.42, 0,1.0, 1.0)
ease-out元素样式从初始状态过渡到终止状态时,速度越来越慢,呈一种减速状态。等同于贝塞尔曲线(0, 0, 0.58,1.0)
east-in-out元素样式从初始状态过渡到终止状态时,先加速,再减速。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
cubic-bezier自定义三次贝塞尔曲线

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

5.animation-iteration-count
//设置循环次数
如:animation-iteration-count:infinte

属性值说明
次数默认值为1
infinite表示无限次循环

6.animation-direction
//设置缓动方向交替
如:animation-diretion:alternate

属性值说明
normal默认值,每次播放向前
alternate一次向前,一次向后,一次向前,一次向后这样交替

7.animation-play-state
//设置停止播放动画
animation-play-state: paused;

8.animation-fill-mode
//设置结束后不在返回
如:animation-fill-mode: forwards;

属性值说明
none默认值,表示按预期进行和结束
forwards动画结束后继续应用最后关键帧位置,即不返回
backforwards动画结束后迅速应用起始关键帧位置,即返回
both根据情况产生 forwards 或 backforwards 的效果

//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 {…}

原理图

这里写图片描述

主要将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>

效果图

这里写图片描述

好了,简单的纯CSS动画的轮播图就到这里了,仅供参考,供小白练习用,更加熟练的运用animation 动画属性,更好的进行接下来的学习,第一次发博客,如有不足,多多请教,更多知识,本人正在学习!!!之后会进行分享!

  • 41
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
htmlcss响应式轮播图的实现可以按照以下步骤进行: 1. 创建一个有固定宽度和高度的大盒子,设置为相对定位。 2. 在大盒子中创建一个ul列表,每个列表项li代表一个轮播项。 3. 在每个li中添加一个背景图,使用background-image属性,并将背景图的大小设置为100%以实现响应式效果。 4. 为了实现自适应高度,可以使用padding属性来设置li的高度,并将百分比作为单位,以父元素宽度为基准。 5. 使用CSS3动画效果,如淡入淡出,来实现轮播图的切换效果。 6. 添加相应的CSS样式,如过渡效果、动画持续时间等,来增加轮播图的交互效果。 以下是一个简单的示例代码来实现htmlcss响应式轮播图: ```html <div class="slider-container"> <ul class="slider"> <li class="slide"></li> <li class="slide"></li> <li class="slide"></li> </ul> </div> ``` ```css .slider-container { position: relative; width: 100%; height: auto; } .slider { list-style-type: none; padding: 0; margin: 0; width: 100%; height: 100%; overflow: hidden; } .slide { background-image: url("image.jpg"); background-size: 100%; height: 0; padding-top: 56.25%; /* 16:9宽高比例 */ animation: fade 5s infinite; } @keyframes fade { 0% { opacity: 1; } 33.33% { opacity: 0; } 66.66% { opacity: 0; } 100% { opacity: 1; } } ``` 这样就可以实现一个简单的htmlcss响应式轮播图了。你可以根据自己的需求进行样式的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值