用 CSS 做轮播图

对于用 css 实现一个轮播图的缘由,是那时候刚开始接触前端,完全还不懂 js。但是有一个项目(就是一个用来应付面试的作品)需要做一个轮播的效果,当时第一反应就是用 css3 自定义动画 -webkit-animation。做出来的效果自己觉得还可以,唯一的不足就是鼠标点击切换 banner 图和指定到某个图。如果项目中不需要切换变换图片的需求,用 css3 做,何尝不是一种办法。不多说,先上代码:

html 代码如下:

<div class="test">
    <a href="#" ><img class="img1" src="1.jpg" ></a>
    <a href="#" ><img class=‘img2‘ src="2.jpg" ></a>
    <a href="#" ><img class=‘img3‘ src="3.jpg" ></a>
    <a href="#" ><img class=‘img4‘ src="4.jpg" ></a>
</div>

接着 css 代码:

@-webkit-keyframes t1{
    0%{ left: 0; }
    20%{ left: 0; }
    25%{ left: -960px; }
    45%{ left: -960px; }
    50%{ left: -1920px; }
    70%{ left: -1920px; }
    75%{ left: -2880px; }
    95%{ left: -2880px; }
    100%{ left: 0; }
}
@-webkit-keyframes t2{
    0%{ left: 960px; }
    20%{ left: 960px; }
    25%{ left: 0; }
    45%{ left: 0; }
    50%{ left: -960px; }
    70%{ left: -960px; }
    75%{ left: -1920px; }
    95%{ left: -1920px; }
    100%{ left: 960px; }
}
@-webkit-keyframes t3{
    0%{ left: 1920px; }
    20%{ left: 1920px; }
    25%{ left: 960px; }
    45%{ left: 960px; }
    50%{ left: 0; }
    70%{ left: 0; }
    75%{ left: -960px; }
    95%{ left: -960px; }
    100%{ left: 1920px; }
}
@-webkit-keyframes t4{
    0%{ left: 2880px; }
    20%{ left: 2880px; }
    25%{ left: 1920px; }
    45%{ left: 1920px; }
    50%{ left: 960px; }
    70%{ left: 960px; }
    75%{ left: 0; }
    95%{ left: 0; }
    100%{ left: 2880px; }
}

这里定义了 t1、t2、t3、t4 四个动画名称,主要是动画里的帧数的设置技巧,因为只有4张图,所以就取每次帧数增加 25% 的时候才让 left 值减去图片宽度,而在改变 left 值之前的 5%(这个值根据情况调整)处 left 值保持不变,而这个 5% 表示的就是轮播图中图片移动的时间,另外 20% 表示的就是图片禁止的状态。然后把这4个自定义动画一一放到每一个 img 里,例如:

.test .img1{
    left: 0;
    -webkit-animation: t1 linear 12s infinite;
       -moz-animation: t1 linear 12s infinite;
        -ms-animation: t1 linear 12s infinite;
         -o-animation: t1 linear 12s infinite;
            animation: t1 linear 12s infinite;
}
.test .img2{
    left: 960px;
    -webkit-animation: t2 linear 12s infinite;
       -moz-animation: t2 linear 12s infinite;
        -ms-animation: t2 linear 12s infinite;
         -o-animation: t2 linear 12s infinite;
            animation: t2 linear 12s infinite;
}
.test .img3{
    left: 1920px;
    -webkit-animation: t3 linear 12s infinite;
       -moz-animation: t3 linear 12s infinite;
        -ms-animation: t3 linear 12s infinite;
         -o-animation: t3 linear 12s infinite;
            animation: t3 linear 12s infinite;
}
.test .img4{
    left: 2880px;
    -webkit-animation: t4 linear 12s infinite;
       -moz-animation: t4 linear 12s infinite;
        -ms-animation: t4 linear 12s infinite;
         -o-animation: t4 linear 12s infinite;
            animation: t4 linear 12s infinite;
}
.test:hover img{
    -webkit-animation-play-state: paused;
       -moz-animation-play-state: paused;
        -ms-animation-play-state: paused;
         -o-animation-play-state: paused;
            animation-play-state: paused;
}

代码最后给了一个鼠标移上去,动画停止的效果,整个轮播的时间自行设置,‘infinite’ 表示一直持续轮播。

