原生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 相关文章推荐
JavaScript Konami Code 实现代码
Jul 29 Javascript
js下利用控制器载入对应脚本
Jul 17 Javascript
JS判断、校验MAC地址的2个实例
May 05 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 Javascript
javascript常见数据验证插件大全
Aug 03 Javascript
Jquery实现仿京东商城省市联动菜单
Nov 19 Javascript
浅谈js数组和splice的用法
Dec 04 Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
javascript面向对象程序设计实践常用知识点总结
Jul 29 Javascript
js在HTML的三种引用方式详解
Aug 29 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 SQL之where语句生成器
2009/03/24 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
php防止用户重复提交表单
2015/11/02 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
javascript字符串循环匹配实例分析
2015/07/17 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
python在非root权限下的安装方法
2018/01/23 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
python实现斗地主分牌洗牌
2020/06/22 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
linux面试相关问题
2012/08/11 面试题
给国外客户的邀请函
2014/01/30 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
活动总结的格式
2014/05/07 职场文书
公司联欢会策划方案
2014/05/19 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
代理词怎么写
2015/05/25 职场文书
辩护意见书
2015/06/04 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python