开发工具与关键技术:vs code,JavaScript、jQuery、html、css

1、 思路
最基本的轮播要怎样简化?如何拥有够好的扩展性?如何拥有够好的实用性?

2、html布局
1、如图
目的——首先明白移动层body类的作用:这个元素内包裹的元素就是移动的元素,当body这个类随意使用某个可移动的样式时,内容元素就会随着body类移动而移动;

问题(1):当知道要移动body类就可以形成轮播的初步运作逻辑时,body类中的内容元素布局就会很关键!我们要将 内容元素 连着平铺在body这个类中!这个案例中,我给body类的样式改变了display,改成了flex,这样内容元素就会整个平铺在body类中。
如图:
2、如何将内容元素做到100%大小:

图中,给body类的宽度设定了1000%,每个内容元素设置为10%,直观看是10%,但是body类的宽度设为了1000%,也就是说内容元素的宽度10%是依照父元素也就是body类进行设置的。
所以!这里10%就是body类1000%里的100%(1000 / 10 = 100)

3、overflow给谁?为什么要给它?

都知道这个是关键,所以消除边界外的内容肯定是整个轮播的最外层的那个元素。
解释:在图中可看到移动层body类跟控制层clickbutton类被整个轮播内容类content类包裹,控制层也不是内容层那样是占用主力空间的元素。所以将overflow:hidden这个属性给在content类上,这样轮播的结构才是稳固的一体性的!
好处:轮播外的元素可以移入进来,轮播内的元素在轮播外看不见。

4、控制层和html结构拓展性说明
控制层是一部分刚入前端的小白所踩的坑。这里先重点说明:控制层千万千万千万别创建在移动层中,如果你要使用这篇文章说明的轮播效果,那么控制层绝对不能创建在移动层中!否则移动层设置属性值移动时控制层也会像内容元素一样跟着跑!
这里又涉及到结构扩展性的问题,够好的结构是可以明确分明 “一级” 跟 “二级” 元素的层级关系,这就是刚涉及前端的小白犯问题的地方,结构不正确!不正确的结构会导致css样式的设置出现问题,例如position定位的相对、绝对定位。

假设内容的主元素是一级元素,那么往下的直接子元素就是二级元素,二级元素往下的直接子元素就是三级,然后一直往下会有很多的子元素。

当我们将主元素设置为body类,那么body类就是一级元素,它的直接子元素是二级元素。二级元素跟二级元素是相同的也就是兄弟元素,都属于二级元素。

所以在结构上,控制层不能创建在移动层内,不然这里的控制层会被移动层当作是二级元素!当移动层内出现了控制层,控制层的兄弟元素将会是可移动的内容元素!移动层移动后,你要的控制元素可能会不可见!

5、移动层的样式问题
我们要让移动层动起来,肯定不能没有过渡属性,当然在js中使用jQuery里的animate方法设置属性达到动画效果也是可以的,animate的这种方法会在不间断轮播中用到。
首先要看我们的目的性:我们的目的不就是让移动层移动吗?所以给body类设置一个相对定位,再给一个transition属性,时间自定义。如图:

这里也有一个小误区:设置left的位置。
如果将left设置在style样式中,那么,你如果使用js去更改他的left值达到移动效果时,他会先将你设置的值给予在内联样式上,而不是直接更改style样式中的left值!这种的效果在未赋予left于内联样式上的时候会第一步赋予在内联样式上!这一步,没有过渡效果!使用jQuery或许就没有这种问题,为了保险我们还是将left值设置在内联样式上;
如图:

3、JavaScript部分
首先该理解的是当点击按钮时移动层的left值变动。
这里使用jQuery写法,为两个按钮绑定点击事件。这里#next为下一张,#prev为上一张。

绑定好事件后,设置关键的两个全局变量。
一个是index用于记录当前所在内容屏数。
另一个是num用于设定当前的移动距离,100%就是100,多少宽度就是设置多少宽度。
这两个几乎是所有轮播中必备的变量,一定不能忘了用!

图中没有写到,需要再来一个全局变量move,这个变量只需要创建就好值是空的也没问题

1、 点击按钮的事件内容
移动的内容只有这么点。

