首先先看demo吧,点击查看demo

一、随便说几句

css3动画效果的强大不言而喻,自它出现一直热度不减,它与js动画的优劣也一直成为前端界争论的话题,不可置疑的是css3动画的出现在一定程度上降低了动画效果的实现难度,利于前端的学习,其精简的代码量把我们从烦人的js调试中解放出来,当然css的动画效果有其局限性,我们不能只用css3模拟出全部的就是动画,另外就是浏览器的兼容性问题。我们这次用css3实现一个轮播图效果,体验一下css3的强大。首先说明我们可次只实现了自动轮播,效果也是最常见的淡入淡出,并未实现点击轮换效果,至少在我目前水平来看,自动轮播与点击轮换两者纯css3只能选其一,如果可以同时实现两种效果的方法,请告诉我。

二、布局

html代码没有什么可说的,样式的话首先必定slider的大盒子必定是相对定位,另外我们采用在li标签中添加background-image,因为这样才有可能用纯的css实现响应式,另外背景图为了在响应式中看清全貌,必然使用background-size:100%,另外就是高度问题了,显然slider-container必需是和li的高度一致,因为响应式中必然这个高度不能固定死,所以使用height属性显然不行,padding属性可以解决这个问题,一是background-image可以显示在padding中,二是padding中以%为单位是以父元素宽度为基准的。

*{

margin:0;

padding:0;

}

ul,li{

list-style: none;

}

.floatfix {

*zoom: 1;

}

.floatfix:after {

content: "";

display: table;

clear: both;

}

.slider-contaner{

width:100%;

position:relative;

}

.slider,.slider-item{

padding-bottom:40%;

}

.slider-item{

width:100%;

position:absolute;

background-size:100%;

}

.slider-item1{

background-image:url(imgs/1.jpg);

}

.slider-item2{

background-image:url(imgs/2.jpg);

}

.slider-item3{

background-image:url(imgs/3.jpg);

}

.slider-item4{

background-image:url(imgs/4.jpg);

}

.slider-item5{

background-image:url(imgs/5.jpg);

}

三、设计动画

淡入淡出效果肯定是使用opacity,首先整体来看所有图片的淡入淡出都是同一个动画,只是时间不一样而已,这肯定是利用animation-delay来控制,动画无限轮换肯定使用animation-iteration-count: infinite,我们这次5张图片,整个动画分为图片停留和淡入淡出两个效果,用下图表示,箭头表示淡入淡出过程。

因为css3中没有一个属性是规定两次动画播放的时间间隔,所以我们必须把其他图片淡入淡出时该图片的效果写进动画里,显然这时候是opacity:0;我们为了写动画的方便,动画使用线性函数,也就是animation-timing-function:linear;整个过程使用20s,一次停留使用3秒,一次淡入淡出使用1s,折合成百分比也就是15%和5%;

@keyframes fade{

0%{

opacity:0;

z-index:2;

}

5%{

opacity:1;

z-index: 1;

}

20%{

opacity:1;

z-index:1;

}

25%{

opacity:0;

z-index:0;

}

100%{

opacity:0;

z-index:0;

}

}

接下来就是为每张图片添加animation-delay了,因为第一张图片必须显示在最前,所以其他通过相邻兄弟选择器使用opacity:0,第一张图片开始不需要淡入淡出,直接跳至停留也就是5%,所以animation-delay为-1s,第二章图片和第一张相隔20%,也就是4s,animation-delay为3s,以此类推

.slider-item + .slider-item{

opacity:0;

}

.slider-item1{

animation-delay: -1s;

}

.slider-item2{

animation-delay: 3s;

}

.slider-item3{

animation-delay: 7s;

}

.slider-item4{

animation-delay: 11s;

}

.slider-item5{

animation-delay: 15s;

}

这个时候我们的轮播图可以动了

四、添加轮播焦点

添加轮播焦点当然不是为了点击,而是告诉访问者这里有几张图片和目前图片的位置,至少以我个人而言,轮播焦点很重要,因为如果我不知道轮播的图片有几张,我又没有办法点击,我就会非常不安,感觉自己没有看到整个网页的全貌。所以我们还是添加一下轮播焦点。首先非常明确的这个仍然可以使用上面的动画,另外布局肯定使用position:absolute,另外很明显焦点我们必须写两次,一次是当前图片的样式,一次是非当前图片的样式

.focus-container{

position:absolute;

bottom:2%;

z-index:7;

margin:0 auto;

left:0;

right:0;

}

.focus-container ul{

margin-left:46%;

}

.focus-container li{

width:10px;

height:10px;

border-radius:50%;

float:left;

margin-right:10px;

background:#fff;

}

