在这里封装了一个改变元素节点的运动的函数,使用的时候只要调用即可:

1、第一个参数是要操作元素节点。

2、第二个参数是一个对象存放样式名和对应样式的目标值。

3、第三个参数是回调函数,在不需要的时候可以不传入,作用是在多个样式改变时让样式依次改变:

function move(node, obj, callback) {// node节点也是一个对象。 可以自定义属性。clearInterval(node.timer);node.timer = setInterval(function() {//所有的运动都已经完成var isEnd = true;for (const attr in obj) {if (obj.hasOwnProperty(attr)) {//attr 属性名//ITarget,变化的值const iTarget = obj[attr];//获取运动的样式的当前数值var icur = null;if (attr == "opacity") {icur = parseInt(getStyle(node, attr) * 100);} else {icur = parseInt(getStyle(node, attr));}var speed = (iTarget - icur) / 8;speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);//位置数值先运算。此时还未发生移动。icur += speed;if ((speed >= 0 && iTarget > icur) || (speed <= 0 && iTarget < icur)) {//未完成情况isEnd = false;} else {//已完成icur = iTarget;}//将运动的结果赋值给节点if (attr == "opacity") {node.style.opacity = icur / 100;node.style.filter = "alpha(opacity=" + icur + ")";} else {node.style[attr] = icur + "px";}}}if (isEnd) {clearInterval(node.timer);//开始下一个运动,不能写死,if (callback) {callback();}}}, 30)
}
//obj 元素 attr 样式的属性
function getStyle(obj, attr) {if (obj.currentStyle) {return obj.currentStyle[attr];} else {return getComputedStyle(obj)[attr];}
}

通过引用以上放法实现轮播图:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}#box {width: 950px;height: 600px;margin: 20px auto;position: relative;overflow: hidden;}#imgs {list-style: none;width: 4750px;height: 600px;position: absolute;left: 0;}#imgs li {width: 950px;height: 600px;float: left;}#imgs li img {width: 100%;height: 100%;}#btns {width: 120px;height: 50px;line-height: 50px;position: absolute;bottom: 20px;right: 40px;background-color: aqua;}</style>
</head><body><div id="box"><div id="btns"><span></span><span></span><span></span><span></span></div><ul id="imgs"><li><img src="img/1.jpg" alt=""></li><li><img src="img/2.jpg" alt=""></li><li><img src="img/3.jpg" alt=""></li><li><img src="img/4.jpg" alt=""></li><li><img src="img/1.jpg" alt=""></li></ul></div>
</body>
<script src="js/untils.js"></script>
<script>//获取元素节点var imgs = document.getElementById("imgs");var lis = document.querySelectorAll("img");setInterval(function() {move(imgs, {left: imgs.offsetLeft - 950,},function() {//当最后一张图片走完后,应该让整个ul回到起点位置。if (imgs.offsetLeft <= -(lis.length - 1) * 950) {imgs.style.left = "0px";}})}, 2000)
</script></html>

以上代码就完成了js简单的轮播。

