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 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
javascript 常用功能总结
Mar 18 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
Jun 23 Javascript
从0开始学Vue
Oct 27 Javascript
Ajax的概述与实现过程
Nov 18 Javascript
Angularjs中使用layDate日期控件示例
Jan 11 Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
vue移动端轻量级的轮播组件实现代码
Jul 12 Javascript
javascript实现文字跑马灯效果
Jun 18 Javascript
JavaScript严格模式不支持八进制的问题讲解
Nov 07 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实现在线阅读PDF文件的方法
2015/06/17 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
Python实现批量下载图片的方法
2015/07/08 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
简述Python2与Python3的不同点
2018/01/21 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
挑战杯创业计划书的写作指南
2014/01/07 职场文书
体育活动总结范文
2014/05/04 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
面试通知邮件
2015/04/20 职场文书
集结号观后感
2015/06/08 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
SQL Server使用导出向导功能
2022/04/08 SQL Server
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server