如何使用CSS將HTML元素的高度設置為100%

網站設計中常見的問題是“如何將元素的高度設置為100%”?

這可能看起來像一個簡單的答案。 您只需使用CSS將元素的高度設置為100%,但這並不總是拉伸該元素以適應整個瀏覽器窗口。 讓我們來看看為什麼會發生這種情況,以及您可以做些什麼來實現這種視覺風格。

像素和百分比

當您使用CSS屬性和使用像素的值定義元素的高度時,該元素將佔用瀏覽器中的垂直空間。

例如,一個高度為100px的段落; 在你的設計中將佔用100像素的垂直空間。無論你的瀏覽器窗口有多大,這個元素的高度都是100像素。

百分比的工作方式與像素不同。 根據W3C規範,百分比高度是根據容器的高度計算的。 所以,如果你把一個段落的高度:50%; 在高度為100px的div內,段落高度為50像素,是其父元素的50%。

為什麼百分比高度失敗

如果你正在設計一個網頁,並且你有一列你想佔據整個窗口的高度,那麼自然的傾向是增加一個高度:100%; 到那個元素。 畢竟,如果您將寬度設置為寬度:100%; 該元素將佔據頁面的整個水平空間,所以高度應該相同,對吧? 不幸的是,事實並非如此。

要理解為什麼發生這種情況,您必須了解瀏覽器如何解釋高度和寬度。 Web瀏覽器根據瀏覽器窗口打開的寬度來計算總可用寬度。 如果您未在文檔上設置任何寬度值,則瀏覽器將自動流動內容以填充窗口的整個寬度(100%寬度是默認寬度)。

高度值的計算方式與寬度不同。 實際上,除非內容太長以至於超出視口(因此需要滾動條),或者Web設計者為頁面上的元素設置了絕對高度,否則瀏覽器根本不評估高度。 否則,瀏覽器只是讓內容在視口寬度內流動,直到結束。 高度實際上根本不計算。

在設置父元素時未設置高度的元素上設置百分比高度時會出現問題 - 換句話說,父元素具有默認高度:auto; 。 實際上,您要求瀏覽器根據未定義的值計算高度。 由於這將等於空值,結果是瀏覽器什麼都不做。

如果要將網頁的高度設置為百分比,則必須設置要定義高度的每個父元素的高度。 換句話說,如果你有這樣一個頁面:





內容在這裡



您可能希望div和其中的段落具有100%的高度,但該div實際上有兩個父元素:

和。 為了將div的高度定義為相對高度,您還必須設置body和html元素的高度。

所以你需要使用CSS來設置不僅div的高度,而且body和html元素。 這可能是一個挑戰,因為您可以很快將所有設置為100%高度的設備都淹沒,只是為了達到預期的效果。

處理100%高度時需要注意的一些事項

現在您已知道如何將頁面元素的高度設置為100%,將頁面元素的高度設置為所有頁面可能會很令人興奮,但您應該注意以下幾點:

為了解決這個問題,你可以設置元素的高度。 如果將其設置為自動,則會在需要時顯示滾動條,但如果不需要則會消失。 這可以修復視覺中斷,但它會在您不想要的位置添加滾動條。

使用視口單位

解決這一挑戰的另一種方法是使用CSS視口單元進行試驗。 通過使用視口高度度量單位,可以調整元素的大小以佔據視口的定義高度,並且視口將隨著視口更改而變化! 這是在頁面上獲得100%高度視覺效果的好方法,但仍然可以靈活適用於不同的設備和屏幕尺寸。