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 继承详解(二)
Jul 13 Javascript
Javascript结合css实现网页换肤功能
Nov 02 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
js异常捕获方法介绍
Apr 10 Javascript
js去空格技巧分别去字符串前后、左右空格
Oct 21 Javascript
动态加载js、css等文件跨iframe实现
Feb 24 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
JS实现为排序好的字符串找出重复行的方法
Mar 02 Javascript
js 获取元素所有兄弟节点的实现方法
Sep 06 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 Javascript
Vue渲染过程浅析
Mar 14 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 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
PHP中的string类型使用说明
2010/07/27 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
JavaScript常用工具函数库汇总
2020/09/17 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
Python实现Kmeans聚类算法
2020/06/10 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
Python3几个常见问题的处理方法
2019/02/26 Python
面向对象编程OOP的优点
2013/01/22 面试题
如何获取某个日期是当月的最后一天
2013/12/05 面试题
Linux文件系统类型
2012/02/15 面试题
会计学应届毕业生推荐信
2013/11/04 职场文书
平安校园建设方案
2014/05/02 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
会计求职自荐信范文
2015/03/04 职场文书
孔子观后感
2015/06/08 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
Python turtle实现贪吃蛇游戏
2021/06/18 Python