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 相关文章推荐
fckeditor 获取文本框值的实现代码
Feb 09 Javascript
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
js+css实现导航效果实例
Feb 10 Javascript
基于jquery实现图片上传本地预览功能
Jan 08 Javascript
JavaScript简单下拉菜单特效
Sep 13 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
AngularJS表单基本操作
Jan 09 Javascript
ajax请求data遇到的问题分析
Jan 18 Javascript
微信小程序3种位置API的使用方法详解
Aug 05 Javascript
一起写一个即插即用的Vue Loading插件实现
Oct 31 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 Javascript
使用react-virtualized实现图片动态高度长列表的问题
May 28 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在线代理转向代码
2012/05/05 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
Smarty保留变量用法分析
2016/05/23 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
Laravel find in set排序实例
2019/10/09 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
关于js datetime的那点事
2011/11/15 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
Python实现一个论文下载器的过程
2021/01/18 Python
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
销售自荐信
2013/10/22 职场文书
售后求职信范文
2014/03/15 职场文书
给校长的建议书200字
2014/05/16 职场文书
竞赛口号大全
2014/06/16 职场文书
大学生求职信
2014/06/17 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
个人租房协议书
2014/11/28 职场文书
人事主管岗位职责
2015/02/04 职场文书