淺談DOCTYPE對(duì)$(window).height()取值的影響
前言:公司項(xiàng)目需要用到一個(gè)彈框垂直居中,網(wǎng)上類似的垂直居中彈出層大同小異,因?yàn)轫?xiàng)目是基于Jquery 下的,所以用$(window).height()-layer.height())/2 +$(document).scrollTop()取得垂直的位移。測(cè)了各種瀏覽器沒(méi)問(wèn)題,后臺(tái)人員移值到項(xiàng)目中后,出問(wèn)題了,當(dāng)頁(yè)面超出一屏?xí)r,在 chrome和FF下,彈出框不是在當(dāng)前屏的垂直居中,而是相對(duì)于整個(gè)網(wǎng)頁(yè)的居中。
查閱各方資料,所有結(jié)論都指出:
1.窗口高度,$(window).height()
2.文檔高度,$(document).height()
3.被卷起的高度,$(window).scrollTop()
找到原因:而后,發(fā)現(xiàn)后臺(tái)人員的頁(yè)面沒(méi)有設(shè)DOCTYPE,所以在chrome中,$(window).height()=$(document).height(),$(document).height()表示在網(wǎng)頁(yè)實(shí)際內(nèi)容高度沒(méi)有滿一屏?xí)r表示整個(gè)窗口的高度(窗口放大縮小時(shí)這個(gè)值會(huì)變化),頁(yè)當(dāng)超過(guò)一屏?xí)r表示為整個(gè)網(wǎng)頁(yè)內(nèi)容的實(shí)際高度,這點(diǎn)沒(méi)有異議,跟設(shè)不設(shè)DOCTYPE沒(méi)有影響。但是:$(window).height()在DOCTYPE為transitional.dtd時(shí)無(wú)論網(wǎng)頁(yè)內(nèi)容實(shí)際高度超不超出滿屏情況下,都等于是整個(gè)窗口的高度(窗口放大縮小時(shí)這個(gè)值會(huì)變化),如果沒(méi)有設(shè)DOCTYPE則$(window).height()=$(document).height(),在即當(dāng)內(nèi)容超一屏?xí)r$(window).height()為網(wǎng)頁(yè)實(shí)際高度,并不是所說(shuō)的等于窗口高度。
解決辦法:
s要取得窗口的高度,只能根據(jù)DOCTYPE來(lái)做相應(yīng)的更改,在沒(méi)有設(shè)DOCTYPE時(shí)做如下處理
if($(document).height()>=$(window).height()){
_windowHeight=document.body.clientHeight;
}else{//alert($(window).height());
_windowHeight=$(document).height();
};
在有設(shè)DOCTYPE為transitional.dtd時(shí),windowHeight=$(window).height()
以上這篇淺談DOCTYPE對(duì)$(window).height()取值的影響就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺析JQuery獲取和設(shè)置Select選項(xiàng)的常用方法總結(jié)
本篇文章是對(duì)JQuery獲取和設(shè)置Select選項(xiàng)的一些常用方法進(jìn)行了匯總介紹,有需要的朋友可以參考一下2013-07-07
判斷對(duì)象是否Window的實(shí)現(xiàn)代碼
判斷對(duì)象是否Window的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2012-01-01
jQuery中removeProp()方法用法實(shí)例
這篇文章主要介紹了jQuery中removeProp()方法用法,實(shí)例分析了removeProp()方法的功能、定義及刪除由prop()方法設(shè)置的屬性時(shí)的使用技巧,需要的朋友可以參考下2015-01-01
解決jQuery使用JSONP時(shí)產(chǎn)生的錯(cuò)誤
這篇文章主要介紹了解決jQuery使用JSONP時(shí)產(chǎn)生的錯(cuò)誤,需要的朋友可以參考下2015-12-12
jQuery EasyUI 組件加上“清除”功能實(shí)例詳解
在使用 EasyUI 各表單組件時(shí),尤其是使用 ComboBox(下拉列表框)、DateBox(日期輸入框)、DateTimeBox(日期時(shí)間輸入框)這三個(gè)組件時(shí),經(jīng)常會(huì)遇到下拉框或日期只允許選擇、不允許手動(dòng)輸入功能,怎么解決呢,下面小編給大家分享解決方案,一起看看吧2017-04-04
JS和JQUERY獲取頁(yè)面大小,滾動(dòng)條位置,元素位置(示例代碼)
這篇文章主要是對(duì)JS和JQUERY獲取頁(yè)面大小,滾動(dòng)條位置,元素位置的示例代碼進(jìn)行了介紹。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12

