1. 程式人生 > >html/css基礎篇——關於瀏覽器window、document、html、body高度的探究

html/css基礎篇——關於瀏覽器window、document、html、body高度的探究

  首先說明本人所理解的這幾個元素的計算

  window高度應當是文件所在視窗的可視高度(沒有包括瀏覽器的滾動條),計算方法document.documentElement.clientHeight

  document高度應該為文件內容的高度,計算方法Math.max(document.body[ "scrollHeight" ], document.documentElement[ "scrollHeight"])

  html高度應當為html元素的高度(包括邊框滾動條),計算方法htmlElement.offsetHeight

  body高度是body元素的高度(包括邊框滾動條),計算方法bodyElements.offsetHeight;

  以上測試方式和jQuery的處理相同。直接使用jQuery來測試。

  用例:

  注意:裡面的#absolute是脫離文件流的元素。

  測試必要條件:

1.所有測試都在沒有設定margin/padding為整數的情況下測定。

  2.其中細節高度筆者使用QQ截圖工具取畫素對比

<!DOCTYPE html>
<html lang="ch-cn">
  <head>
  <meta charset="utf-8">
  <script type="text/javascript" src='jquery-1.9.1.js'
></script> <style type="text/css"> html,body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td{ margin: 0; padding:0; } #absolute{ position: absolute; margin-left
: 300px; height: 500px; width: 500px; background: #ff0; } #normal{ height: 300px; width: 300px; background: #f00; } </style> </head> <body> <div id='absolute' >我是absolute</div> <div id="normal">我是normal</div> <script type="text/javascript"> function show(){ console.log("window height " + $(window).height()); console.log("document height " + $(document).height()); console.log("html height " + $("html").height()); console.log("body height " + $("body").height()); } </script> </body> </html>

  顯示效果為

  

  第一組測試:IE8

  IE8總結:

  window可視視窗高度,不包括瀏覽器滾動條(IE後面兩個圖對比可得,第二個IE下面有個滾動條佔6px)。IE有一個特點:window高度與真正的可視視窗相比會少4px(第三個IE圖片可知,這個時候document的高度和可視視窗高度相同),說明IE的window四邊有2px的間隙,也就是IE自己的offset值

  document文件高度,完全顯示所有文件內容的高度(包括脫離文件流的元素顯示,第一個IE圖可得)和IE工作區(看html解釋)取最大值(這個高度最終決定視窗滾動條能滾動顯示到哪裡)

  html高度是視窗的高度,這個視窗是IE自己劃定的瀏覽器工作區域高度,包括可視視窗、2px的offset、瀏覽器滾動條等等,看下面的效果圖

  

  body高度是內容真實高度(脫離文件流定位的不再裡面,三個圖可以為此作證)

  第二組測試:IE9+

  

  

  IE9+總結:

  window高度是可視視窗高度,不包括瀏覽器滾動條。

  document文件高度,完全顯示所有文件內容的高度(包括脫離文件流的元素顯示,第一個IE圖可得)和IE工作區(看html解釋)取最大值(這個高度最終決定視窗滾動條能滾動顯示到哪裡)

  html高度是視窗的高度,這個視窗是IE自己劃定的瀏覽器工作區域高度,包括可視視窗、瀏覽器滾動條,比IE8要標準一些(沒有offset了,滾動條和工作區邊也沒有了間隙,看下圖)

  

  body高度內容真實高度(脫離文件流定位的不再裡面)

  第二組測試:chrome

  chrome總結:

  window高度是可視視窗高度不包括瀏覽器滾動條

  document高度是完全顯示所有文件內容的高度(包括脫離文件流的元素顯示,第一個chrome圖可得)和可視視窗高度取最大值(這個高度最終決定視窗滾動條能滾動顯示到哪裡)

  html高度和body內容高度相同

  body高度內容真實高度(脫離文件流定位的不再裡面)

  第三組測試:Firefox

  Firefox總結:

  window高度是可視視窗高度,不包括瀏覽器滾動條。

  document高度是完全顯示所有文件內容的高度(包括脫離文件流的元素顯示,第一個Firefox圖可得)和可視視窗高度取最大值(這個高度最終決定視窗滾動條能滾動顯示到哪裡)

  html高度和body內容高度相同

  body高度內容真實高度(脫離文件流定位的不再裡面)

  好了,總結一下:

  window高度是可視視窗高度,不包括瀏覽器滾動條高度。比較特別的是IE8的可視視窗邊上有2px的offset,所以IE8的可視視窗高度會比我們看到的視窗要小4px。

  document高度是完整文件高度,這個高度計算根據瀏覽器不同而不同:標準瀏覽器document高度 = max(文件真實完整高度【包括脫離文件流的元素的顯示】,可視視窗高度);IE瀏覽器document高度 = max(文件真實完整高度【包括脫離文件流的元素的顯示】,IE工作區高度【需要注意的是iframe可以設定高度,這個高度就是工作區高度,所以IE工作區高度完全可能是高於整個顯示屏高度的】)

  html高度分兩種:標準瀏覽器html高度=body內容高度;IE瀏覽器html高度 = IE工作區高度(具體檢視IE的分析)

  body高度是內容真實高度(脫離文件流定位的不再裡面)。

  當然上面的分析沒有計算偏移margin和padding在內。比如標準的瀏覽器html高度=html的padding高度+body內容的偏移margin高度+body內容高度

  對比總結中可以看出,IE和標準瀏覽器區別最大的是document和html的計算方法。有一點要說明的是,IE的documen高度因為可能是IE工作區高度,那麼可能會包括滾動條,如IE9+測試的第二個圖可以看出。

   上面的測試結果在,iframe中測試也同樣適用。

  這種分析最耗時間,如果大家覺得不錯就別光看不頂了。

  如果覺得本文不錯,請點選右下方【推薦】!