.focus-item{

width:100%;

height:100%;

background:#51B1D9;

border-radius:inherit;

animation-duration: 20s;

animation-timing-function: linear;

animation-name:fade;

animation-iteration-count: infinite;

}

.focus-item1{

animation-delay: -1s;

}

.focus-item2{

animation-delay: 3s;

}

.focus-item3{

animation-delay: 7s;

}

.focus-item4{

animation-delay: 11s;

}

.focus-item5{

animation-delay: 15s;

}

五、梳理代码

如果你维护过别人的代码你就会知道,代码梳理对于后期维护的重要性了,没有经过梳理的css代码,随心所欲写到哪里就是哪里,对于后期维护来说简直就是一场灾难,css代码梳理个人认为首先必须添加必要的注释,将css代码分区,另外就是尽量减少后期修改需要修改的地方,这个主要是代码重构的问题,这个问题我已经在编写代码的时候考虑到了,所以主要任务就是添加注释和告诉维护者代码最常修改的地方,我们遵循最常修改的代码放到最后的原则。

我们来分析一下我们的代码如果给别人用可能需要修改的地方,首先肯定是图片路径,所以我们把这个样式放在最后,然后是图片高度,轮播焦点的颜色,动画时间的设置(这里还涉及图片个数),轮播焦点的位置,当然轮播焦点大小也可能修改。重构后代码如下:

/*css reset start*/

*{

margin:0;

padding:0;

}

ul,li{

list-style: none;

}

/*css reset end*/

/*css public start*/

.floatfix {

*zoom: 1;

}

.floatfix:after {

content: "";

display: table;

clear: both;

}

/*css public end*/

/*slider start*/

.slider-contaner{

width:100%;

position:relative;

}

.slider-item + .slider-item{

opacity:0;

}

.slider-item{

width:100%;

position:absolute;

animation-timing-function: linear;

animation-name:fade;

animation-iteration-count: infinite;

background-size:100%;

}

.focus-container{

position:absolute;

z-index:7;

margin:0 auto;

left:0;

right:0;

}

.focus-container li{

width:10px;

height:10px;

border-radius:50%;

float:left;

margin-right:10px;

background:#fff;

}

.focus-item{

width:100%;

height:100%;

border-radius:inherit;

animation-timing-function: linear;

animation-name:fade;

animation-iteration-count: infinite;

}

.focus-item2,.focus-item3,.focus-item4,.focus-item5{

opacity:0;

}

.focus-container ul{

margin-left:46%;

}

/*设置轮播焦点的位置*/

.focus-container{

bottom:2%;

}

/*设置当前图片焦点的颜色*/

.focus-item{

background:#51B1D9;

}

/*设置动画,请根据实际需要修改秒数*/

.slider-item,.focus-item{

animation-duration: 20s;

}

.slider-item1,.focus-item1{

animation-delay: -1s;

}

.slider-item2,.focus-item2{

animation-delay: 3s;

}

.slider-item3,.focus-item3{

animation-delay: 7s;

}

.slider-item4,.focus-item4{

animation-delay: 11s;

}

.slider-item5,.focus-item5{

animation-delay: 15s;

}

@keyframes fade{

0%{

opacity:0;

z-index:2;

}

5%{

opacity:1;

z-index: 1;

}

20%{

opacity:1;

z-index:1;

}

25%{

opacity:0;

z-index:0;

}

100%{

opacity:0;

z-index:0;

}

}

/*设置背景,响应式请利用媒体查询根据断点修改路径*/

.slider-item1{

background-image:url(imgs/1.jpg);

}

.slider-item2{

background-image:url(imgs/2.jpg);

}

.slider-item3{

background-image:url(imgs/3.jpg);

}

.slider-item4{

background-image:url(imgs/4.jpg);

}

.slider-item5{

background-image:url(imgs/5.jpg);

}

/*设置图片的高度,请根据具体需要修改百分比,响应式及时修改此值*/

.slider,.slider-item{

padding-bottom:40%;

}

六、最后扯两句

这种css3实现的轮播图,缺点也是不言而喻,点击轮换和自动轮换两者只能选其一,不过自动轮换可以用在手机端,这是一个不错的选择,另外,现在的网站大都是通栏设计,网页文字很少,尤其是网站首页更是如此,有时候比的不是网站设计的优劣,反而是谁选的图片好看,谁就有可能受到青睐,这种情况我们其实可以考虑将轮播图变为背景的轮换,这时候轮播焦点也就可以不使用了,相信你的博客首页或者产品首页使用背景轮换,效果会非常不错的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

