原生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实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
jQuery解决iframe高度自适应代码
Dec 20 Javascript
jquery ajax 同步异步的执行示例代码
Jun 23 Javascript
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
Aug 09 Javascript
实现web打印的各种方法介绍及实现代码
Jan 09 Javascript
JS中call/apply、arguments、undefined/null方法详解
Feb 15 Javascript
一系列Bootstrap导航条使用方法分享
Apr 29 Javascript
Vue 换肤的示例实践
Jan 23 Javascript
javascript实现文件拖拽事件
Mar 29 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
JS事件绑定的常用方式实例总结
Mar 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
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
jupyter notebook清除输出方式
2020/04/10 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
经理职责范文
2013/11/08 职场文书
新店开张活动方案
2014/08/24 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