JS实现带缓冲效果打开、关闭、移动一个层的方法


Posted in Javascript onMay 09, 2015

本文实例讲述了JS带缓冲效果打开、关闭、移动一个层的方法。分享给大家供大家参考。具体实现方法如下:

<!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" lang="gb2312">
<head>
<title>JavaScript缓冲打开层</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<style type="text/css">
* {
margin:0; padding:0;
}
body {
margin:5px auto; text-align:center; background:#f0f0f0;
}
#d1 {
position:absolute; top:20px;
left:20px; width:100px; height:60px;
border:1px solid #808;
}
#d2 {
position:absolute; top:100px;
left:20px; width:100px; height:60px;
border:1px solid #808;
}
#open1, #close1, #open2, #close2 {
cursor:pointer; background:#ccf; margin:5px;
}
#open1, #open2 {
display:block;
}
#close1, #close2 {
display:none;
}
</style>
</head>
<body>
<div id="d1">
移动位置
<span id="open1" onclick="fo1()">Open</span>
<span id="close1" onclick="fc1()">Close</span>
</div>
<div id="d2">
改变大小
<span id="open2" onclick="fo2()">Open</span>
<span id="close2" onclick="fc2()">Close</span>
</div>
<div id="debug">AAA</div>
<script type="text/javascript">
//<[CDATA[
var sl = 20; //初始left值
var el = 500; //结束left值
var sw = 100;//初始width值
var ew = 580;//结束width值
var p = 10; //缓冲变量
var t = 20; //时间变量
var d1 = document.getElementById('d1');
var d2 = document.getElementById('d2');
var debug = document.getElementById('debug');
var open1 = document.getElementById('open1');
var close1 = document.getElementById('close1');
var open2 = document.getElementById('open2');
var close2 = document.getElementById('close2');
function fo1() {
var cl = parseInt(getStyle(d1,'left'));
//当前left值
if (cl<el) {
d1.style.left = cl + Math.ceil((el-cl)/p) + 'px';
//当前值+缓冲增量
debug.innerHTML = getStyle(d1,'left');
//cl + 'px';
setTimeout('fo1()', t);
} else {
d1.style.left = el + 'px';
open1.style.display = 'none';
close1.style.display = 'block';
}
}
function fc1() {
var cl = parseInt(getStyle(d1,'left'));
//当前left值
if (cl>sl) {
d1.style.left = cl - Math.ceil((cl-sl)/p) + 'px';
//当前值-缓冲增量
debug.innerHTML = getStyle(d1,'left');
//cl + 'px';
setTimeout('fc1()', t);
} else {
d1.style.left = sl + 'px';
open1.style.display = 'block';
close1.style.display = 'none';
}
}
function fo2() {
var cw = parseInt(getStyle(d2,'width'));
//当前width值
if (cw<ew) {
d2.style.width = cw + Math.ceil((ew-cw)/p) + 'px';
//当前值+缓冲增量
debug.innerHTML = getStyle(d2,'width');
//cw + 'px';
setTimeout('fo2()', t);
} else {
d2.style.width = ew + 'px';
open2.style.display = 'none';
close2.style.display = 'block';
}
}
function fc2() {
var cw = parseInt(getStyle(d2,'width'));
//当前width值
if (cw>sw) {
d2.style.width = cw - Math.ceil((cw-sw)/p) + 'px';
//当前值-缓冲增量
debug.innerHTML = getStyle(d2,'width');
//cw + 'px';
setTimeout('fc2()', t);
} else {
d2.style.width = sw + 'px';
open2.style.display = 'block';
close2.style.display = 'none';
}
}
function getStyle( elem, name ) { 
if (elem.style[name]) { return elem.style[name]; } 
else if (elem.currentStyle) { return elem.currentStyle[name]; } 
else if (document.defaultView && document.defaultView.getComputedStyle){
name = name.replace(/([A-Z])/g,"-$1"); 
name = name.toLowerCase(); 
var s = document.defaultView.getComputedStyle(elem,""); 
return s && s.getPropertyValue(name); 
} 
else { return null; } 
}
//]]>
</script>
</body>
</html>

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

Javascript 相关文章推荐
说明你的Javascript技术很烂的五个原因
Apr 26 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
JavaScript获取页面中表单(form)数量的方法
Apr 03 Javascript
JS代码实现table数据分页效果
May 26 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
jQuery事件用法详解
Oct 06 Javascript
ECMAScript6--解构
Mar 30 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
微信小程序页面上下滚动效果
Nov 18 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
Oct 11 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 #Javascript
javasript实现密码的隐藏与显示
May 08 #Javascript
jquery实现动态改变div宽度和高度
May 08 #Javascript
jquery右下角自动弹出可关闭的广告层
May 08 #Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
May 08 #Javascript
JavaScript实现自动变换表格边框颜色
May 08 #Javascript
JavaScript基于setTimeout实现计数的方法
May 08 #Javascript
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
Python用户自定义异常的实现
2020/12/25 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
印度低票价航空公司:GoAir
2017/10/11 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
临床医学专业毕业生的自我评价
2013/10/17 职场文书
务工证明怎么写
2015/06/18 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书