原生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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
csdn 论坛技术区平均给分功能
Nov 07 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
Mar 17 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
Jun 14 Javascript
js实现幻灯片播放图片示例代码
Nov 07 Javascript
js实现带进度条提示的多视频上传功能
Dec 13 Javascript
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
使用store来优化React组件的方法
Oct 23 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
React实现评论的添加和删除
Oct 20 Javascript
vue3.0搭配.net core实现文件上传组件
Oct 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获取字符串的编码格式的方法(函数)
2013/06/21 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python中datetime常用时间处理方法
2015/06/15 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
python实时监控cpu小工具
2018/06/21 Python
python调用摄像头拍摄数据集
2019/06/01 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
通过python检测字符串的字母
2020/02/18 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
仓库管理专业个人自我评价范文
2013/11/11 职场文书
党委班子剖析材料
2014/08/21 职场文书
2014小学年度工作总结
2014/12/20 职场文书