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手动轮播图
手动轮播图,为轮播图中的一种,轮播图主要有无缝轮播,手动轮播,延迟轮播,切换轮播等等... 轮播图主要用于展现图片,新出商品,词条,又能美观网页.給网页中增加动态效果. 手动轮播,是小编认为最简单的一 ...
随机推荐
- java实现http的post和get
前话说一句:conn.setDefaultRequestProperty(key, value);这个函数是设置属性的,其实可以没有! 自己写了一个简单的get,容易控制 public stati ...
- 【一天一道LeetCode】#42. Trapping Rain Water
一天一道LeetCode系列 (一)题目 Given n non-negative integers representing an elevation map where the width of ...
- Android和iOS中Cocos2D日志为什么会出现skip frames
在你运行app在Android或iOS设备或iOS模拟器中时,日志里往往会出现一行: I/Choreographer(28956): Skipped 159 frames! The applicati ...
- Using Integrated SOA Gateway in Oracle EBS
FROM:http://blog.csdn.net/pan_tian/article/details/10159935 Oracle EBS如何与第三方系统相集成?比如这样的需求,X系统知道物料编码, ...
- SpannableString 给TextView添加不同的显示样式
TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色.字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置 myT ...
- Java学习网站大全
Java学习网站 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM的JAVA专题--永远的蓝色巨人 http://www.hu ...
- 总结一下 Spring的IOC、DI
国庆节刚过,应一些朋友的提问,总结一下Spring中IOC也即DI的通俗理解. 网友wm5920解释: IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件 ...
- 演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史
演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史 原文出处: 少数派 9 月 18 日苹果就将推出 iOS 8 正式版了,从 2007 年发布第一代 iPhone 时搭载在 iPh ...
- C# 操作Excel数据透视表
一.概述 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等,可动态地改变透视表版面布置,也可以重新安排行号.列标和页字段.当改变版面布置时,数据透视表也会按照新的 ...
- myeclipse10破解
原本一直使用eclipse,但是写起web还是不太方便,由于idea使用不太顺手不太爱用.原来一直不能破解,今天迫不得已又拿起myeclipse仔细搞一番.下面是遇到的问题的总结. 不成功原因一:.原 ...