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和CSS交互的5种方法
Apr 02 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
js中常用的Tab切换效果(推荐)
Aug 30 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
Mar 07 Javascript
在Vue组件上动态添加和删除属性方法
Feb 23 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
node跨域转发 express+http-proxy-middleware的使用
May 31 Javascript
layui递归实现动态左侧菜单
Jul 26 Javascript
三步实现ionic3点击退出app程序
Sep 17 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
JavaScript实现滑动门效果
Jan 18 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
php-fpm配置详解
2014/02/12 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python实现中值滤波去噪方式
2019/12/18 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
物流业务员岗位职责
2014/02/08 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
庆元旦活动总结
2014/07/09 职场文书
2014年国庆节寄语
2014/09/19 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
医院志愿者活动总结
2015/05/06 职场文书
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android