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 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
Iframe thickbox2.0使用的方法
Mar 05 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
Nov 25 Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
angular中实现li或者某个元素点击变色的两种方法
Jul 27 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
基于datepicker定义自己的angular时间组件的示例
Mar 14 Javascript
利用原生JS实现data方法示例代码
May 28 Javascript
Postman环境变量全局变量使用方法详解
Aug 13 Javascript
js实现页面导航层级指示效果
Aug 25 Javascript
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 多个submit提交表单 处理方法
2009/07/07 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP xpath()函数讲解
2019/02/11 PHP
js中判断控件是否存在
2010/08/25 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
javascript闭包入门示例
2014/04/30 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
python简单实现基数排序算法
2015/05/16 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python next()和iter()函数原理解析
2020/02/07 Python
Python netmiko模块的使用
2020/02/14 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
文明教师事迹材料
2014/01/16 职场文书
培训专员岗位职责
2014/02/26 职场文书
安全责任协议书
2014/04/21 职场文书
室内趣味活动方案
2014/08/24 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
详解OpenCV曝光融合
2022/04/29 Python