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 相关文章推荐
jQuery 加上最后自己的验证
Nov 04 Javascript
javascript encodeURI和encodeURIComponent的比较
Apr 03 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
Jul 13 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
JavaScript DOM元素尺寸和位置
Apr 13 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
vue中遇到的坑之变化检测问题(数组相关)
Oct 13 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
uploadify插件实现多个图片上传并预览
Sep 30 Javascript
微信小程序利用button控制条件标签的变量问题
Mar 15 Javascript
JavaScript实现贪吃蛇游戏
Jun 16 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
关于文本留言本的分页代码
2006/10/09 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
如何用JQuery进行表单验证
2013/05/29 面试题
设计毕业生简历中的自我评价
2013/10/01 职场文书
酒吧总经理岗位职责
2013/12/10 职场文书
主持人演讲稿范文
2013/12/28 职场文书
自我鉴定注意事项
2014/01/19 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
学校中秋节活动总结
2015/03/23 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript