JavaScript中頁面與元素大小

最近寫demo時(shí)總覺得自己分不清元素的幾種獲取大小的具體包括哪些级解,在搜索資料時(shí)看見這張圖次舌,看著挺雜的伊约,還是自己分分類比較看得清楚姚淆。


今天的內(nèi)容
一、偏移量

offsetHeight 元素在垂直方向上的高度:內(nèi)容屡律、內(nèi)邊距腌逢、邊框
offsetWidth 元素在水平方向的寬度:內(nèi)容、內(nèi)邊距超埋、邊框
offsetLeft 元素的左外邊框到包含元素的左內(nèi)邊框
offsetTop 元素的上外邊框到包含元素的上內(nèi)邊框
offsetParent 包含元素
這是定義搏讶,但是:
當(dāng)元素包含在div中,類似
<div class="container"> <div class="content"></div> </div>
元素的offsetParent是body元素霍殴,對應(yīng)的元素的offsetLeft與offsetTop都是元素距離body的距離窍蓝。

二、客戶區(qū)大小

clientHeight 元素內(nèi)容高度+上下內(nèi)邊距高度
clientWidth 元素內(nèi)容寬度+左右內(nèi)邊距寬度

常用應(yīng)用之一:確定瀏覽器可視區(qū)域大小

function getViewport(){
  if(document.compatMode=="BackCompat"){
    return{
      width:document.body.clientWidth;
      height:document.body.clientHeight;
    }
  }else{
    return{
      width:document.documentElement.clientWidth;
      height:document.documentElement.clientHeight;
    }
  }
}

混雜模式下和標(biāo)準(zhǔn)模式下繁成,Chrome、Opera淑玫、FireFox大多數(shù)情況下運(yùn)行在標(biāo)準(zhǔn)模式下巾腕,因此進(jìn)入else面睛,函數(shù)返回一個(gè)對象,包含width好height屬性尊搬。因此確定瀏覽器可視區(qū)域大小總是使用:
document.documentElement.clientWidth; document.documentElement.clientHeight;

三叁鉴、滾動大小

scrollHeight 在沒有滾動條的情況下,元素內(nèi)容的總高度
scrollWidth 在沒有滾動條的情況下佛寿,元素內(nèi)容的總寬度
scrollLeft 被隱藏內(nèi)容區(qū)域左側(cè)的像素幌墓,通過這個(gè)屬性可以改變元素的滾動位置
scrollTop 被隱藏內(nèi)容區(qū)域上方的像素,通過這個(gè)屬性可以改變元素的滾動位置

scrollHeight和scrollWidth主要用于確定元素內(nèi)容的實(shí)際大小冀泻。通常認(rèn)為<html>是在Web瀏覽器的視口中滾動的元素(IE6之前版本運(yùn)行在混雜模式下時(shí)是<body>元素)常侣。因此,帶有垂直滾動條的頁面總高度就是
document.documentElement.scrollHeight

不包含滾動條的頁面中弹渔,通過document.documentElement獲取
scrollHeight胳施、scrollWidth與clientHeight、clientWidth
1肢专、FireFox下兩組屬性相等舞肆,等于可視區(qū)域?qū)挾扰c高度
2、Chrome中寬度都等于可視區(qū)域?qū)挾炔┱龋琧lientHeight可視區(qū)域高度椿胯,scrollHeight文檔內(nèi)容高度
3、IE8以上兩組屬性相等剃根,等于可視區(qū)域?qū)挾扰c高度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哩盲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跟继,更是在濱河造成了極大的恐慌种冬,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舔糖,死亡現(xiàn)場離奇詭異娱两,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)金吗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門十兢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摇庙,你說我怎么就攤上這事旱物。” “怎么了卫袒?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵宵呛,是天一觀的道長。 經(jīng)常有香客問我夕凝,道長宝穗,這世上最難降的妖魔是什么户秤? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮逮矛,結(jié)果婚禮上鸡号,老公的妹妹穿的比我還像新娘。我一直安慰自己须鼎,他們只是感情好鲸伴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晋控,像睡著了一般汞窗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糖荒,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天杉辙,我揣著相機(jī)與錄音,去河邊找鬼捶朵。 笑死蜘矢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的综看。 我是一名探鬼主播品腹,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼红碑!你這毒婦竟也來了舞吭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤析珊,失蹤者是張志新(化名)和其女友劉穎羡鸥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忠寻,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惧浴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奕剃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衷旅。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纵朋,靈堂內(nèi)的尸體忽然破棺而出柿顶,到底是詐尸還是另有隱情,我是刑警寧澤操软,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布嘁锯,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猪钮。R本人自食惡果不足惜品山,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烤低。 院中可真熱鬧,春花似錦笆载、人聲如沸扑馁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腻要。三九已至,卻和暖如春涝登,著一層夾襖步出監(jiān)牢的瞬間雄家,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工胀滚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趟济,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓咽笼,卻偏偏與公主長得像顷编,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子剑刑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容