原生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 相关文章推荐
拖动布局之保存布局页面cookies篇
Oct 29 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 Javascript
Javascript遍历table中的元素示例代码
Jul 08 Javascript
如何让一个json文件显示在表格里【实现代码】
May 09 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
Jul 05 Javascript
jquery+css3实现熊猫tv导航代码分享
Feb 12 jQuery
element-ui中的select下拉列表设置默认值方法
Aug 24 Javascript
解决vue v-for 遍历循环时key值报错的问题
Sep 06 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
Sep 30 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 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 get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
PHP实现事件机制的方法
2015/07/10 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
vue.js表格分页示例
2016/10/18 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
用pycharm开发django项目示例代码
2018/10/24 Python
python中if及if-else如何使用
2020/06/02 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
技能培训通讯稿
2015/07/18 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers