对于用 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 代码:

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

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

.test .img1{
left:;
-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:这个是一个正序的轮播,同理也可以实现正反序轮播,在定义动画那里改改帧数设置就行,有疑问,欢迎在评论中提出,谢谢大家。

用 CSS 做轮播图的更多相关文章

  1. 用js和jQuery做轮播图

    Javascript或jQuery做轮播图 css样式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:r ...

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

    在轮播图中,我们可以通过鼠标在特定位置上的滑动来实现元素背景的改变.通常在制作轮播图时,我们首先想到的是js中的交互.可是,如果我们无法使用js,只能单纯的靠css又该如何实现这一效果呢?下面,本人将 ...

  3. jQuery做轮播图

    这是我自己做的一个简单的轮播图,效果图如下: 我觉得轮播图中最主要的是要理解到图片为什么会滑动,是怎么控制的.上面这个我自己做的,是搭好的一个结构,在无序列表中插入需要的图片.然后在插入图片的后面添加 ...

  4. React Native 如何做轮播图 react-native-swiper

    //:仿饿了么github:https://github.com/stoneWeb/elm-react-native 欢迎各位同学加入: React-Native群:397885169 大前端群:54 ...

  5. 纯CSS实现轮播图效果,你不知道的CSS3黑科技

    前言 轮播图已经是一个很常见的东西,尤其是在各大App的首页顶部栏,经常会轮番显示不同的图片. 一提到轮播图如何实现时,很多人的第一反应就是使用Javascript的定时器,当然这种方法是可以实现的. ...

  6. 拓展-教你手把手用纯CSS写轮播图

    先看成品图[示例网址:][1] [1]: https://huruji.github.io/css-imitate-js/slider/index.html一.随便说几句####css3动画效果的强大 ...

  7. 用avalon框架怎么做轮播图?

    avalon这个框架其实特别的小众,做个轮播图呢?在github上的例子只有一个,而且功能特别的少,有的引入的插件与avalon里面的指令又不兼容,所以找了一个owl-carousel,目前实现了移动 ...

  8. 使用css实现轮播图

    使用css3实现图片轮播 前言:实现图片轮播的方式有很多种 ,例如js ,css 等等. 本文主要讲述使用纯css3实现轮播图 工具介绍: 使用的编辑器: Hbuilder 进入正题 html代码: ...

  9. 使用css制作轮播图

    <!--HTML代码--> <!DOCTYPE html> <html lang="en"><head> <meta char ...

随机推荐

  1. Linux常用命令-入门

    linux 开源安全性高 linux 和 windows 1.同时登陆多用户 2.安全 3.linux没有盘符的概念 /. /        root      根目录 4.linux的文件没有扩展名 ...

  2. BAT批处理(二)

    在前一篇中已对BAT批处理基础作了一些总结,但是对于BAT批处理还有很多的知识点没有讲解到,比如DOS中的特殊符号:IF.FOR的使用:变量:更多的DOS命令等等.本文在前一篇的基础上继续对BAT批处 ...

  3. CLI下另一种多进程实现方式----PCNTL

    有些时候,你需要对一些脚本进行优化,以期跑的更快,在更短的时间内完成任务.PCNTL是一个不错的选择,它可以fork多个进程,来协同完成一个任务,理论上完成的时间将会和进程数成反比. 不过,PCNTL ...

  4. 图片lightbox2

    1. 官网下载 http://lokeshdhakar.com/projects/lightbox2/ 2.引入 css  jquery  js 3. HTML格式 <a href=" ...

  5. 告诉你Hadoop是什么

    Hadoop是什么?Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算. Hadoop框架中 ...

  6. nsenter into docker. selinux(semanage,restorecon)

    Docker容器运行后,如何进入容器进行操作呢?起初我是用SSH.如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可.当我启动了五个容器后,每个容器默认是没有配置SS ...

  7. Android高级之Dalvik初识

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 研究安卓已多年,一直在应用层做开发,Framework层只是看过,也就是大家常说的"底层& ...

  8. ubuntu下交叉编译windows c程序

    简介 采用mingw32可以在linux下直接编译c程序输出为windows下的exe程序或dll链接库. 个人编译的纯c程序(不含winapi),主要是c99程序,通常采用gcc/cc编译调试后,再 ...

  9. 导出证书Cer文件为Pem格式的步骤

    (1)先导出Push Services的证书,比如我们命名为“magic_cert.p12”,注意导出时会让你输入密码. (2)再导出Push Services证书的密钥(Private Key),比 ...

  10. SQL集合函数中利用case when then 技巧

    我们都知道SQL中适用case when then来转化数据库中的信息 比如  select (case sex when 0 then '男' else '女' end) AS sex  from ...