深入研究jquery的弹出层----唯一兼容jquery1.9和ie火狐谷歌解决方案。
1.前言。
很多人会问,jquery弹出层嘛,hide和show一下。或者找下插件就可以了吧。我一开始也是这样想的,但是我错了,百分之99.99的插件忽视了ie7的兼容,导致样式不兼容,位置不居中。这两个是出现在这些插件上最多的。就连jquery自身的dialog也是bug多多,ie7明显样式错乱,火狐根本不能用,不知道这些开发者这样搞下去,jqueryui是不是越来越鸡肋。我敢说他们推出dialog根本没测。牢骚少发,插件做不通这件事情,还是用hide和show搞。自己写div。这里感谢这位大牛,id叫“北朝门”的大牛的博客。http://hi.baidu.com/9idea/item/d84b19c95805a413505058c0
我其实最后也想自己写了,时间比较紧。
2.直接代码,copy可以用。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb-2312" /> <title>jQuery弹出层效果</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <style> .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; background-color: black; z-index:1001; -moz-opacity: 0.8; opacity:.80; filter: alpha(opacity=80); } .white_content { display: none; position: absolute; top: 10%; left: 10%; width: 80%; height: 80%; border: 16px solid lightblue; background-color: white; z-index:1002; overflow: auto; } .white_content_small { display: none; position: absolute; top: 20%; left: 30%; width: 40%; height: 50%; border: 16px solid lightblue; background-color: white; z-index:1002; overflow: auto; } </style> <script type="text/javascript"> //弹出隐藏层 function ShowDiv(show_div,bg_div){ document.getElementById(show_div).style.display='block'; document.getElementById(bg_div).style.display='block' ; var bgdiv = document.getElementById(bg_div); bgdiv.style.width = document.body.scrollWidth; // bgdiv.style.height = $(document).height(); $("#"+bg_div).height($(document).height()); }; //关闭弹出层 function CloseDiv(show_div,bg_div) { document.getElementById(show_div).style.display='none'; document.getElementById(bg_div).style.display='none'; }; </script> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> <body> <input id="Button1" type="button" value="点击弹出层" onClick="ShowDiv('MyDiv','fade')" /> <!--弹出层时背景层DIV--> <div id="fade" class="black_overlay"> </div> <div id="MyDiv" class="white_content"> <div> <span onClick="CloseDiv('MyDiv','fade')" style="float:right">关闭</span> </div> <br /> 这里是弹出层的内容 </div> </body> </html>
3.总结。
(1)市面上的插件我基本访问了个遍。给我感受最深的是国产插件的浮躁。有的是根本没做好就急着商业化。有的也是没做好,就半途而废,苟且偷安,贻害后人,没有维护的插件是可怕的,除非已经无可挑剔。有的是已经有很多人使用,但兼容性该没考虑到的还是没考虑到,这些作者们大概也是躺在功劳簿上面睡的不省人事了吧。特别是lhgdialog,iframe的弹出层已经脱离了div管辖,ie7居中都这么大问题,还能说什么。
(2)一些开源的弹出层插件就更加了,基本的兼容都没搞定,就一直往下做了,我只能说,做多错多,害人多多。
(3)建议,开源框架提供多些提建议的空间,并且尽量简洁,我的意思,入口例子就一句话的肯定最受欢迎。