【原】运动版的轮播图,有左右按钮和单独分页,原生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 ...
随机推荐
- softwareTesting_work2_question1
input类 package com.Phantom; import java.util.ArrayList; import java.util.HashMap; import java.util.L ...
- linux动态时钟探索
在早期的linux内核版本的时间概念都是由周期时钟提供的.虽然比较有效,但是,对于关注能耗电量的系统上,就不能满足长时间休眠的需求,因为周期系统要求必须在一定的频率下,周期性的处于活动状态.因此,li ...
- [GodLove]Wine93 Tarining Round #9
比赛链接: http://vjudge.net/contest/view.action?cid=48069#overview 题目来源: lrj训练指南---二维几何计算 ID Title Pro ...
- Page 指令的各个属性及其功能
转载:http://www.cnblogs.com/elleniou/archive/2012/09/09/2678101.html 语法规则: <@%page attribute1=”valu ...
- devenv命令详解
devenv [解决方案文件 | 项目文件 | 任意文件.扩展名] [开关] devenv 的第一个参数通常是一个解决方案文件或项目文件. 如果您希望在编辑器中自动打开文件, 也可以使用任何其他文 ...
- python 字符串技巧 from python cookbook
所有数据进入程序中都只是一串字节 英文字符占一个字节 汉语是两个字节 一字节byte=8bit Unicode字符串为每种语言的每种字符设定了统一并且唯一的二进制编码 big = r'This is ...
- Android App Build System
- Linux系统重启python程序
#! /usr/bin/env python #coding=utf-8 import sys import ConfigParser import urllib import urllib2 fro ...
- UDP收发buffer尺寸对收发包流量的影响
下午验证一个高流量发包问题时,发现了一个值得记录的问题:socket的收发buffer尺寸是会影响收发包的效率的,高流量通讯时,若socket的收发buffer尺寸过小会一定程度降低收发包效率. 自己 ...
- RTSP协议媒体数据发包相关的细节
最近完成了一RTSP代理网关,这是第二次开发做RTSP协议相关的开发工作了,相比11年的简单粗糙的版本,这次在底层TCP/IP通讯和RTSP协议上都有了一些新的积累,这里记录一下.基本的RTSP协议交 ...