技术经验解读:个人练习:使用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

相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
778 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
开发框架 JavaScript 前端开发
精选HTML、JavaScript、ASP代码片段集锦
这些代码片段代表了HTML, JavaScript和ASP的基本应用,可被集成到更复杂的项目中。它们注重实用性,并且易于理解,旨在帮助开发者快速开始项目构建或进行学习。尽管ASP不如其他服务器端技术(如Node.js, PHP, Ruby等)现代,但它在遗留系统中仍非常普遍,了解基础仍具有价值。
407 14
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
1068 11
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
833 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1268 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
317 34
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
346 10
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
943 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
693 33

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    556
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    428
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    430
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    279
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    543
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    720
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1404
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    312
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1166
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    501