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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>层展开、关闭</title>
<style type="text/css">
#main{
width:500px; margin:100px;
height:500px;border:1px solid red
}
#test{
border:1px solid red;
display:none;width:10px;
height:10px; background:yellow
}
</style>
</head>
<body>
<input type="button" value="打开" id="bt" />
<input type="button" value="关闭" id="bt1" />
<div id="main"><div id="test"></div>
</div>
</body>
</html>
<script type="text/javascript">
function $ (o) {
return document.getElementById(o);
}
function XslideDown(obj,type,mX,num) {
if(!type){return;}
try{
var type1=type=="height"?"marginTop":"marginLeft";
var type2=type=="height"?"top":"left";
XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]);
XSetCss(obj,[type,XgetOffset(obj)[type]+num+"px"]);
if(XgetOffset(obj)[type]<mX){
setTimeout(function(){XslideDown(obj,type,mX,num);},10); 
}
else{
XSetCss(obj,[type,mX])
}
}
catch(e){}
}
function XslideUp(obj,type,mX,num) {
if(!type){return;}
try{
var type1=type=="height"?"marginTop":"marginLeft";
var type2=type=="height"?"top":"left";
XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]);
XSetCss(obj,[type,XgetOffset(obj)[type]-num+"px"]);
if(XgetOffset(obj)[type]>mX){ 
setTimeout(function(){XslideUp(obj,type,mX,num);},1); 
}
else{
XSetCss(obj,[type,mX])
obj.style.display="none";
}
}
catch(e){}
}
function XSetCss(obj,cssArgs){
if(arguments.length==2)
{ 
if(cssArgs.constructor==Object){
for(var o in cssArgs)
{
if(obj.style[o]!="undefiend")
{
obj.style[o]=cssArgs[o]; 
} 
} 
}
if(cssArgs.constructor==Array&&cssArgs.length==2){
obj.style[cssArgs[0]]=cssArgs[1]; 
}
}
}
function XgetOffset (obj) {
return {
height:obj.offsetHeight,
width:obj.offsetWidth,
top:parseInt((obj.parentNode.offsetHeight-obj.offsetHeight)/2),
left:parseInt((obj.parentNode.offsetWidth-obj.offsetWidth)/2)
}
}
function XopenDiv(o){
o.style.display="block";
XslideDown(o,"width",400,10);
XslideDown(o,"height",400,10);
}
function XcloseDiv(o){
XslideUp(o,"width",10,10);
XslideUp(o,"height",10,10);
}
$("bt").onclick=function(){
XopenDiv($("test"))
}
$("bt1").onclick=function(){
XcloseDiv($("test"))
}
</script>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript:以前写的xmlhttp池,代码
May 18 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
Jul 17 Javascript
JavaScript中的prototype使用说明
Apr 13 Javascript
JavaScript中定义函数的三种方法
Mar 12 Javascript
Vue.js基础知识汇总
Apr 27 Javascript
JavaScript程序中的流程控制语句用法总结
May 23 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
动态加载css方法实现和深入解析
Jan 18 Javascript
vue2.0与bootstrap3实现列表分页效果
Nov 28 Javascript
JS中Object对象的原型概念基础
Jan 29 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
angularJS自定义directive之带参方法传递详解
Oct 09 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 #Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 #Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 #Javascript
javasript实现密码的隐藏与显示
May 08 #Javascript
jquery实现动态改变div宽度和高度
May 08 #Javascript
jquery右下角自动弹出可关闭的广告层
May 08 #Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
May 08 #Javascript
You might like
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
php生成word并下载代码实例
2019/03/15 PHP
Javascript 解疑
2009/11/11 Javascript
javascript工具库代码
2012/03/29 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
理解javascript模块化
2016/03/28 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
js运动事件函数详解
2016/10/21 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
python实现猜数字小游戏
2020/03/24 Python
python实现列表的排序方法分享
2019/07/01 Python
django 环境变量配置过程详解
2019/08/06 Python
python实现简易学生信息管理系统
2020/04/05 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
专科应届生求职信
2013/11/24 职场文书
初中生物教学反思
2014/01/10 职场文书
企业宣传方案
2014/03/04 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
python字符串常规操作大全
2021/05/02 Python
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS