3、js无缝滚动轮播
另一个无缝滚动轮播,带暂停,由于js是异步,用C面向过程的思想开始会很怪异很怪异,因为当你定时器里面需要执行的函数时间比较长或是有一段延时时,异步的代码会完全不同,但习惯就好了。
这个代码有几个问题,后续会优化:
1、由于css定位margin的问题,并非几张轮播的图片移动的距离一致,故而你会看到两个很冗余的if代码,那个判断都固定死了
2、这种定时器嵌套理解起来比较容易,但有一个较大的问题是:当执行到setTimeout时,你会发现鼠标移入移出暂停轮播的效果失效,因为这是程序执行的是一段空的延时,才会出现这样
3、要实现带暂停的轮播,上面有这两个缺陷,用户体验会有一丢丢不perfect,当然有更好更高级的方式实现,这里就当做自己刚入门的一段回忆好了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js-text</title>
<style>
html,body,div,ul,li{margin:0;padding:0}
.div11{width:895px;height:165px;margin:300px auto 0;position:relative;border-radius:10px;
overflow:hidden}
#div1 ul{position:absolute;left:0;top:0;}
#div1 ul li{width:220px;height:165px;float:left;list-style:none;margin:0 2px;}
#div1 ul img{width:220px;height:165px;border-radius:10px;}
/*#div1 img{width:33px;height:33px;}*/
.cDirection {width:955px;height:30px;margin:0 auto;}
.cDirection img{width:30px;height:30px;}
.cDirection .right{float:right}
body{background:url("images/background2.jpg")}
</style>
<script>
window.onload=function (){
var oDiv1=document.getElementById('div1');
var oDiv2=document.getElementById('direction');
var oUl=oDiv1.getElementsByTagName('ul')[0];
var oLi=oDiv1.getElementsByTagName('li');
var oA=oDiv2.getElementsByTagName('a');
var nSpeed=2;
var time;
var flag=0;
oUl.style.width=(oLi[0].offsetWidth+4)*oLi.length+'px';
function move(){
if(oUl.offsetLeft<-oUl.offsetWidth/2){
oUl.style.left='0';
}
if(oUl.offsetLeft>0){
oUl.style.left=-oUl.offsetWidth/2+'px';
}
oUl.style.left=oUl.offsetLeft+nSpeed+'px';
// console.log(oUl.offsetLeft);
}
var lunBo=function(){
clearInterval(time); time=setInterval(function(){
move();
// if((oUl.offsetLeft)%(oLi[0].offsetWidth+nSpeed)==0&&oUl.offsetLeft!=-888)
if((oUl.offsetLeft==-670||oUl.offsetLeft==-446||oUl.offsetLeft==-222||oUl.offsetLeft==0)&&nSpeed==2)
{
clearInterval(time);
setTimeout(function(){
lunBo();
},1000);
}
if((oUl.offsetLeft==-670||oUl.offsetLeft==-446||oUl.offsetLeft==-222||oUl.offsetLeft==-894)&&nSpeed==-2)
{
clearInterval(time);
setTimeout(function(){
lunBo();
},1000);
}
},10);
};
// var newLunBo=new lunBo();
lunBo();
oDiv1.onmouseover=function (){clearInterval(time)};
oDiv1.onmouseout=function (){lunBo()};
oA[0].onmouseover=function (){nSpeed=-2};
oA[1].onmouseover=function (){nSpeed=2};
};
</script>
</head>
<body>
<div class="div11" id="div1">
<ul>
<li><a href="javascript:"><img src="data:images/picture1.png" alt="1"></a></li>
<li><a href="javascript:"><img src="data:images/picture2.png" alt="2"></a></li>
<li><a href="javascript:"><img src="data:images/picture3.png" alt="3"></a></li>
<li><a href="javascript:"><img src="data:images/picture4.png" alt="4"></a></li>
<li><a href="javascript:"><img src="data:images/picture1.png" alt="1"></a></li>
<li><a href="javascript:"><img src="data:images/picture2.png" alt="2"></a></li>
<li><a href="javascript:"><img src="data:images/picture3.png" alt="3"></a></li>
<li><a href="javascript:"><img src="data:images/picture4.png" alt="4"></a></li>
</ul> </div>
<div class="cDirection" id="direction">
<a href="javascript:"><img src="data:images/left1.png" alt=""></a>
<a class="right" href="javascript:"><img src="data:images/right1.png" alt=""></a>
</div>
</body>
</html>
3、js无缝滚动轮播的更多相关文章
- jQuery仿淘宝图片无缝滚动轮播
自己前天,也就是1月8日的时候早上自己写了一个图片滚动轮播(基于jQuery). 其实几个月以前就有朋友问过我怎么做出和淘宝上面一样的滚动轮播,一直到现在也没有真正的写好,这次写得差不多了. 但是还有 ...
- Jquery+css实现图片无缝滚动轮播
Today,在XX学院的教学视频中,偶尔看到了Jquery+css实现图片无缝滚动轮播视频教程,虽然以前已写过类似的,但是我感觉他学的比较精简.为了方便以后做项目时直接拷贝,特地写出来,顺便和大家分享 ...
- JS实现文字向上无缝滚动轮播
效果图: 全部代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 原生JS编写兼容IE6,7,8浏览器无缝自动轮播(带按钮切换)
项目要求页面兼容IE6,7,8等浏览器,我们可能会遇到这个轮播效果,轮播板块要求:无限循环.自动轮播和手动切换功能,每一次滚动一小格,网上有很多这类插件,例如:swiper等! 但是很多都是不兼容IE ...
- 原生JS简单的无缝自动轮播
最近在不断的加强巩固js.在学习jq和vue之后发现很多东西其实都是不明所以,有些底层的东西自己不懂,到头来也只是一昧的使用,一直在用别人的东西,对自己的成长帮助也不大. 万丈高楼平地起,基础打扎实了 ...
- JS实现自动轮播图效果(js案例)
现在很多网站都有轮播图,这篇文章主要为大家详细介绍了js实现轮播图的完整代码及原理,需要的小伙伴可以参考一下. 1.轮播图主要功能: 1. 图片自动轮播(主图切换同时下面导航图片也会跟着变化) 2. ...
- JQuery 滚动轮播
css: *{margin: 0;padding: 0;}body{font-size: 12px;line-height: 24px;text-algin: center; }a{color: #f ...
- 原生js实现图片轮播思路分析
一.复习原生js实现图片轮播 1.要点 自动轮播 点击小圆圈按钮,显示相应图片 点击左右箭头,实现向前向后轮播图片 2.实现思路 <div id="container"> ...
- 原生js手动轮播图
手动轮播图,为轮播图中的一种,轮播图主要有无缝轮播,手动轮播,延迟轮播,切换轮播等等... 轮播图主要用于展现图片,新出商品,词条,又能美观网页.給网页中增加动态效果. 手动轮播,是小编认为最简单的一 ...
随机推荐
- 看看腾讯是怎么做产品设计分析的 - 腾讯QQ音乐业务产品规划
- 【matlab编程】matlab随机数函数
Matlab内部函数 a. 基本随机数 Matlab中有两个最基本生成随机数的函数. 1.rand() 生成(0,1)区间上均匀分布的随机变量.基本语法: rand([M,N,P ...]) 生成排列 ...
- Hadoop 数据排序(一)
1.概述 1TB排序通常用于衡量分布式数据处理框架的数据处理能力.Terasort是Hadoop中的的一个排序作业.那么Terasort在Hadoop中是怎样实现的呢?本文主要从算法设计角度分析Ter ...
- DataLoad命令
Dataload常用命令 Dataload命令符 说明 Tab 或\{tab} 键盘Tab键,下一个单元 *UP 或\{UP} 键盘上 *DN 或\{DOWN} 键盘下 *LT 或\{LEFT ...
- 【63】关系数据库常用的sql语句总结
创建表 语法 CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件] [,<列名> <数据类型>[列级完整性约束条 ...
- Rxjava + retrofit + dagger2 + mvp搭建Android框架
最近出去面试,总会被问到我们项目现在采用的什么开发框架,不过据我的经验网络框架(volley)+图片缓存(uIl)+数据库(orm)+mvp,不过现在这套框架比较好了,现在采用什么呢?Rxjava + ...
- C语言之将无符号字符型转化为ascii码值
这个宏是在linux内核中获取的,主要的功能是能够将一个无符号字符型的参数转化为ASCII码值. ASCII : ASCII 编码里包括了128个字符.用 十进制 0 到 127 来表示 .那就对了 ...
- 使用Material Design Tint和视图详解
视图 首先来讲Material Design 视图的概念,在新的api中,新添加了z轴的概念,z轴垂直于屏幕,用来表现元素的层叠关系,z值(海拔高度)越高,元素离界面底层(水平面)越远,投影越重,这里 ...
- IDE
IDE(Integrated Development Environment,集成开发环境).DE集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用 ...
- mybatis源码之MapperMethod
/** * @author Clinton Begin * @author Eduardo Macarron * @author Lasse Voss */ //这个类是整个代理机制的核心类,对Sql ...