对于用 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. php curl流方式远程下载大文件

    $url="http://*"; #下载文件 set_time_limit(0); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, ...

  2. java 操作数据库

    package foo;import java.sql.*; public class JdbcDemo { private static Connection conn; private stati ...

  3. svn截图

        一.合并一个范围的版本 此类型应用最为广泛,主要是把分支中的修改合并到主干上来.在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本.合并的源URL填写的是要合并的分支的URL,待合 ...

  4. J2msi 自己制作的把exe打成安装包简易GUI程序(第二版 带DLL注册)

    J2msi 自己制作的把exe打成安装包简易GUI程序(第二版 带DLL注册) 之前那一版本(http://www.cnblogs.com/rojas/p/4794684.html)没考虑 DLL 注 ...

  5. 【No.1 Ionic】基础环境配置

    Node 安装 git clone https://github.com/nodejs/node cd node ./configure make sudo make install node -v ...

  6. C# where(泛型类型约束)

    /*在泛型类型定义中,where 子句用于指定对下列类型的约束:这些类型可用作泛型声明中定义的类型参数的实参. 例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就可以实现 ...

  7. Java高级之虚拟机垃圾回收机制

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 区别于C语言手动回收,Java自动执行垃圾回收,但为了执行高效 ...

  8. cdecl和stdcall调用约定-汇编演示

    . .model flat, stdcall .stack ExitProcess PROTO, dwExitCode:DWORD .data val2 sdword result dword ? . ...

  9. Magento white screen or how XML can break your site?

    Magento white screen or how XML can break your site? by SANDO on 02. OCT, 2012 in MAGENTO, SMALL TIP ...

  10. Selenium2学习-011-WebUI自动化实战实例-009-JavaScript 在 Selenium 自动化中的应用实例之一(赋值)

    通常在编写 Selenium 的 WebUI 自动化脚本时,有些元素不易定位元素,或有些元素为隐藏的(此时用 WebElement.getText() 获取其值的时候,返回的结果为空),对日常的 UI ...