技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)

简介: 技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)

先上效果图,不要在意用来当素材的图片:


在搜索相关资料的时候,查到有两种实现方式:一是使用JavaScript,二是使用CSS3中的Animation(动画),这里使用的是CSS3中的Animation实现的图片轮播功能。


首先我们要理解这个图片轮播的结构,我一早上都因为没有理解结构在那里浪费时间,中午睡了一觉起来思路就通了,就。。。做出来了┑( ̄Д  ̄)┍


其实就和老式电影放映机差不多原理,要显示的内容就是胶片上的一张张照片,并排排列:


轮播起来就像播放老式电影一样,胶片移动,显示区域会显示想要显示的那张照片:


我理解的轮播的原理就到这里为止了,接下来是实战部分。


注:因为会出现一层套一层的创建区域,代码部分如果有在某个区域内创建第二个区域的话,新创建的区域的代码部分会加粗显示。


先创建一个最外层的作为轮播区域的容器,id=homepage:


HTML:


1 [/span>body

2


3 [/span>div id="homepage"

4

5


6

之后我们的轮播区域都创建在这个id=homepage的中了。这里稍微设置一下它的样式,这个不一定要跟我一样,我这样设置只是我自己看的舒服:


CSS:


1 / 去除div区域与浏览器之间的边界 /


2 body{


3 margin:0px;


4 padding:0px;


5 }


6


7 / 最外层的div区域,里面有一个轮播区域 /


8 #homepage //代码效果参考:http://www.jhylw.com.cn/483823293.html

{

9 Width</span>:100%;


10 Height</span>:500px;


11 background-color:#E8E8FF;


12 }


就一片灰我就不截效果了。


在这个区域内再创建一个区域,class=carousel。这个相当于老式电影放映机的镜头(显示区域):


HTML:


1


2 [/span>div id="homepage"

3


4 [/span>div class="carousel"

5

6


7

8


设置CSS样式让它居中在页面中显示:


CSS:


1 / 轮播区域 /


2 .carousel {


3 / 设置显示区域的宽度和高度 /


4 Width</span>:600px;


5 Height</span>:300px;


6 / 隐藏溢出的内容


7 overflow:hidden; /


8


9 / 居中显示这个div区域 /


10 position:relative;


11 top:50%;


12 left:50%;


13 transform:translate(-50%,-50%);


14


15 background-color:black; / 完成轮播时删除 /


16 }


镜头(显示区域)的大小和胶片上的照片(轮播的内容)的大小是一致的。这里的overflow先注释,先不用,等会看到胶片(轮播内容的集合)的效果后再启用。此时页面是这样的:


接下来我们在镜头(显示区域)中创建胶片(显示内容的集合),class=carousel-set。


注意:这个并不是直接放内容的,它跟一个空白胶片一样,轮播的内容就是照片,要拍摄后才有内容(也即是说我们还要在“胶片”中创建区域)。


HTML:


1


2 [/span>div id="homepage"

3


4 [/span>div class="carousel"

5


6 [/span>div class="carousel-set"

7

8


9

10


11

12


然后设置一下CSS的样式,假设我们要显示四张照片,那我们就给它预留五张照片的位置(宽度),第五张和第一张相同,要给人一种无缝循环的感觉:


CSS:


1 / 轮播内容的集合 /


2 .carousel-set {


3 Width</span>:3000px; / 设置宽度为轮播内容宽度的总和 /


4 Height</span>:300px; / 轮播内容的高度 /


5


6 background-color:blue; / 完成轮播时删除 /


7 }


此时的效果如下:


因为宽度太长了,甚至超出了浏览器的范围。这个不用担心,我们之前在镜头(显示区域)的样式中有设置了overflow,只是暂时注释掉了而已,后面胶片(显示内容的集合)效果出来后我们再启用overflow。


胶片(显示内容的集合)准备好了,接下来就是胶片上的内容,也就是照片(显示内容)啦。


在胶片(显示内容的集合)中,创建我们的照片(显示内容)的。可能会有人问(不,不会有人问的的):为啥是一个不直接上呢?你想想,我们用,那我们可不止能显示照片,我们还能显示文字,或者放个超链接等等,可以扩展嘛。我们准备显示四张照片,那我们就创建五张照片的位置(区域),第五张和第一张相同,要给人一种无缝循环的感觉:


HTML:


1


2 [/span>div id="homepage"

3


4 [/span>div class="carousel"

5


6 [/span>div class="carousel-set"

7


8 [/span>div class="carousel-content"

9 [/span>img src="image/1.png" alt="非著名调查员:苍穹之章" />


10

11 [/span>div class="carousel-content"

12 [/span>img src="image/2.png" alt="非著名调查员:苍穹之章" />


13

14 [/span>div class="carousel-content"

15 [/span>img src="image/3.png" alt="非著名调查员:苍穹之章" />


16

17 [/span>div class="carousel-content"

18 [/span>img src="image/4.png" alt="非著名调查员:苍穹之章" />


19

20 [/span>div class="carousel-content"

21 [/span>img src="image/1.png" alt="非著名调查员:苍穹之章" />


22

23


24

25


26

27


28

29


这里顺便将要轮播的图片加上去了,因为纯色。。。不太好分辨内容间的间隔(虽然的素材黑边本来就不好分别,不要在意这些细节)然后设置一下CSS样式,让胶片(轮播内容的集合)成型:


CSS:


1 / 轮播的内容 /


2 .carousel-content {


3 Width</span>:600px;


4 Height</span>:300px;


5 float:left; / 设置左浮动,让轮播内容排成一行 /


6 }


7


8 / 轮播的内容中的标签 /


9 .carousel-content>img{


10 Width</span>:100%;


11 Height</span>:100%;


12 }


此时的运行效果如下:


是不是就有种胶片(内容的集合)的感觉啦,接下来我们尝试让这个胶片(内容的集合)移动。接下来就到这边文章的主角——CSS3中的Animation出场了!


Animation这里就不做过多介绍,毕竟这个笔记是介绍实现轮播功能,不是介绍Animation的。接下来步骤不理解的话建议去看一下Animation的一些资料。


我们先创建CSS3的@keyframes规则,这个规则和关键帧很像,比如一个动画,在播放到50%的时候是一个关键帧,播放到100%的时候是一个关键帧,关键帧之间有补帧,让动画看起来更加流畅。


CSS:


1 / keyframes规则 /


2 @keyframes playMovie {


3 0% {margin-left:0px;}


4 10% {margin-left:0px;}


5 20% {margin-left:-600px;}


6 40% {margin-left:-600px;}


7 50% {margin-left:-1200px;}


8 70% {margin-left:-1200px;}


9 80% {margin-left:-1800px;}


10 90% {margin-left:-1800px;}


11 100% {margin-left:-2400px;}


12 }


这里采用的是修改胶片(显示内容的集合)的左侧外边距的方式来移动胶片(显示内容的集合)。接下来我们在胶片的CSS样式表中应用这个动画规则:


CSS:


1 / 轮播内容的集合 /


2 .c

相关文章
|
2天前
|
JavaScript vr&ar 数据库
技术笔记:Js获取当前日期时间及其它操作
技术笔记:Js获取当前日期时间及其它操作
|
2天前
|
前端开发
技术经验分享:html生成印章
技术经验分享:html生成印章
|
2天前
|
前端开发 JavaScript 容器
程序技术好文:纯原生javascript下拉框表单美化实例教程
程序技术好文:纯原生javascript下拉框表单美化实例教程
|
3天前
|
JavaScript 前端开发
程序技术好文:第一百三十八节,JavaScript,封装库
程序技术好文:第一百三十八节,JavaScript,封装库
|
3天前
|
JavaScript
必知的技术知识:js保留二位小数
必知的技术知识:js保留二位小数
|
3天前
|
Web App开发 JavaScript iOS开发
技术笔记:js数组定义和方法(包含ES5新增数组方法)
技术笔记:js数组定义和方法(包含ES5新增数组方法)
|
4天前
|
安全 JavaScript
旋转木马轮播图 html+css+js
旋转木马轮播图 html+css+js
|
4天前
|
移动开发 前端开发 JavaScript
HTML5+CSS3+JavaScript网页实战
HTML5+CSS3+JavaScript网页实战
|
8天前
|
前端开发
HTML+CSS练习小项目——百叶窗
HTML+CSS练习小项目——百叶窗
|
7天前
|
XML 前端开发 JavaScript
HTML、CSS、JavaScript有什么区别
HTML、CSS、JavaScript有什么区别