【原】运动版的轮播图,有左右按钮和单独分页,原生JS版
运动版的轮播图,有左右按钮和单独分页
这个例子重点在于:
- 运动框架的复习,要灵活运动回调函数
- 始终以全局变量iNum来控制oUl的移动目的地,每次有任何动作,都是先判断iNum并改变iNum后去调用运动函数
- 刚才在复查代码的时候发现个奇怪的现象,在ie11和cent browser打开的时候居然不会滚动,iNum倒是在变化,突然想到之前在看妙味课堂的时候有老师提到一句,给要运动的元素,在加上
position:absolute后,如果不加上left:0;top:0会有兼容问题,所以,我给oUl加上了left:0;top:0;就解决了问题。
<style>ul,h2,p{padding: ;margin: ;list-style: none;}#wrap{width: 600px;height: 450px;border: 1px solid black;margin: 100px auto;position: relative;overflow: hidden;}img{width: 600px;height: 450px;}ul{overflow: hidden;position: absolute;}#list{width: 3600px;left: ;top: ;}li{float: left;}span{position: absolute;width: 40px;height: 40px;font-weight: bold;font-size: 34px;line-height: 40px;opacity: 0.6;text-align: center;top: %;margin-top: -20px;background: white;z-index: ;}#left{left: ;}#right{right: ;}span:hover{cursor: pointer;background: orangered;}#btns{bottom: 10px;right: 10px;}#btns li{width: 15px;height: 15px;background: orange;margin: 4px;cursor: pointer;}#btns li.active{background: orangered;}</style><script type="text/javascript">window.onload = function(){var oUl = document.getElementById('list');var aLi = oUl.getElementsByTagName('li');var aSpan = document.getElementsByTagName('span');var oBtn = document.getElementById('btns');var aBtn = oBtn.getElementsByTagName('li');var aImg = document.getElementsByTagName('img');var timerAuto = null;var iNum = ;var newTarget = ;var w = aImg[].offsetWidth;function getStyle(obj,attr){return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,false)[attr];}function doMove(obj,attr,dir,target,endFn){dir=parseInt(getStyle(obj,attr))<target?dir:-dir;clearInterval(obj.timer);obj.timer=setInterval(function(){var speed=parseInt(getStyle(obj,attr))+dir;if(speed>target&&dir> || speed<target&&dir<){speed=target;}obj.style[attr]=speed+'px';if(speed==target){clearInterval(obj.timer);endFn&&endFn();}},);}function changeColor(index){for (var i=; i<aBtn.length; i++) {aBtn[i].className = '';}aBtn[index].className = 'active';}function moveAuto(){clearInterval(timerAuto);timerAuto = setInterval(function(){if(iNum!=aLi.length-){iNum++;doMove(oUl,'left',,-iNum*w);}else{iNum = ;clearInterval(timerAuto);doMove(oUl,'left',,-iNum*w,moveAuto);}changeColor(iNum);},);}moveAuto();for (var i=; i<aSpan.length; i++) {aSpan[i].index = i;aSpan[i].onclick = function(){clearInterval(timerAuto);if(this.index == ){if(iNum == aLi.length - ){iNum = ;doMove(oUl,'left',,-(w*iNum),moveAuto);}else{iNum++;doMove(oUl,'left',,-(w*iNum),moveAuto);}}else{if(iNum == ){iNum = aLi.length - ;doMove(oUl,'left',,-(w*iNum),moveAuto);}else{iNum--;doMove(oUl,'left',,-(w*iNum),moveAuto);}}changeColor(iNum);};}for (var i=; i<aBtn.length; i++) {aBtn[i].index = i;aBtn[i].onmouseover = function(){changeColor(this.index);clearInterval(timerAuto);iNum = this.index;doMove(oUl,'left',,-(w*iNum));};aBtn[i].onmouseout = function(){moveAuto();};}};</script></head><body><div id="wrap"><span id="left"><</span><span id="right">></span><ul id="list"><li><img src="img/1.jpg"></li><li><img src="img/2.jpg"></li><li><img src="img/3.jpg"></li><li><img src="img/4.jpg"></li><li><img src="img/5.jpg"></li><li><img src="img/6.jpg"></li></ul><ul id="btns"><li class="active"></li><li></li><li></li><li></li><li></li><li></li></ul></div></body>
【原】运动版的轮播图,有左右按钮和单独分页,原生JS版的更多相关文章
- 少写代码帮你模块化方法 & 运动框架 & 简化轮播图
模块化就是通过每一个js里封装一个方法:用exports将他输出, 在下一个js用require的方法加载js时就会将方法输出.然后在主页面引入require.js; 模块化基本写法: define( ...
- JS原生带小白点轮播图
咱们刚刚说了js原生轮播图,现在给他加上可以随着一起走动的小圆点吧! css代码: *{ margin:0px; padding: 0px; } ul{ width: 2500px; height: ...
- 【jQuery】全功能轮播图的实现(本文结尾也有javascript版)
轮播图 图片自动切换(定时器): 鼠标悬停在图片上图片不切换(清除定时器) 鼠标悬停在按钮上时显示对应的图片(鼠标悬停事件) 鼠标悬停在图片上是现实左右箭头 点击左键切换到上一张图片,但图片为第一张时 ...
- 用原生js封装轮播图
原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不 ...
- React视角下的轮播图
天猫购物网站最显眼的就是轮播图了.我在学习一样新js库,一个新框架或新的编程思想的时候,总是感叹"入门必做选项卡,进阶须撸轮播图."作为一个React组件,它是状态操控行为的典型, ...
- 【jQuery】百分比自适应屏幕轮播图特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 基于css制作轮播图的部分效果
在轮播图中,我们可以通过鼠标在特定位置上的滑动来实现元素背景的改变.通常在制作轮播图时,我们首先想到的是js中的交互.可是,如果我们无法使用js,只能单纯的靠css又该如何实现这一效果呢?下面,本人将 ...
- 超级简单的jquery轮播图demo
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue music-抓取歌单列表数据(渲染轮播图)
下载安装新依赖 babel-runtime:对es6语法进行转译 fastclick:对移动端进行点击300毫秒延迟 ,,取消掉 babel-polyfill:API 先添加,在npm install ...
随机推荐
- Pip install lxml centOSFailed building wheel for lxml
转到虚拟环境目录:yum install libxslt-devel libxml2-devel yum install python-devel pip install lxml
- BackTrack5-r3配置网络信息
设置静态IP在BT终端输入:ifconfig -a 按回车// 查看所有网卡在BT终端输入:vi /etc/network/interfaces ...
- 我是一只IT小小鸟----读书笔记
人生如同打牌,能抓到一手好牌固然是运气好,但重要的是,你不能靠运气生活,而要琢磨怎样把手上这把看上去“不怎么样的”牌打好. 要了解一种主流的软件开发与运行平台,熟练掌握一种开发工具,这样就具备了进行开 ...
- 用HTML和CSS实现WWDC 2015上的动画效果
用HTML和CSS实现WWDC 2015上的动画效果 动画效果WWDC 2015 原文:https://cssanimation.rocks/wwdc15/ 译者:周晓楷(@Helkyle) 每年 ...
- libc++
今天测试最新的微信iOS SDK, 仅仅是建了一个空的工程,把sdk加进去运行,就报了以下错误: Undefined symbols for architecture x86_64: "op ...
- PHP Web Shell in browser
/************************************************************************************* * PHP Web She ...
- VIM-Sed常用的一些记录。。。逐渐学习。。
:[range]co[py] {address} :t :[range]m[ove] {address] 例如 :1,3t10 1-3行复制到10行后.用m就是移动了. :sort / / // ...
- Linux IO漫谈
本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Background IO可能是我们接触最频繁的系统调用,比如printf到终端,send content到对端, ...
- 【转】以 java 为例,总结下 appium 里的一方法的使用心得
转自:http://testerhome.com/topics/1043 1.关于没有name,没有ID的元素的定位---通用篇解题思路:因为没有name,id:其实剩下的选择已不多,要么xpath, ...
- ad
取消class和id前的元素限定 当你写给一个元素定义class或者id,你可以省略前面的元素限定,因为ID在一个页面里是唯一的,而clas s可以在页面中多次使用.你限定某个元素毫无意义.例如: d ...