css33d图片轮播_手把手教你用纯css3实现轮播图效果实例相关推荐

  1. css33d图片轮播_手把手教你用纯css3实现轮播图效果

    首先先看demo吧,点击查看demo 一.随便说几句 css3动画效果的强大不言而喻,自它出现一直热度不减,它与js动画的优劣也一直成为前端界争论的话题,不可置疑的是css3动画的出现在一定程度上降低 ...

  2. 图例放在图的外面_手把手教你绘制多个置信区间的森林图

    森林图的历史可以追溯到20世纪70年代,最常用于Meta分析中.forestplot包是绘制森林图的R包,其起源于rmeta包的forestplot函数,解决了forestplot函数的一些缺点,功能 ...

  3. 软件_手把手教vscode配置c++,python开发环境

    原创:软件_手把手教vscode配置c++,python开发环境 之前主用Python作为项目开发语言,将项目迁移到arm边缘盒子上后发现arm的cpu不给力,软件速度低于预期,所以计划将部分程序改为 ...

  4. cmd 将文件夹下文件剪切到另外一个文件_手把手教你运行第一个 Java 程序,看不懂你来骂我!...

    码字不易,对你有帮助 **点赞 /转发↪️/关注 ** 支持一下作者 微信搜公众号:不会编程的程序圆br/>看更多干货,获取第一时间更新 在运行第一个 java 程序之前,你需要先将 java ...

  5. mysql mtbf计算_手把手教你计算MTBF(平均故障间隔时间),有实例!

    原标题:手把手教你计算MTBF(平均故障间隔时间),有实例! MTBF(平均故障间隔时间) MTBF,即平均故障间隔时间,英文全称是"Mean Time Between Failure&qu ...

  6. 手把手教你玩转CSS3 3D技术

    手把手教你玩转 CSS3 3D 技术 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2 ...

  7. 微信小程序手把手教你实现类似Android中ViewPager控件效果

    微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...

  8. html轮播台袋效果,使用html+js+css 实现页面轮播图效果(实例讲解)

    html 页面 轮播图效果 < > css页面 carousel.css #main{ width: 655px; height: 361px; position: relative; } ...

  9. 纯CSS3实现轮播图

    前言 纯css3实现的轮播图效果,和JavaScript控制的相比,简单高效了很多,但是功能也更加单一,只有轮播不能手动切换. 用什么实现的呢?页面布局 + animation动画 HTML部分 &l ...

最新文章

  1. RecyclerView嵌套TextView时显示文字不全的解决方法之一
  2. activiti 表——介绍
  3. [Regular] 2、正则表达式基础元字符及分组、捕获
  4. VueRouter源码分析
  5. HibernateDaoSupport类的使用(转)
  6. LeetCode(682)——棒球比赛(JavaScript)
  7. sql azure 语法_Azure SQL Server中的CREATE DATABASE语句概述
  8. 微信小程序之 ----API接口
  9. 首届“十大最具价值”互联网创新创业项目遴选榜单丨Xtecher联合中投协权威发布...
  10. Kibana:为 Dashboard 创建链接 drilldown - 7.11 版本
  11. 高德地图中自定义色块标识任意省市县区域
  12. c语言的关键字母大小写表示,英语26个字母大小写标准写法
  13. 4本建模必读的书籍,每天学一点,获益匪浅
  14. php短信报警直到响应,Cacti实现短信报警
  15. gevent和requests同时使用报requests.exceptions.ReadTimeout:HTTPSConnectionPool(host='www.baidu.com', port=4
  16. 用华为手机拍照!要学会这4个功能,随手一拍都是单反大片
  17. SqlSugar 1.项目安装
  18. 2.24-2.28的fsop
  19. [附源码]SSM计算机毕业设计中青年健康管理监测系统JAVA
  20. csgo服务器取消自动踢人,CSGO踢出玩家Kick相关控制台指令

热门文章

  1. 小学生打扫计算机教室的简报,简报第33期:我校开展“清扫校园”卫生大扫除活动...
  2. 华为路由协议ospf,域内路由,域间路由,域外路由
  3. 什么是应用分发?应用分发是什么?
  4. 苹果微信更新不了最新版本_微信更新7.0版本,为何优先给iOS用户体验?这是在歧视安卓?...
  5. 量化交易系统设计的六大细节
  6. 亮眼财报业绩背后,难掩富途控股估值陷阱
  7. 迅雷 java_Java实现迅雷地址转成普通地址实例代码
  8. 漫天要价,就地还钱!
  9. LOD原理及相关实现方式
  10. PostgreSQL SQL 语言:全文搜索