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 相关文章推荐
input+select(multiple) 实现下拉框输入值
May 21 Javascript
浅析hasOwnProperty方法的应用
Nov 20 Javascript
Jquery倒计时源码分享
May 16 Javascript
js判断手机端(Android手机还是iPhone手机)
Jul 22 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
JQuery点击行tr实现checkBox选中的简单实例
May 26 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
Feb 09 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
Nov 04 Javascript
vue3种table表格选项个数的控制方法
Apr 14 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
一个ftp类(ini.php)
2006/10/09 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
vue实现计算器功能
2020/02/22 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
python使用电子邮件模块smtplib的方法
2016/08/28 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
下载官网python并安装的步骤详解
2019/10/12 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
土木工程专业个人求职信
2013/12/05 职场文书
采购部部门职责
2013/12/15 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
监护人证明
2015/06/19 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers