JavaScript实现图片DIV竖向滑动的方法


Posted in Javascript onApril 25, 2015

本文实例讲述了JavaScript实现图片DIV竖向滑动的方法。分享给大家供大家参考。具体实现方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>图片滑动展示效果</title>
<script type="text/javascript">
var $$ = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
};
function Event(e){
var oEvent = document.all ? window.event : e;
if (document.all) {
if(oEvent.type == "mouseout") {
oEvent.relatedTarget = oEvent.toElement;
}else if(oEvent.type == "mouseover") {
oEvent.relatedTarget = oEvent.fromElement;
}
}
return oEvent;
}
function addEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
};
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 GlideView = Class.create();
GlideView.prototype = {
//容器对象 容器宽度 展示标签 展示宽度
initialize: function(obj, iHeight, sTag, iMaxHeight, options) {
var oContainer = $$(obj), oThis=this, len = 0;
this.SetOptions(options);
this.Step = Math.abs(this.options.Step);
this.Time = Math.abs(this.options.Time);
this._list = oContainer.getElementsByTagName(sTag);
len = this._list.length;
this._count = len;
this._height = parseInt(iHeight / len);
this._height_max = parseInt(iMaxHeight);
this._height_min = parseInt((iHeight - this._height_max) / (len - 1));
this._timer = null;
this.Each(function(oList, oText, i){
oList._target = this._height * i;//自定义一个属性放目标left
oList.style.top = oList._target + "px";
oList.style.position = "absolute";
addEventHandler(oList, "mouseover", function(){ oThis.Set.call(oThis, i); });
})
//容器样式设置
oContainer.style.height = iHeight + "px";
oContainer.style.overflow = "hidden";
oContainer.style.position = "relative";
//移出容器时返回默认状态
addEventHandler(oContainer, "mouseout", function(e){
//变通防止执行oList的mouseout
var o = Event(e).relatedTarget;
if (oContainer.contains ? !oContainer.contains(o) : oContainer != o && !(oContainer.compareDocumentPosition(o) & 16)) oThis.Set.call(oThis, -1);
})
},
//设置默认属性
SetOptions: function(options) {
this.options = {//默认值
Step:20,//滑动变化率
Time:3,//滑动延时
TextTag:"",//说明容器tag
TextHeight: 0//说明容器高度
};
Object.extend(this.options, options || {});
},
//相关设置
Set: function(index) {
if (index < 0) {
//鼠标移出容器返回默认状态
this.Each(function(oList, oText, i){ oList._target = this._height * i; if(oText){ oText._target = this._height_text; } })
} else {
//鼠标移到某个滑动对象上
this.Each(function(oList, oText, i){
oList._target = (i <= index) ? this._height_min * i : this._height_min * (i - 1) + this._height_max;
if(oText){ oText._target = (i == index) ? 0 : this._height_text; }
})
}
this.Move();
},
//移动
Move: function() {
clearTimeout(this._timer);
var bFinish = true;//是否全部到达目标地址
this.Each(function(oList, oText, i){
var iNow = parseInt(oList.style.top), iStep = this.GetStep(oList._target, iNow);
if (iStep != 0) { bFinish = false; oList.style.top = (iNow + iStep) + "px"; }
})
//未到达目标继续移动
if (!bFinish) { var oThis = this; this._timer = setTimeout(function(){ oThis.Move(); }, this.Time); }
},
//获取步长
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;
},
Each:function(fun) {
for (var i = 0; i < this._count; i++)
fun.call(this, this._list[i], (this.Showtext ? this._text[i] : null), i);
}
};
</script>
<style type="text/css">
#idGlideView {
height:314px;
width:325px;
margin:0 auto;
}
#idGlideView div {
width:325px;
height:314px;
}
</style>
</head>
<body>
<div id="idGlideView">
<div style="background-color:#006699;"> 鼠标移到这里试试看!</div>
<div style="background-color:#FF9933;"> 鼠标移到这里试试看!</div>
</div>
<div>https://3water.com/</div>
<SCRIPT>
var gv = new GlideView("idGlideView", 314, "div", 280,"");
</SCRIPT>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
Mar 17 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
用原生js做个简单的滑动效果的回到顶部
Oct 15 Javascript
JavaScript中实现sprintf、printf函数
Jan 27 Javascript
Angularjs的Controller间通信机制实例分析
Nov 07 Javascript
jquery插件bootstrapValidator数据验证详解
Nov 09 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
js 发布订阅模式的实例讲解
Sep 10 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 Javascript
微信小程序搭建自己的Https服务器
May 02 Javascript
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
JavaScript实现梯形乘法表的方法
Apr 25 #Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
Apr 25 #Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 #Javascript
在线所见即所得HTML编辑器的实现原理浅析
Apr 25 #Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
Apr 25 #Javascript
Node.js和MongoDB实现简单日志分析系统
Apr 25 #Javascript
node.js操作mongodb学习小结
Apr 25 #Javascript
You might like
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
php无限极分类实现方法分析
2019/07/04 PHP
JavaScript静态的动态
2006/09/18 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
AngularJS内置指令
2015/02/04 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
东方电视购物:东方CJ
2016/10/12 全球购物
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
表达自我的市场:Society6
2018/08/01 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
教师自我评价范文
2013/12/16 职场文书
颁奖典礼主持词
2014/03/25 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
停电放假通知
2015/04/14 职场文书
2016年春节问候语
2015/11/11 职场文书
Python编程编写完善的命令行工具
2021/09/15 Python