JS简单实现动画弹出层效果


Posted in Javascript onMay 05, 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>
<title>动画弹出层</title>
<style>
.list{
position:relative;;
background:#eee;
border:1px #ccc solid;
margin:10px;
height:30px;
width:100px;
cursor :pointer ;
}
.listShow{
position:relative;
background:#eff;
border:1px #ddd solid;
margin:10px;
height:30px;
width:100px;
cursor :pointer ;
}
.comment{
position:absolute;
left:0;
display:none;
position:absolute;
border:1px #ccc solid;
background:#fee;
width:200px;
height:200px;
overflow:hidden;
z-index:100;
}
</style>
</head>
<body>
<div class="" id="show">
0
</div>
<div class="list" id="list1">1
<div class="comment" id="comment1">内容显示111<br/>
</div>
<div class="list" id="list2">2
<div class="comment" id="comment2">内容显示222</div>
</div>
<div class="list" id="list3">3
<div class="comment" id="comment3">内容显示333</div>
</div>
</body>
</html>
<script>
var zindex=0;
function $id(id){
return document.getElementById(id);
}
var Bind = function(object,fun){
var args = Array.prototype.slice.call(arguments).slice(2);
return function(){
return fun.apply(object,args);
}
}
function addEventHandler(oTarget, sEventType, fnHandler){ 
if(oTarget.addEventListener){oTarget.addEventListener(sEventType, fnHandler, false);}
else if(oTarget.attachEvent){oTarget.attachEvent('on' + sEventType, fnHandler);}
else{oTarget['on' + sEventType] = fnHandler;}
}
var Shower=function(){
this.list=null;
this.comment=null;
this.moveLeft=80; 
this.moveTop=20;
this.height=150;
this.width=250;
this.time=800;
this.init=function(lisObj,comObj){
this.list=lisObj;
this.comment=comObj;
var _this=this;
this._fnMove=Bind(this,this.move);
(function(){
var obj=_this;
addEventHandler(obj.list,"click",obj._fnMove);
})();
};
this.move=function(){
var _this=this;
var w=0; 
var h=0; 
var height=0; //弹出div的高
var width=0; //弹出div的宽
var t=0;
var startTime = new Date().getTime();//开始执行的时间
if(!_this.comment.style.display||_this.comment.style.display=="none"){
_this.comment.style.display="block";
_this.comment.style.height=0+"px";
_this.comment.style.width=0+"px";
_this.list.style.zIndex=++zindex;
_this.list.className="listShow";
var comment=_this.comment.innerHTML; 
_this.comment.innerHTML=""; //去掉显示内容
var timer=setInterval(function(){
var newTime = new Date().getTime();
var timestamp = newTime - startTime;
_this.comment.style.left=Math.ceil(w)+"px";
_this.comment.style.top=Math.ceil(h)+"px";
_this.comment.style.height=height+"px";
_this.comment.style.width=width+"px";
t++;
var change=(Math.pow((timestamp/_this.time-1), 3) +1); //根据运行时间得到基础变化量
w=_this.moveLeft*change;
h=_this.moveTop*change;
height=_this.height*change;
width=_this.width*change;
$id("show").innerHTML=w;
if(w>_this.moveLeft){
clearInterval(timer);
_this.comment.style.left=_this.moveLeft+"px";

_this.comment.style.top=_this.moveTop+"px"; _this.comment.style.height=_this.height+"px";

_this.comment.style.width=_this.width+"px";
_this.comment.innerHTML=comment; //回复显示内容
}
},1,_this.comment);
}else{
_this.hidden();
}
}
this.hidden=function(){
var _this=this;
var flag=1;
var hiddenTimer=setInterval(function(){
if(flag==1){
_this.comment.style.height=parseInt(_this.comment.style.height)-10+"px";
}else{ _this.comment.style.width=parseInt(_this.comment.style.width)-15+"px";
_this.comment.style.left=parseInt(_this.comment.style.left)+5+"px";
}
if(flag==1 && parseInt(_this.comment.style.height)<10){
flag=-flag;
}
if(parseInt(_this.comment.style.width)<20){
clearInterval(hiddenTimer);
_this.comment.style.left="0px";
_this.comment.style.top="0px";
_this.comment.style.height="0px";
_this.comment.style.width="0px";
_this.comment.style.display="none";
if(_this.list.style.zIndex==zindex){
zindex--;
};
_this.list.style.zIndex=0;
_this.list.className="list";
}
},1)
}
}
window.onload=function(){
//建立各个菜单对象
var shower1=new Shower();
shower1.init($id("list1"),$id("comment1"));
var shower2=new Shower();
shower2.init($id("list2"),$id("comment2"));
var shower3=new Shower();
shower3.init($id("list3"),$id("comment3"));
}
</script>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
js类的静态属性和实例属性的理解
Oct 01 Javascript
JavaScript 通过模式匹配实现重载
Aug 12 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
手机Web APP如何实现分享多平台功能
Aug 19 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
Jul 20 Javascript
vue动态改变背景图片demo分享
Sep 13 Javascript
layui实现数据分页功能(ajax异步)
Jul 27 Javascript
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
教你使用javascript简单写一个页面模板引擎
May 05 #Javascript
关于延迟加载JavaScript
May 05 #Javascript
Javascript闭包(Closure)详解
May 05 #Javascript
javascript实现仿IE顶部的可关闭警告条
May 05 #Javascript
JS实现点击按钮后框架内载入不同网页的方法
May 05 #Javascript
JS实现随机乱撞彩色圆球特效的方法
May 05 #Javascript
jquery实现图片随机排列的方法
May 04 #Javascript
You might like
非常好的php目录导航文件代码
2006/10/09 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
JavaScript 学习技巧
2010/02/17 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
JS继承 笔记
2011/07/13 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
javascript编写简易计算器
2017/05/06 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
python列表去重的二种方法
2014/02/14 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
python机器人行走步数问题的解决
2018/01/29 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python按比例随机切分数据的实现
2019/07/11 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
大学学年自我鉴定
2013/10/28 职场文书
宿舍违规检讨书
2014/01/12 职场文书
企业环保标语
2014/06/10 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
单位作风建设自查报告
2014/10/23 职场文书
董事长助理工作总结2015
2015/07/23 职场文书