相關推薦

html/css基礎——關於瀏覽器windowdocumenthtmlbody高度探究

  首先說明本人所理解的這幾個元素的計算   window高度應當是文件所在視窗的可視高度(沒有包括瀏覽器的滾動條),計算方法document.documentElement.clientHeight   document高度應該為文件內容的高度,計算方法Math.max(document.body[ "

HTML+CSS基礎知識學習筆記

注:如果早點了解那率性的你或者晚一點遇見成熟的我。學計算機的應該早點確定自己的技術方向,一定要有一個擅長的能夠用來吃飯的,其他的能掌握多少就是多少,像我這樣的什麼都學,什麼都不知道沒什麼卵用的。 1.HTML:Hyper Text Markup Language(超文字

Qt入門之基礎 ( 二 ) :Qt項目建立編譯運行和發布過程解析

qt 5 對話 讓我 進度 qmake ctr deploy 設定 設置 轉載請註明出處:CN_Simo。 題解:   本篇內容主講Qt應用從創建到發布的整個過程,旨在幫助讀者能夠快速走進Qt的世界。   本來計劃是講解Qt源碼靜態編譯,如此的話讀者可能並不能清楚地知

python之 前端HTML/CSS基礎知識學習筆記

引號 編寫 css基礎 通用 浮動 我們 公司地址 將不 多行 1. 文件結構: HTML文件的固定結構: <html> <head>...</head> <body>...&l

HTML+CSS基礎小筆記再整理

abs 其中 寬度 書寫 html5 font pla 之間 footer 1、 font的兩個必須要寫的:font-size 和 font-family text-indent 首行縮進(em)1em=一個文字大小 text-algin 對齊方式:left、center

html+css基礎 - 個人備忘錄

keyword cati 格式 padding png over inline 分數 head //======================html部分===================//表現內容<meta http-equiv="Content-Type"

html+css基礎總結

要素 所有 tac 一個表 ive 屬性 amp 自身 表格 1.Html超為文本語言的組成3要素:結構,表現,行為 2.塊元素會獨占一行元素,無論內容多少,內聯元素只占自身大小的元素,不會占取一行 ,a元素可以包含任意元素,但除了他本身,p元素不可以包含任何的塊元素 3.

HTML+CSS基礎課程三

css代碼 不定 了解 nta erl ima 方式 哈哈 list 1.文字排版--字體 我們可以使用css樣式為網頁中的文字設置字體、字號、顏色等樣式屬性。下面我們來看一個例子,下面代碼實現:為網頁中的文字設置字體為宋體。 body{font-family:"宋體"

HTML+CSS基礎課程二

regular asc 郵箱地址 失敗 pos input 變化 文本顏色 orm 1.border為系統加邊框<style type="text/css"> table tr td,th{border:1px solid #000;} </style&g

css基礎 BFC 不與浮動元素產生交集自適應

order src 效果 css基礎 border htm log 學習 w3c 禮悟:   公恒學思合行悟,尊師重道存感恩。葉見尋根三返一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉養身心,誠勸且行且珍惜。   

HTML+CSS基礎

代碼 shift gin lis 大小 mil 放置 空格 border 前端腳本與後端腳本的區別:能被瀏覽器所理解 Html —— 積木庫 Css —— 積木詳細樣式設計 JavaScript ——dom(操作控制積木) Html: <div&g

Web前端開發之HTML+CSS基礎入門(框架)

AR 網頁 html 表單提交 pos 部分加載 selected area pin HTML框架詳解與框架布局? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 1)什麽是框架 框架將瀏覽器劃分成不同的部分,每一部分加載不同的網頁,實現在同一

Web前端開發之HTML+CSS基礎入門(使用CSS樣式的方式)

AD 層疊樣 b前端開發 col In 基於 允許 ML 語言 1) HTML<!DOCTYPE> 聲明標簽 a.定義和用法 <!DOCTYPE> 聲明必須是 HTML 文檔的第一行,位於 <html> 標簽之前。 <!DOCTYP

html+css基礎部分01

miaov課件 第01節 基本機構和盒模型 html(Hypertext Markup Language)—— 結構 css(Cascading Style Sheets)—— 樣式 js(javascript)—— 行為 html超文字標記語言 <

HTML+CSS基礎知識個人筆記_8

HTML+CSS基礎知識個人筆記_8 1. 結構偽類選擇器 2. 屬性選擇器 3. 偽元素選擇器 4. CSS3盒子模型 5. 經典案例 6. 過渡 6.1 transition 6.2 transform的t

HTML+CSS基礎知識個人筆記_7

HTML+CSS基礎知識個人筆記_7 1. 顯示與隱藏 2. 土豆案例 3. overflow 4. cursor 5. 輪廓線和防止檔案域拖拽 6. vertical-align 7. 溢位文字省略號 8. sprite

HTML+CSS基礎知識個人筆記_6

HTML+CSS基礎知識個人筆記_6 1. 清除浮動的四種方法 1.1 額外標籤法 1.2 overflow清除浮動 1.3 after偽元素清除浮動 1.4 雙偽元素清除浮動 2. 定位 2.1 靜態定

HTML+CSS基礎知識個人筆記_5

HTML+CSS基礎知識個人筆記_5 1.盒子小知識點 1.1盒子水平居中 1.2 外邊距合併 1.3 外邊距塌陷 1.4 盒子預設寬度 1.5 圓角盒子 1.6 盒子陰影 2. 盒子浮動

HTML+CSS基礎知識個人筆記_4

HTML+CSS基礎知識個人筆記_4 1. CSS背景設定 1.1 背景半透明 2. 盒子模型 2.1 邊框-border 2.1.1 邊框問題 2.1.2 表格細線邊框

HTML+CSS基礎知識個人筆記_3

HTML+CSS基礎知識個人筆記_3 一、CSS顯示模式 (一)塊級元素: block-level (二)行內元素: inline-level (三)行內塊元素: inline-block (四)顯示模式轉換 (五)顯示模