JS实现轮播图-无缝衔接相关推荐

  1. 用animation实现轮播图无缝衔接

     思路 使用animation来展示轮播图: 轮播分为两个独立的部分:位移 与 动效.使二者互不影响 动效分为进入动画和退出动画 在所有动效结束后位移 html部分 <body><u ...

  2. 用transition实现轮播图无缝衔接

    思路 无缝衔接是障眼法,复制第一张图到末尾,使头尾图片相同 每次第一张向左切换时,先大幅位移到最后一张,再开启transition,就没有缝了 每次最后一张向右切换时,先大幅位移到第一张,再开启tra ...

  3. 原生js实现轮播图实例教程

    原生js实现轮播图实例教程 本实例效果如下图所示: 根据实例效果,需要的元素有图片.中间圆点按钮.左右箭头按钮等.实际html代码如下所示: <div class="banner_co ...

  4. js实现轮播图_高性能轻量级零依赖的轮播图组件——Glider.js

    介绍 Glider.js是一个依赖原生js的轮播图组件库,因为其压缩后仅仅2.8k大小,其拥有着很好的性能,Glider.js在Github上开源,目前已拥有2.4kstars. Github htt ...

  5. 使用原生js将轮播图组件化

    代码地址如下: http://www.demodashi.com/demo/11316.html   这是一个轮播图组件,这里是代码地址,需要传入容器的id和图片地址,支持Internet Explo ...

  6. 轮播图实现html,html、css、js实现轮播图

    2017-03-13 今天把轮播图的知识1过了一下,写了一个比较简单的轮播图,给大家参考一下. 查看具体的效果点击这个链接 : http://gjhnstxu.me/%E8%BD%AE%E6%92%A ...

  7. JS实现轮播图点击切换、按钮切换功能

    JS实现轮播图点击切换.按钮切换功能 前言 轮播图案例 总结 前言 轮播图的案例非常经典,写法也非常多,我在写一个自己用的比较多的写法,帮助大家理解,在网页的设计中,可以直接拿去用(记得换图片路径哦! ...

  8. 原生js实现轮播图——小肉包

    使用原生js实现轮播图--小肉包 今天分享一个使用原生JS实现轮播图的案例,并且配上比较详细的过程讲解,欢迎小伙伴的浏览和批评指正.静态效果图如下: 核心思想 将一些图片在一行中平铺,然后计算偏移量再 ...

  9. 利用js实现轮播图(上一张,下一张,选取第几张,动画等)

    今天来说一下利用js实现轮播图效果 思路 1.首先我们要把需要用到的元素获取过来 <div class="all" id='box'><div class=&qu ...

最新文章

  1. 如何控制在一个软件中特殊的字符比如#都显示为红色呢?该字符是作为标签中的内容出现的,可能出现在JLABEL,JCheckBox,JCombox的标签中的,
  2. 【Android必备】与其他碎片进行通信(10)
  3. java命令查看jvm内存
  4. MaxCompute用户初体验
  5. 关于使用css3属性:transform固定菜单位置,在滑动页面时菜单闪现抖动的问题
  6. 如何为javascript代码编写注释以支持智能感知
  7. C#设置IP地址,启用禁用适配器
  8. 基于Jenkins 快速搭建持续集成环境
  9. Hamilton四元数
  10. 好友伤害_家暴,对一个孩子的伤害到底有多大?
  11. Docker新手入门,最全详解看这里!
  12. CF1033A. King Escape的题解
  13. 190408每日一句
  14. 基于php考试系统设计与实现研究文毕业设计(论文)学生中期检查,毕业设计(论文)中期检查报告(学生填写)...
  15. 轮廓(查找和绘制轮廓、轮廓的表达与组织、轮廓的特性)
  16. 记录下自己拙计的算法之旅 LeetCode Rotate Array
  17. 【实战模拟】使用Kali Linux进行域名解析——模拟测试
  18. 【字符集五】c++标准库<locale>
  19. muduo学习笔记:net部分之实现TCP网络编程库-Buffer
  20. eWebEditor漏洞 [转]

热门文章

  1. 文件上传绕过和提权——(感谢公司搭建靶机和给予帮助的各位同仁)
  2. 数字信号处理笔记(上)
  3. 计算机网络自考第一章知识点,完整版18版自考04741计算机网络原理知识点第一章...
  4. 服务器带宽和家用宽带的区别?
  5. 瑞星杀毒软件、奇虎360杀毒软件、360卫士、百度卫士联手,搞不定弹出广告 恶意广告图标
  6. Spring Security中文文档
  7. LPG绘画软件测试自学,广东海洋大学学生软件测试实验报告书5.docx
  8. 文通视频文字识别亮相国际广播电影电视设备展览会
  9. 朱元璋、兵马俑到底长啥样?我用AI修复,让古人“活”了起来
  10. 集中控制集中电源型消防应急照明和疏散指示系统 验收方法与标准