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 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
chrome浏览器如何断点调试异步加载的JS
Sep 05 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
Nov 18 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
Feb 27 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
Mar 04 Javascript
JS实现新建文件夹功能
Jun 17 Javascript
ES6学习教程之块级作用域详解
Oct 09 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
Nov 17 Javascript
详解Vue Elememt-UI构建管理后台
Feb 27 Javascript
JSON 入门教程基础篇 json入门学习笔记
Sep 22 Javascript
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
django解决跨域请求的问题详解
2019/01/20 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
python 深度学习中的4种激活函数
2020/09/18 Python
python 怎样进行内存管理
2020/11/10 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
金融专业应届生求职信
2013/11/02 职场文书
政审证明材料
2015/06/19 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技