ps:这个是一个正序的轮播,同理也可以实现正反序轮播,在定义动画那里改改帧数设置就行,有疑问,欢迎在评论中提出,谢谢大家。

时间: 2024-11-02 23:21:35

用 CSS 做轮播图的相关文章

基于css制作轮播图的部分效果

在轮播图中,我们可以通过鼠标在特定位置上的滑动来实现元素背景的改变.通常在制作轮播图时,我们首先想到的是js中的交互.可是,如果我们无法使用js,只能单纯的靠css又该如何实现这一效果呢?下面,本人将向大家介绍一种最近实验出来的一种方法. 在介绍这种方法之前,本人觉得对于css中的某些伪类选择器有必要进行进一步的分析. hover这个伪类选择器表示的是当鼠标移动到元素上时元素的反应.这一特性与js中的mousemove事件十分的相近,那么其是不是可以被近视地看做该事件呢?下面我们来做一个例子:

angular2----使用swiper做轮播图

步骤: 1.去官网下载最新的swiper的js和css 分别在index页面中导入 2.在需要做轮播的页面引入 3.然后我就打开swiper的API文档了,直接copy,初始化一个swiper 当然在angular2中不能这么写,于是变成了这样 在html中 在相关的ts中 emmm.... 本来我以为这样就好了 然后发现尼玛左右侧按钮和下面的分页按钮出不来! 于是又看了一个分页的API  发现需要把分页css也copy ,放进相应的css文件夹中的时候,以为ok了,运行,还是么有看到! 打开调

使用css实现轮播图

使用css3实现图片轮播 前言:实现图片轮播的方式有很多种 ,例如js ,css 等等. 本文主要讲述使用纯css3实现轮播图 工具介绍: 使用的编辑器: Hbuilder 进入正题 html代码: <div id="slide_show"> <div id="photos"> <!-- 作者:JavaBuild 时间:2018-10-21 描述:轮播图 --> <img id="first_slide_photo

js+html+css实现轮播图

首先先把轮播图的结构搭建起来(html),代码如下:  结构可自行搭建,结构搭建完接着就是用css去进行修饰美化   此时的ul是没有给它设置固定的宽和高的,高可以先设置,宽不能,等下让图片一张接一张一的动起来,实际上是改变了ul的left值,ul的宽可以通过图片(li)的宽 乘以 图片数量即可得到,但是不能写死,所以ul的宽我们用js去获取设置,一起看下现在的效果 好了,结构已经搭建完了,现在只是静态的,我们需要用js去让它动起来,我们先获取html中需要用到的元素并把它存给变量,这里我事先存

vue使用插件做轮播图

vue使用 vue-awesome-swiper制作轮播图. 1.访问github,搜索vue-awesome-swiper,查看用法. 第一个坑:github居然访问不了. 解决办法:参考别人 https://www.cnblogs.com/Owen-ET/p/10868620.html 其实访不访问都没关系,照着下面步骤来就可以了. 2.安装 vue-awesome-swiper指定版本 第二个坑:必须用这个版本,要不然后面很多bug了. npm i [email protected] --

纯css实现轮播图

轮播图的实现原理其实是比较简单的 举个例子 <div class="main"> <div class="div-main"></div> </div> main的宽度是100px div-main的宽度是500px 我们用js控制div-main往左或往右移动,这样就实现了轮播,简单把 好了,先介绍个 css3的api animation: myfirst 5s linear 2s infinite alternat

HTML+CSS +JS 轮播图

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>轮播图</title> 6 <style> 7 #container{ 8 width: 450px; 9 height: 270px; 10 margin: 0 auto; 11 margin-top: 100px; 12 position: relative;

好久不做轮播图一想到滑来滑去就头痛

维护庞大杂乱的老项目,插件不适宜,最后看需求没说一定要滑,整了个淡入淡出: <script type="text/javascript"> var reviewed_id = 0; //图片标识 var reviewed_img_num = $(".img_ul").children("span").length; //图片个数 $(".img_ul span").hide(); //初始化图片 play(); s

html5+css+JavaScript 轮播图

BEGIN: HTML代码如下 <div id="slideShowContainer"> <ul id="imgUl"> <li> <div class="SlidePic"> <a href="#"><img src="img/g_1.jpeg" alt="" /></a> </div>