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选择器用法实例详解
Dec 17 Javascript
AngularJS单选框及多选框实现双向动态绑定
Jan 13 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
May 23 Javascript
Vue实现路由跳转和嵌套
Jun 20 Javascript
详解Vue-cli代理解决跨域问题
Sep 27 Javascript
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
详解Angular5/Angular6项目如何添加热更新(HMR)功能
Oct 10 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
Dec 03 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
关于vue组件事件属性穿透详解
Oct 28 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 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实现的简单压缩英文字符串的代码
2008/04/24 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
php session 写入数据库
2016/02/13 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
JS中操作JSON总结
2020/12/06 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
Python 除法小技巧
2008/09/06 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
简历中个人自我评价分享
2014/03/15 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
基层党员对照检查材料
2014/09/24 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
英语复习计划
2015/01/19 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
opencv检测动态物体的实现
2021/07/21 Python