仿照新浪微薄 删除冒泡提示效果
模仿新浪微薄 删除冒泡提示效果
看新浪微薄的冒泡删除效果挺不错,大大提升了用户的体验,大致想了个思路,只实现了基本的效果,还要加上鼠标点位,弹出层的写入等操作。
下面是一个简单的例子,通过一个定义了position:absolute属性的层作为遮罩层,然后通过setInterval()来改变内容层的bottom属性:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试</title> </head> <body> <style type="text/css"> .eg{width:20px;height:14px;margin-left:250px;color:#000;text-decoration:none;} .yin{width:120px;height:80px;overflow:hidden;position:absolute;left:210px;top:300px;} #nay{width:116px;height:30px;margin-top:5px;background-color:#fff;position:relative;border:1px solid #ccc;box-shadow:4px 4px 4px #333;} </style> <script type="text/javascript"> /** * 模仿新浪微薄 删除冒泡提示 * 用一个div作为遮罩层 设置这个div的position:absolute * 内容层设置position:relative 通过setInterval来改变 * 内容层的bottom值, */ function maopao(pid,ev){ var topH = 2; var timer = setInterval(function(){ var NtopH = document.getElementById('nay').style.bottom; NtopH = NtopH.replace('px',''); NtopH = parseInt(NtopH); if(NtopH > -1){ clearInterval(timer); }else{ document.getElementById('nay').style.bottom = (NtopH + 20) + "px"; } },100); } function quxiao(){ var topH = -80; var timer = setInterval(function(){ var NtopH = document.getElementById('nay').style.bottom; NtopH = NtopH.replace('px',''); NtopH = parseInt(NtopH); if(NtopH < -80){ clearInterval(timer); }else{ document.getElementById('nay').style.bottom = (NtopH - 20) + "px"; } },100); } </script> js冒泡弹出<br/> <hr/> <br/> <br/> <div style="width:300px;height:300px;margin:0 auto;border:1px solid #ccc;"> </div> <div id='lay' class='yin'> <div id='nay' style="bottom:-80px"><button>确定</button> <button onclick="quxiao()">取消</button></div> </div> <a class="eg" onclick="maopao('lay',this)" href="javascript:void(0)">删除</a> </body> </html>
1 楼
王斌_code
2011-11-18
效果有点生硬,用jquery可以省不少事,而且效果很好
2 楼
王斌_code
2011-11-18
有bug,先点删除,再点取消,在冒泡消失前,点击删除(构造事件的多重触发),再点击删除,就会出现问题了!没有加入到事件的多重触发导致的事件紊乱的机制
3 楼
myfreespace
2011-11-23
嗯 谢谢提示,正在修改中