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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
19个很有用的 JavaScript库推荐
Jun 27 Javascript
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
Node.js+Express配置入门教程
May 19 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
Jan 11 Javascript
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
JavaScript实现的超简单计算器功能示例
Dec 23 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 Javascript
用vue-cli开发vue时的代理设置方法
Sep 20 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
vue2.0 如何在hash模式下实现微信分享
Jan 22 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字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
《Python学习手册》学习总结
2018/01/17 Python
Python标准库shutil用法实例详解
2018/08/13 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
Django如何实现上传图片功能
2019/08/16 Python
python中bytes和str类型的区别
2019/10/21 Python
Django和Flask框架优缺点对比
2019/10/24 Python
python 检测图片是否有马赛克
2020/12/01 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
护理学专业推荐信
2013/12/03 职场文书
学雷锋日活动总结
2015/02/06 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL
python通过新建环境安装tfx的问题
2022/05/20 Python
JavaScript设计模式之原型模式详情
2022/06/21 Javascript