第一行代码:点击后,内容肯定要换到下一屏内容,所以记录屏数的index变量自加1不难理解。
第二行代码:move的这个变量,也需要是全局变量,因为这个变量就是记录着整个轮播的移动量!上一张和下一张都需要看这个值的多少。
第三行代码:最后将这个计算过后的move值替代left的值,那么点击“下一张”按钮后就可以看清楚运动轨迹了。
“#prev(上一张)”按钮的事件一样,只是将index自加改为了index–(自减)而已。
这里left的设置是设置body类(移动层)喔!不要设置错了!否则是搞大问题!

2、 最后一屏内容的处理
最后的处理点就是移动至最后一屏再次点击按钮后出现的内容。
如图:

通常处理就是加上if判定,判定内容是index(记录屏数的变量)是否等于最后一屏内容。

1-问:这一步的关键是明白index == 4 意味着什么?
1-答:意味着我们所见屏数来到了最后一屏内容,再次按下按钮需要回到第一屏或者最后一屏。

2-问:if判定为什么要放在事件的第一行?
2-答:因为这个判定的内容是判定index变量,所以必须放在index自减或自加的前面;最保险的就是放在第一行。

明白if判定的内容后,再看判定内执行的代码。
首先在脑内构思。在最后一屏内容,再次按下按钮触发了判定,我们需要将可见屏数调回第一屏或最后一屏,所以index 肯定是要重新设置。由于index是全局变量所以if内index值改变是会影响到click事件外的index值的,这也是全局变量的用处之一;
图中显示的是点击“下一张”的按钮所以,这里if内的index重新设置为0(第一屏数)然后将移动的主体代码重新放进if内就好了。
最后!如果不加上else将if外的代码包裹的话,那么这里if内的执行代码,在最后一定要return返回。不然会再次执行if判定外的代码!
“#prev(上一张)”的点击事件中的if判定跟图中的if判定的思路是一样的。同样是判定的最后一屏,更改返回的屏数。

技术点总结:怎么说,轮播的技术点参合了许多的知识点。是刚学前端的人必须跨过去的坎,轮播的形成方式有很多,不只限于这篇文章中的更改left值作为主轮播效果,也可以使用transform: translateX();来移动 “移动层”。再多说一句,轮播的html结构是很重要的!别以为只是单纯的js而已。

希望本篇文章能够帮到你;

