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 相关文章推荐
有关于JS辅助函数inherit()的问题
Apr 07 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
Aug 05 Javascript
firefox浏览器不支持innerText的解决方法
Aug 07 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
Mar 04 Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 Javascript
webpack external模块的具体使用
Mar 10 Javascript
vue实现路由切换改变title功能
May 28 Javascript
php结合js实现多条件组合查询
May 28 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 Javascript
在weex中愉快的使用scss的方法步骤
Jan 02 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 单引号与双引号的区别
2009/11/24 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
python读取文本中的坐标方法
2018/10/14 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Python微信操控itchat的方法
2019/05/31 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
python numpy库np.percentile用法说明
2020/06/08 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
元旦晚会活动总结
2014/07/09 职场文书
2015年教研组工作总结
2015/05/04 职场文书
高三毕业感言
2015/07/30 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis