本文实例为大家分享了js实现自动播放匀速轮播图的具体代码,供大家参考,具体内容如下

函数封装:( 匀速运动函数)

function animate(obj,target,step,speed){

clearInterval(obj.timer);

var absStep = Math.abs(step);

step = target > obj.offsetLeft ? absStep : -absStep;

obj.timer = setInterval(function(){

var distance = Math.abs(target - obj.offsetLeft);

obj.style.left = obj.offsetLeft + step + 'px';

if(distance < absStep){

clearInterval(obj.timer);

obj.style.left = target + 'px';

}

},speed);

}

对象可以动态生成属性,用对象的timer,避免了全局变量的使用,

实现步骤:

1.动态生成ol导航条,并将导航条放入all中使其成为孩子节点

2.根据ul中图片数量动态生成li标签,使li成为ol的子节点,

3.给第0个li标签加上颜色(添加属性current)

4.用设置的属性的值去操作图片使图片移动,达到鼠标放上去移动到该图片效果,排它原理实现样式效果

5.深度克隆ul中的第一张图片并将图片放在ul的末尾

6.加入自动播放函数使其自动播放,设置两个变量key,squre,key的值用来计算图片的序号,squre用来计算当前li的序号

7.自动播放函数中排他原理设置当前li标签样式

8.在设置onmouseover和onmouseout事件鼠标放在盒子上暂停,鼠标离开盒子,继续运动

9.在鼠标放在li标签时让key等于当前图片的index属性值 ,并把key的值赋给squre。

实现细节:

1.动态给ul克隆出第0张图片补到末尾,以实现自动轮播是无缝的效果,

2.克隆分深克隆和浅克隆,深克隆克隆带标签内的所有内容,

3.浅克隆只克隆外部标签,深克隆参数为true

效果:

代码:

匀速轮播动画

*{ padding:0; margin:0; list-style:none; border:0;}

.all{

width:500px;

height:200px;

padding:7px;

border:1px solid #ccc;

margin:100px auto;

position:relative;

}

.screen{

width:500px;

height:200px;

overflow:hidden;

position:relative;

}

.screen li{

width:500px;

height:200px;

overflow:hidden;

float:left;

}

.screen ul{

position:absolute;

left:0;

top:0px;

width:3000px;

}

.all ol{

position:absolute;

right:10px;

bottom:10px;

line-height:20px;

text-align:center;

}

.all ol li{

float:left;

width:20px;

height:20px;

background:#fff;

border:1px solid #ccc;

margin-left:10px;

cursor:pointer;

}

.all ol li.current{

background:yellow;

}

function $(id){

return document.getElementById(id);

}

window.onload = function(){

var ul = $('ul');

var all = $('all');

var imgs = ul.getElementsByTagName('img');

var ol = document.createElement('ol');

all.appendChild(ol);

for(var i=0;i

var li = document.createElement('li');

li.innerHTML = i+1;

li.setAttribute('index',i);

ol.appendChild(li);

}

ol.childNodes[0].className = 'current';

var olLis = ol.children;

for(var i=0;i

olLis[i].onmouseover = function(){

for(var j=0;j

olLis[j].className = '';

}

this.className = 'current';

var index = -500*this.getAttribute('index');

animate(ul,index,20,10);

key=this.getAttribute('index');

squre = key;

}

}

ul.appendChild(ul.children[0].cloneNode(true));

var timer=null;

var key=0;

var squre = 0;

timer=setInterval(autoPlay, 1000);

function autoPlay(){

key++; //记录图片

squre++;//记录导航条

if(key>olLis.length){

key=1;

ul.style.left = 0 + 'px';

}

if(squre>=olLis.length){

squre = 0;

}

animate(ul,-500*key,20,10);

for(var i=0;i

olLis[i].className = '';

}

olLis[squre].className = 'current';

}

all.onmouseover = function(){

clearInterval(timer);

}

all.onmouseout = function(){

timer=setInterval(autoPlay, 1000);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

html5时间线图片自动轮播,js实现自动播放匀速轮播图相关推荐

  1. 原生JS实现PC端无缝滚动轮播图、匀速轮播图、匀速动画

    offset家族的了解 1.offsetHeight:元素的offsetHeight是一种元素CSS高度的衡量标准,包括元素的边框.内边距和元素的水平滚动条(如果存在且渲染的话),不包含:before ...

  2. 用js实现点击切换+自动切换的轮播图

    用js实现点击切换+自动切换的轮播图 之前博主写过一篇用css实现轮播图的文章,可以看到用css实现的轮播图也能实现我们所需要的功能.那么这些功能用js该如何实现呢?我们一起来看下吧! (ps:博主在 ...

  3. HTML5期末大作业:网站——个人网站介绍 (7页面带轮播特效)明星赵丽颖 学生DW网页设计作业源码 web课程设计网页规划与设计 大学生个人网站作业模板...

    HTML5期末大作业:网站--个人网站介绍 (7页面带轮播特效)明星赵丽颖 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没有合 ...

  4. HTML5期末大作业:网站——个人网站介绍 (7页面带轮播特效)明星赵丽颖 学生DW网页设计作业源码 web课程设计网页规划与设计 大学生个人网站作业模板

    HTML5期末大作业:网站--个人网站介绍 (7页面带轮播特效)明星赵丽颖 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没有合 ...

  5. swiper怎么在HTML引入JS文件,Swiper.js插件超简单实现轮播图

    Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端.能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果.超好用 话不多说,直接上教程 1.首先加载插件,需要用到 ...

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

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

  7. 第九十三节,html5+css3移动手机端流体布局,基础CSS,头部设计,轮播设计,底部设计...

    html5+css3移动手机端流体布局,基础CSS,头部设计,轮播设计,底部设计 基础CSS 首先将通用css属性写好 @charset "utf-8"; /*通用样式*/ /*去 ...

  8. slick.js基于jQuery全屏轮播插件

    下载地址基于slick.js轮播插件实现的全屏轮播效果,支持图片和文字动画显示效果. dd:

  9. 纯css自动全屏轮播图html代码,纯CSS3代码实现简单的图片轮播

    以4张图片为例: 1.基本布局: 将4张图片左浮动横向并排放入一个div容器内,图片设置统一尺寸,div宽度设置4个图片的总尺寸,然后放入相框容器div, 相框设置1个图片的大小并设置溢出隐藏,以保证 ...

最新文章

  1. Python从菜鸟到高手(2):清空Python控制台
  2. Android Studio 中的FindBugs插件使用,轻松帮你发现Bug (转)
  3. 3.6 交并比-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  4. 华为服务器bmc默认地址_智能数据中心和智慧园区:华为的单点突破与全局效应...
  5. 复旦大学计算机保研经历,#易保研#经验分享 | 个人经历分享,圆梦复旦大学!...
  6. 如何恢复误删的OneNote页面
  7. Python中class的简单介绍
  8. 归并排序(merge sort)算法实现
  9. .Net程序员学用Oracle系列(16):访问数据库(ODP.NET)
  10. [转]Android应用的自动更新
  11. java简介 ppt 精,TP1java简介.ppt
  12. java并发编程(13)-- 线程 死锁和定位
  13. 电子电路原理面试题目及答案(一)
  14. 算法4-中兴捧月杯热身赛1素数判断-热身赛2亲和串-热身赛3旅游路线-
  15. leetcode1-5
  16. JAVA版农历和阳历相互转换源码
  17. 裸机linux分区,裸机装linux系统怎么操作?
  18. jQuery插件库链接
  19. 三星android5 root包,三星N9200刷国行系统(含五件套root权限recovery SuperSU)
  20. Python攻城师的成长————MySQL数据库关键字

热门文章

  1. 捷通华声与海信共同打造优质手写手机
  2. ubantu 设置root密码
  3. Android开发 初学沙雕问题汇总
  4. Php 接口能定义常量,关于php:接口常量的优点和缺点
  5. imac 如何关闭应用
  6. 收集整理的中文分词算法相关论文、文献、期刊近100篇
  7. passport通行证设计一例
  8. 《视觉slam十四讲从理论到实践》第一讲习题自测解答
  9. android仿微信的图片选择器
  10. 计算机网络学习之TCP/IP五层协议模型、TCP和UDP