源代码(直接复制后,别忘了引入jQuery)。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>基础的轮播效果</title><!-- 样式 --><style>body {margin: 0;padding: 0;}.content {overflow: hidden;}.body {transition: all .5s;width: 1000%;display: flex;position: relative;}[litem="causel"] {width: 10%;height: 320px;text-align: center;line-height: 280px;font-size: 30px;}.img1 {background-color: red;}.img2 {background-color: yellow;}.img3 {background-color: blue;}.img4 {background-color: green;}.img5 {background-color: orange;}.clickbutton {display: flex;justify-content: center;}.clickbutton>button {margin: 0 50px;width: 80px;height: 50px;}</style>
</head><body><!-- 页面内容渲染 --><div class="content"><!-- 移动层 --><div class="body" style="left: -0%;"><div class="img1" litem="causel">1</div><div class="img2" litem="causel">2</div><div class="img3" litem="causel">3</div><div class="img4" litem="causel">4</div><div class="img5" litem="causel">5</div></div><!-- 控制层 --><div class="clickbutton"><button id="prev">◀</button><button id="next">▶</button></div></div><!-- jQ引入 --><script src="./jquery-3.2.1.min.js"></script><!-- js部分 --><script type="text/javascript">$(function () {var index = 0;//记录当前内容var num = 100//移动距离var move// 下一张$("#next").click(function () {if(index == 4){index = 0move = num*index$(".body").css("left" , "-"+move+"%")return}index++ move = num*index$(".body").css("left" , "-"+move+"%")});//    上一张$("#prev").click(function () {if(index == 0){index = 4move = num*index$(".body").css("left" , "-"+move+"%")return}index--move = num*index$(".body").css("left" , "-"+move+"%")});})</script>
</body></html>

详细说明如何实现简易轮播效果相关推荐

  1. 给UIScrollView添加category实现UIScrollView的轮播效果

    给UIScrollView添加category实现UIScrollView的轮播效果 大家都知道,要给category添加属性是必须通过runtime来实现的,本教程中给UIScrollView添加c ...

  2. 用JQ去实现一个轮播效果

    前提:用JQ去实现轮播效果一步步的做一个梳理. 首先肯定是轮播的HTML和CSS样式了: <body><div class="pic"><div cl ...

  3. Qt之实现图片轮播效果

    一.简述 今天文章讲述的是如何用Qt实现图片轮播的效果,其实我们经常在网页中看到各种广告就是使用了图片轮播,实现小区域内嵌入多个广告的效果. 下面是CSDN页面中两种常见的图片轮播效果.基本上就是定时 ...

  4. 纯js制作图片轮播效果

    好久没有发博客了,最近都在复习,为了找工作做准备. 前段时间逛了下鼠绘漫画网追海贼王最新漫画,发现他们家的图片轮播效果跟其他网页的图片轮播效果效果不同,看起来更加有趣,于是我尝试了用js复写它. 前提 ...

  5. android 自适应图片轮播,Android使用Recyclerview实现图片轮播效果的方法

    Android使用Recyclerview实现图片轮播效果的方法 发布时间:2020-06-23 15:47:58 来源:亿速云 阅读:113 作者:清晨 这篇文章将为大家详细讲解有关Android使 ...

  6. js图片轮播效果实现代码

    这篇文章主要介绍了js图片轮播效果实现代码,文章对每一步进行了详细阐述,标注注意事项,为顺利实现js图片轮播效果做好铺垫,对轮播效果感兴趣的朋友可以参考一下 首先给大家看一看js图片轮播效果,如下图 ...

  7. Bootstrap-导航条-栅格系统-Carousel(轮播效果)-标签页

    Bootstrap对于不会设计的童鞋很有用. Twitter设计师的前台框架 中文官网:http://v3.bootcss.com/ 导入包等信息: <head> <meta htt ...

  8. html的轮播点怎么设置,html轮播效果的实现

    要实现如下图的效果 点击可以选择图片:不点击的时候自动轮播:并且点击完后再次自动轮播. 思路:如同在房子里透过窗子看路过的火车一样,窗子是不动的,但火车是陆续经过窗子的,所以透过窗子可以看到依次看完所 ...

  9. web前端入门到实战:以轮播效果为案例谈如何写优质代码

    作为程序员大家在写代码时谈的最多的就是代码的拓展性.复用性.本文就以大家熟悉的轮播效果为案例,讲一讲写优质代码的思路和实践. 文章分三个步骤.第一步,实现基本功能:第二步,考虑到代码的封装性和复用性: ...

最新文章

  1. 使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程
  2. R语言ggplot2可视化水平条形图的标题(title)、副标题(subtitle)和图片说明信息(caption)左对齐实战
  3. Linux下MONO执行C#程序
  4. 管理 Active Directory 所必需的工具或技术
  5. 求素数——多线程练习
  6. android 许可协议,Android 基本控件的使用二(注册许可协议)(CheckBox)
  7. 【数据结构与算法】之深入解析“下一个更大元素II”的求解思路与算法示例
  8. 如何将React App转换为React Native
  9. Latex 加空格的方法
  10. mysql 日期操作 增减天数、时间转换、时间戳(转)
  11. Ubuntu 16.04安装vsftpd 并开启ftp服务
  12. 五种主流的虚拟化技术
  13. 关于proteus8.8的一键破解版和汉化包
  14. 2.1_7 Oracle 执行计划之1_优化器(Optimizer - CBORBO)
  15. 《周易》中的君子形象--http://cul.china.com.cn/guoxue/2018-06/04/content_40369049.htm
  16. Webpack 使用
  17. FlowNet:使用卷积网络学习光流
  18. Xshell连接云服务器并连接宝塔面板(天翼云为例)
  19. 用Mediawiki做百科网站资源大参考
  20. 用友金蝶 不同道路,殊途同归

热门文章

  1. Linux字体相关文件存放的目录位置
  2. 调查问卷怎么html做成链接,在问卷网上如何把问卷链接通过邮件的方式发给别人填写?...
  3. 【记录】螺纹连接与螺旋传动
  4. ETH 2.0新纪元开启,究竟能带来什么?
  5. Word文件如何查看字数
  6. 动态活体检测 | 算法分析
  7. 网页看视频没有声音怎么办
  8. 光猫-新版水星路由器配置(WiFi连接不上后)
  9. 机器人波波熊_【菠菠智能悦读机器人绘本更新篇】新技能get!BoBo本周新增绘本103本!...
  10. yxc_第一章 基础算法(三)_双指针算法位运算