原生javascript图片自动或手动切换示例附演示源码


Posted in Javascript onSeptember 04, 2013

一、效果图
原生javascript图片自动或手动切换示例附演示源码 
二、html代码

<style type="text/css"> 
.container, .container *{margin:0; padding:0;} .container{width:408px; height:168px; overflow:hidden;position:relative;} 
.slider{position:absolute;} 
.slider li{ list-style:none;display:inline;} 
.slider img{ width:408px; height:168px; display:block;} 
.slider2{width:2000px;} 
.slider2 li{float:left;} 
.num{ position:absolute; right:5px; bottom:5px;} 
.num li{ 
float: left; 
color: #FF7300; 
text-align: center; 
line-height: 16px; 
width: 16px; 
height: 16px; 
font-family: Arial; 
font-size: 12px; 
cursor: pointer; 
overflow: hidden; 
margin: 3px 1px; 
border: 1px solid #FF7300; 
background-color: #fff; 
} 
.num li.on{ 
color: #fff; 
line-height: 21px; 
width: 21px; 
height: 21px; 
font-size: 16px; 
margin: 0 1px; 
border: 0; 
background-color: #FF7300; 
font-weight: bold; 
} 
</style> 
<div class="container" id="idTransformView2"> 
<ul class="slider slider2" id="idSlider2"> 
<li><img src="images/01.jpg"/></li> 
<li><img src="images/02.jpg"/></li> 
<li><img src="images/03.jpg"/></li> 
</ul> 
<ul class="num" id="idNum2"> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
</ul> 
</div>

三、源代码
var $ = function (id) { 
return "string" == typeof id ? document.getElementById(id) : id; 
}; var Class = { 
create: function() { 
return function() { 
this.initialize.apply(this, arguments); 
} 
} 
} 
Object.extend = function(destination, source) { 
for (var property in source) { 
destination[property] = source[property]; 
} 
return destination; 
} 
var TransformView = Class.create(); 
TransformView.prototype = { 
//容器对象,滑动对象,切换参数,切换数量 
initialize: function(container, slider, parameter, count, options) { 
if(parameter <= 0 || count <= 0) return; 
var oContainer = $(container), oSlider = $(slider), oThis = this; 
this.Index = 0;//当前索引 
this._timer = null;//定时器 
this._slider = oSlider;//滑动对象 
this._parameter = parameter;//切换参数 
this._count = count || 0;//切换数量 
this._target = 0;//目标参数 
this.SetOptions(options); 
this.Up = !!this.options.Up; 
this.Step = Math.abs(this.options.Step); 
this.Time = Math.abs(this.options.Time); 
this.Auto = !!this.options.Auto; 
this.Pause = Math.abs(this.options.Pause); 
this.onStart = this.options.onStart; 
this.onFinish = this.options.onFinish; 
oContainer.style.overflow = "hidden"; 
oContainer.style.position = "relative"; 
oSlider.style.position = "absolute"; 
oSlider.style.top = oSlider.style.left = 0; 
}, 
//设置默认属性 
SetOptions: function(options) { 
this.options = {//默认值 
Up: true,//是否向上(否则向左) 
Step: 5,//滑动变化率 
Time: 10,//滑动延时 
Auto: true,//是否自动转换 
Pause: 2000,//停顿时间(Auto为true时有效) 
onStart: function(){},//开始转换时执行 
onFinish: function(){}//完成转换时执行 
}; 
Object.extend(this.options, options || {}); 
}, 
//开始切换设置 
Start: function() { 
if(this.Index < 0){ 
this.Index = this._count - 1; 
} else if (this.Index >= this._count){ this.Index = 0; } 
this._target = -1 * this._parameter * this.Index; 
this.onStart(); 
this.Move(); 
}, 
//移动 
Move: function() { 
clearTimeout(this._timer); 
var oThis = this, style = this.Up ? "top" : "left", 
iNow = parseInt(this._slider.style[style]) || 0, 
iStep = this.GetStep(this._target, iNow); 
if (iStep != 0) { 
this._slider.style[style] = (iNow + iStep) + "px"; 
this._timer = setTimeout(function(){ oThis.Move(); }, this.Time); 
} else { 
this._slider.style[style] = this._target + "px"; 
this.onFinish(); 
if (this.Auto) { this._timer = setTimeout(function(){ oThis.Index++; oThis.Start(); }, this.Pause); } 
} 
}, 
//获取步长 
GetStep: function(iTarget, iNow) { 
var iStep = (iTarget - iNow) / this.Step; 
if (iStep == 0) return 0; 
if (Math.abs(iStep) < 1) return (iStep > 0 ? 1 : -1); 
return iStep; 
}, 
//停止 
Stop: function(iTarget, iNow) { 
clearTimeout(this._timer); 
this._slider.style[this.Up ? "top" : "left"] = this._target + "px"; 
} 
}; 
window.onload=function(){ 
function Each(list, fun){ 
for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); } 
}; 
var objs = $("idNum2").getElementsByTagName("li"); 
var tv = new TransformView("idTransformView2", "idSlider2", 408, 3, { 
onStart: function(){ Each(objs, function(o, i){ o.className = tv.Index == i ? "on" : ""; }) },//按钮样式 
Up: false 
}); 
tv.Start(); 
Each(objs, function(o, i){ 
o.onmouseover = function(){ 
o.className = "on"; 
tv.Auto = false; 
tv.Index = i; 
tv.Start(); 
} 
o.onmouseout = function(){ 
o.className = ""; 
tv.Auto = true; 
tv.Start(); 
} 
}) 
}

一看就名目了然了,所以就不细讲解代码!
演示及源文件下载
Javascript 相关文章推荐
js form action动态修改方法
Nov 04 Javascript
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
JavaScript 创建对象
Jul 17 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
第一次接触JS require.js模块化工具
Apr 17 Javascript
vue 实现类似淘宝星级评分的示例
Mar 01 Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
Apr 17 Javascript
JS实现前端路由功能示例【原生路由】
May 29 Javascript
微信小程序实现时间戳格式转换
Jul 20 Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 #Javascript
jQuery遍历Form示例代码
Sep 03 #Javascript
JS将秒换成时分秒实现代码
Sep 03 #Javascript
js导出table到excel同时兼容FF和IE示例
Sep 03 #Javascript
js综合应用实例简单的表格统计
Sep 03 #Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 #Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 #Javascript
You might like
ThinkPHP分页实例
2014/10/15 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
js实现拖拽效果
2015/02/12 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
python正则表达式之作业计算器
2016/03/18 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
python实现串口通信的示例代码
2020/02/10 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
商务主管岗位职责
2013/12/08 职场文书
信访工作者先进事迹
2014/01/17 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
陈欧的广告词
2014/03/18 职场文书
天网工程实施方案
2014/03/26 职场文书
病媒生物防治方案
2014/05/13 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
大学生就业意向书
2015/05/11 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript