通常网站上确定有一些弹出框,不论弹出框的大小,都须要他在当前窗口垂直居中。以前手上就有一个jQuery的例子,后来才发现,他只能在第一屏垂直居中,若是滑动滚动条,弹出的框就在上方,不是很方便。请教朋友后稍做修改,成了如今的例子。javascript
代码分析css
注释已经写得很清楚了,看得懂jQuery的应该都看得懂html
function popup(popupName){ var _scrollHeight = $(document).scrollTop(),//获取当前窗口距离页面顶部高度 _windowHeight = $(window).height(),//获取当前窗口高度 _windowWidth = $(window).width(),//获取当前窗口宽度 _popupHeight = popupName.height(),//获取弹出层高度 _popupWeight = popupName.width();//获取弹出层宽度 _posiTop = (_windowHeight - _popupHeight)/2 + _scrollHeight; _posiLeft = (_windowWidth - _popupWeight)/2; popupName.css({"left": _posiLeft + "px","top":_posiTop + "px","display":"block"});//设置position } $(function(){ $(".btn1").click(function(){ popup($("#div1")); }); $(".btn2").click(function(){ popup($("#div2")); }); });
原理分析java
原理很简单,获取当前屏幕(窗体)的宽度和高度,由于不一样浏览器的窗体大小是不同的。有了这个,能够计算出来垂直居中的坐标。可是滑动了滚动条怎么依然垂直居中呢?这个时候就要获取当前窗体距离页面顶部的高度,加到刚刚的y轴坐标便可。浏览器
$(document)是获取整个网页的,$(window)是获取当前窗体的,这个要搞清楚。网站
最后把获取的坐标赋给窗体便可,窗体自己是绝对定位的,因此天然能够到窗体中间。spa
还有一点要提示一下,尽可能把弹出框的代码写到外层,例如最底部。由于若是你写到里面,他的外面若是哪里写了定位,那么弹出框将在这个容器里垂直居中,而不是在窗体的垂直居中了。相信熟练使用相对定位、绝对定位的朋友应该懂我意思。htm
>>原创文章,欢迎转载。转载请注明:转载自西门的后花园,谢谢!
>>原文连接地址:http://ons.me/339.htmlblog