最近在不断的加强巩固js。在学习jq和vue之后发现很多东西其实都是不明所以,有些底层的东西自己不懂,到头来也只是一昧的使用,一直在用别人的东西,对自己的成长帮助也不大。

万丈高楼平地起,基础打扎实了学什么都快,而且我觉得用原生的代码写完好像自己有点小成就感的。现在记录一下今天复习的原生js无缝轮播吧。

先上一张自拍镇楼,哈哈哈

首先先说一下思路吧,首先任意张图片以ul的形式保存显示,上代码吧

     <div id="wrap"><ul id="ul"><li><img src="http://img3.imgtn.bdimg.com/it/u=1135520735,2369294998&fm=200&gp=0.jpg"></li><li><img src="http://img2.imgtn.bdimg.com/it/u=695607252,2370769232&fm=200&gp=0.jpg"></li><li><img src="http://img4.imgtn.bdimg.com/it/u=4133407901,1533904167&fm=200&gp=0.jpg"></li><li><img src="http://img5.imgtn.bdimg.com/it/u=4083237979,1376579798&fm=26&gp=0.jpg"></li><li><img src="http://img2.imgtn.bdimg.com/it/u=1640379911,3259036309&fm=26&gp=0.jpg"></li></ul></div>

  图片轮播的话我是让整个ul移动显示,而不是更改li的margin,上css代码,因为一张图片设置是80px;所以容器的width就是400了。我这里举例是5张图,实际可以是无数张图,

ul上我也没设置宽度,如果知道图片几张那么直接定死就可以了,那如果就任意张的话就在js代码上设置了。

            #wrap{width: 400px;height: 80px;overflow: hidden;margin-left: 500px;margin-top: 300px;position: relative;}#ul{position: absolute;left: 0;top: 0;width: 400px;font-size: 0;margin: 0;padding: 0;}

然后js代码就很简单了,直接设置一个定时器,让ul缓慢的右移或者左移就可以了。但是会有一个问题,我们等下再讨论,先附上代码

window.onload = function(){var odiv = document.getElementById('wrap');var oul = document.getElementById('ul');setInterval(function(){oul.style.left = oul.offsetLeft + 5 +'px';},30)

但是图片往右走了就回不了头了,上面的代码只是让图片一直往左移动,那怎么实现当最后一张图片移动到左边缘时第一张图片重新显示,其实很简单

比如图片是1<—2<—3<—4这么移动显示,那么我们假如多一份图片呢,也就是说1<—2<—3<—4这里显示完了后面还有一份1<—2<—3<—4拼接上来呢,然后当第2组图片移动显示到4的时候,我们将ul重新拉回来

也就是将left设置成0;那你可能会问了那如果是这样直接拉回来不会出现闪动吗,事实是不会的。只要我速度够快,寂寞就追不上我。那么代码就可以这么写了

            var odiv = document.getElementById('wrap');var oul = document.getElementById('ul');var oli = oul.getElementsByTagName('li');oul.innerHTML = oul.innerHTML + oul.innerHTML;//拼接li,因为图片可能是任意张oul.style.width = oli[1].offsetWidth * oli.length + 'px';//ul的宽度等于所有图片宽度的总和setInterval(function(){if (oul.offsetLeft < -oul.offsetWidth/2) {oul.style.left = 0;//如果ul已经显示完了一组,也就是宽度的一半,那么就把他拉回来重新轮播 }else{oul.style.left = oul.offsetLeft - 2 +'px';}},30);

这样就完成了,可以复制代码在浏览器查看效果。我们也可以在这个基础上继续拓展,比如鼠标移入轮播停止,移出又继续,那这里只需要写个移入清除定时器事件,移出重新开始就可以了。

这个小拓展后又可以再继续拓展,比如在轮播图的两端加个icon,点击左icon轮播向左移动,点击右icon轮播向右,其实也不难,只需要修改left的位置就可以了,有兴趣就去试试吧

转载于:https://www.cnblogs.com/xzhan/p/9702348.html

原生JS简单的无缝自动轮播相关推荐

  1. java实现选项卡定时轮播_原生js面向对象编程-选项卡(自动轮播)

    原生js面向对象编程-选项卡(自动轮播) }#div1 input{color:#fff;width:100px;height:40px;background:darkseagreen;border: ...

  2. 原生js 移动端 无缝衔接轮播图

    https://github.com/zhaoyunchong/ApCarousel.git

  3. html js轮播图无白链接,JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)...

    简介这篇文章主要介绍了JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)以及相关的经验技巧,文章约11114字,浏览量505,点赞数3,值得参考! *{ margin:0; pa ...

  4. html图片自动循环轮播图,js实现图片无缝循环轮播

    本文实例为大家分享了js实现图片无缝循环轮播的具体代码,供大家参考,具体内容如下 代码如下 Document #container{ overflow:hidden; width:400px; hei ...

  5. H5原生js简单拼图游戏

    H5原生js简单拼图游戏 演示地址 效果展示 源码 index.html puzzle.css puzzle.js 源码下载 演示地址 链接: 演示地址 效果展示 源码 index.html < ...

  6. 原生js简单实现五指棋

    原生js简单实现五指棋 无聊之时可以玩玩,浏览器直接打开,简单又不失趣味! 如图: 上代码: <div id="bigBackground"><!-- 棋盘水平线 ...

  7. 原生 js 实现无缝滚动轮播

    上一次我们看了如何实现简单的轮播图,以及各种常用的效果实现: 这一次,我们看看无缝滚动轮播图的实现(利用 左边的margin 来实现): 原理: 我们创建一个div,下图共红色部分:然后再div中创建 ...

  8. vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

  9. html怎么引轮播图插件,原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

最新文章

  1. 数 学 专 业 劝 退 指 南
  2. python处理数据的优势-Python的优势及应用领域
  3. Crazy Drops 3
  4. python学习中文第五版_前5个学习Python的网站
  5. 用flash做古诗动画_带孩子用两张A4纸做动画(内附资源可下载)
  6. 注册表在各个系统中保存路径
  7. 44特征02——相似对角化与方幂、代数重数与几何重数、可对角化的概念、相似对角化的条件、矩阵方幂的计算
  8. VCPKG 常用命令
  9. 基于JAVA的抽奖系统
  10. macbook pro配置maven环境变量
  11. 如何使用CodeSmith批量生成代码(原创系列教程)
  12. 啊~北京~~啊~首都~
  13. Mac系统恢复以及Mac键盘快捷键 官方方法
  14. 雷电助手连接不到服务器,雷电模拟器无法联网怎么办 雷电模拟器网络异常的解决办法...
  15. 评价类模型---TOPSIS法
  16. iOS之 2020年最新苹果移动设备屏幕的大小和系统
  17. java 换行符转换
  18. iPhone(IOS10)忘记了访问限制的密码该怎么办?
  19. 麻省理工计算机专业毕业就业,中国版的麻省理工大学,工科实力与清华比肩,备受业界认可...
  20. 2345好压下载|2345好压软件下载

热门文章

  1. iOS开发用到的强大的开源工具
  2. CS61A Homework3
  3. 2012软件下载排行榜最新版下载地址:flashfxp VS竞技游戏平台 酷我音乐
  4. QGC地面站中视频流配置及gstreamer安装
  5. “每天8杯水”错了,人类首个饮水公式在此 | Science
  6. echart和vue-echart的使用
  7. 贝叶斯分类的原理及流程
  8. mysql导出数据结构+导出数据
  9. WPARAM与LPARAM 之区别
  10. 基于MATLAB的路面裂缝检测识别算法仿真