摘要:在移動端進行開發時,通常整個頁面的頭部會固定一個區域,比如下圖淘寶中的頭部。其中的默認定位都是。因此最終的代碼形式是禁用滾動條,實現相對于的絕對定位代替固定定位。因此如果有元素找不到非的祖先元素,那么是相對于進行定位的。
在移動端進行開發時,通常整個頁面的頭部會固定一個區域,比如下圖淘寶中的頭部。這個區域無論怎么劃屏都是可見的。在PC端,我們可以使用position:fixed來實現。但是由于position:fixed存在一定的兼容性問題,而且移動端的視口較多,這個固定究竟是相對于哪個視口,很容易搞錯。因此,通常都會使用絕對定位來代替固定定位。下面具體代碼舉例:
HTML代碼如下所示:
CSS代碼如下所示:
.header-box{ /*position:fixed;*/ position:absolute; left:0; top:0; width:100%; height:179px; background:#ef3229; } ul>li{ height:350px; border-bottom: 1px solid black; }
上面的html中定義了頂部固定區域和下方內容區域。頂部使用了position進行了絕對定位,設置了left為0,top為0。內容區域高度超過了可視區。
最終得到的效果如下圖所示:
這時候,會發現出現了滾動。滑動之后本來應該固定在頂部的區域又不見了。也就是說我們并沒有實現我們想要的使用絕對定位代替固定定位。這是為什么了?這里,我們需要理解兩個重要知識點:
這里的絕對定位到底是相對于誰進行定位的?
這里的滾動條到底是加在誰身上?
首先分析第一個問題:我們知道position:absolute是相對于距離最近的position值不為static的定位祖先元素進行定位的,如果沒有定位的祖先元素,那么就是相對于根節點document進行定位的。那么,我們的header元素的祖先元素有body,html,document。 其中body,html的默認定位都是static。也就是說,這里最終是相對于document進行定位的。
再分析第二個問題:內容超出瀏覽器高度時,滾動條到底是加在誰身上。事實上這里應該是加在html元素身上的。
理解了上面兩個知識點,那么我們就可以進行分析了。我們知道正是由于html元素身上出現滾動條,正是由于滾動條的滾動才會導致document超出瀏覽器窗口。因此我們需要首先需要做的是將html的滾動條進行禁用。
html{ overflow:hidden; }
雖然禁用了html的滾動條解決了使用絕對定位代替固定定位的問題,但是帶來了新的問題。那就是整個頁面都不再具有滾動條了。但是事實上我們是需要滾動條的,因此我們可以在body身上添加滾動條。
html{ height:100%; } body{ height:100%; overflow:auto; }
由于需要將body的高度設置為瀏覽器的高度,而html的高度取決于瀏覽器高度,因此先設置html高度為瀏覽器高度,然后body繼承自html即可。
因此最終的代碼形式是:
html{ height:100%; overflow:hidden; //禁用滾動條,實現相對于document的絕對定位代替固定定位。 } body{ height:100%; overflow:auto; //添加滾動條 } ul{ margin-top:179px; list-style: none; } .header-box{ /*position:fixed;*/ position:absolute; left:0; top:0; width:100%; height:179px; background:#ef3229; } ul>li{ height:350px; border-bottom: 1px solid black; }
總結:一些用到的相關知識:
html元素和body的元素的絕對定位默認值都是static。因此如果有元素找不到非static的祖先元素,那么是相對于document進行定位的。
html元素和body元素都是塊級元素。默認獨占一行,其寬度等于瀏覽器寬度。高度等于內容區域的高度,如果給高度設置了height:100%。那么它的高度是瀏覽器高度。
html元素默認設置了overflow:auto。在內容超出瀏覽器高度的時候就會出現滾動條。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/117248.html
摘要:在移動端進行開發時,通常整個頁面的頭部會固定一個區域,比如下圖淘寶中的頭部。其中的默認定位都是。因此最終的代碼形式是禁用滾動條,實現相對于的絕對定位代替固定定位。因此如果有元素找不到非的祖先元素,那么是相對于進行定位的。 在移動端進行開發時,通常整個頁面的頭部會固定一個區域,比如下圖淘寶中的頭部。這個區域無論怎么劃屏都是可見的。在PC端,我們可以使用position:fixed來實現。...
摘要:靜態定位下,每個元素在處在常規文檔流中,它們都是塊級元素,所以會在頁面中自上而下地堆疊。這說明絕對定位的元素脫離了常規文檔流,它現在是相對于頂級元素在定位。事實上,一個相對定位元素同時設置了和位移屬性值,實際上優先級高于。 這是《CSS設計指南》的讀書筆記,用于加深學習效果。前一篇CSS入門指南-2:盒子模型、浮動和清除介紹了css盒子模型、浮動和清除,這一篇介紹 css元素的定位。 ...
摘要:靜態定位下,每個元素在處在常規文檔流中,它們都是塊級元素,所以會在頁面中自上而下地堆疊。這說明絕對定位的元素脫離了常規文檔流,它現在是相對于頂級元素在定位。事實上,一個相對定位元素同時設置了和位移屬性值,實際上優先級高于。 這是《CSS設計指南》的讀書筆記,用于加深學習效果。前一篇CSS入門指南-2:盒子模型、浮動和清除介紹了css盒子模型、浮動和清除,這一篇介紹 css元素的定位。 ...
摘要:寫在最前是的一種布局場景。頁腳永遠固定在頁面的底部,頁面內容不夠長的時候頁腳黏在視窗底部,內容足夠長時會被向下移動。老式門戶網站由于內容過短常常版權頁腳前移,移動端特定布局也需要來解決這些問題。 showImg(https://segmentfault.com/img/bVbrIV9?w=200&h=354); 寫在最前:Sticky Footer是css的一種布局場景。頁腳foot...
閱讀 2438·2021-11-22 13:53
閱讀 1131·2021-09-22 16:06
閱讀 1373·2021-09-02 15:21
閱讀 1905·2019-08-30 15:55
閱讀 3125·2019-08-29 11:19
閱讀 1923·2019-08-26 13:23
閱讀 940·2019-08-23 18:23
閱讀 1753·2019-08-23 16:06