摘要:在移動(dòng)端進(jìn)行開發(fā)時(shí),通常整個(gè)頁(yè)面的頭部會(huì)固定一個(gè)區(qū)域,比如下圖淘寶中的頭部。其中的默認(rèn)定位都是。因此最終的代碼形式是禁用滾動(dòng)條,實(shí)現(xiàn)相對(duì)于的絕對(duì)定位代替固定定位。因此如果有元素找不到非的祖先元素,那么是相對(duì)于進(jìn)行定位的。
在移動(dòng)端進(jìn)行開發(fā)時(shí),通常整個(gè)頁(yè)面的頭部會(huì)固定一個(gè)區(qū)域,比如下圖淘寶中的頭部。這個(gè)區(qū)域無(wú)論怎么劃屏都是可見的。在PC端,我們可以使用position:fixed來(lái)實(shí)現(xiàn)。但是由于position:fixed存在一定的兼容性問(wèn)題,而且移動(dòng)端的視口較多,這個(gè)固定究竟是相對(duì)于哪個(gè)視口,很容易搞錯(cuò)。因此,通常都會(huì)使用絕對(duì)定位來(lái)代替固定定位。下面具體代碼舉例:
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中定義了頂部固定區(qū)域和下方內(nèi)容區(qū)域。頂部使用了position進(jìn)行了絕對(duì)定位,設(shè)置了left為0,top為0。內(nèi)容區(qū)域高度超過(guò)了可視區(qū)。
最終得到的效果如下圖所示:
這時(shí)候,會(huì)發(fā)現(xiàn)出現(xiàn)了滾動(dòng)。滑動(dòng)之后本來(lái)應(yīng)該固定在頂部的區(qū)域又不見了。也就是說(shuō)我們并沒(méi)有實(shí)現(xiàn)我們想要的使用絕對(duì)定位代替固定定位。這是為什么了?這里,我們需要理解兩個(gè)重要知識(shí)點(diǎn):
這里的絕對(duì)定位到底是相對(duì)于誰(shuí)進(jìn)行定位的?
這里的滾動(dòng)條到底是加在誰(shuí)身上?
首先分析第一個(gè)問(wèn)題:我們知道position:absolute是相對(duì)于距離最近的position值不為static的定位祖先元素進(jìn)行定位的,如果沒(méi)有定位的祖先元素,那么就是相對(duì)于根節(jié)點(diǎn)document進(jìn)行定位的。那么,我們的header元素的祖先元素有body,html,document。 其中body,html的默認(rèn)定位都是static。也就是說(shuō),這里最終是相對(duì)于document進(jìn)行定位的。
再分析第二個(gè)問(wèn)題:內(nèi)容超出瀏覽器高度時(shí),滾動(dòng)條到底是加在誰(shuí)身上。事實(shí)上這里應(yīng)該是加在html元素身上的。
理解了上面兩個(gè)知識(shí)點(diǎn),那么我們就可以進(jìn)行分析了。我們知道正是由于html元素身上出現(xiàn)滾動(dòng)條,正是由于滾動(dòng)條的滾動(dòng)才會(huì)導(dǎo)致document超出瀏覽器窗口。因此我們需要首先需要做的是將html的滾動(dòng)條進(jìn)行禁用。
html{ overflow:hidden; }
雖然禁用了html的滾動(dòng)條解決了使用絕對(duì)定位代替固定定位的問(wèn)題,但是帶來(lái)了新的問(wèn)題。那就是整個(gè)頁(yè)面都不再具有滾動(dòng)條了。但是事實(shí)上我們是需要滾動(dòng)條的,因此我們可以在body身上添加滾動(dòng)條。
html{ height:100%; } body{ height:100%; overflow:auto; }
由于需要將body的高度設(shè)置為瀏覽器的高度,而html的高度取決于瀏覽器高度,因此先設(shè)置html高度為瀏覽器高度,然后body繼承自html即可。
因此最終的代碼形式是:
html{ height:100%; overflow:hidden; //禁用滾動(dòng)條,實(shí)現(xiàn)相對(duì)于document的絕對(duì)定位代替固定定位。 } body{ height:100%; overflow:auto; //添加滾動(dòng)條 } 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; }
總結(jié):一些用到的相關(guān)知識(shí):
html元素和body的元素的絕對(duì)定位默認(rèn)值都是static。因此如果有元素找不到非static的祖先元素,那么是相對(duì)于document進(jìn)行定位的。
html元素和body元素都是塊級(jí)元素。默認(rèn)獨(dú)占一行,其寬度等于瀏覽器寬度。高度等于內(nèi)容區(qū)域的高度,如果給高度設(shè)置了height:100%。那么它的高度是瀏覽器高度。
html元素默認(rèn)設(shè)置了overflow:auto。在內(nèi)容超出瀏覽器高度的時(shí)候就會(huì)出現(xiàn)滾動(dòng)條。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/101036.html
摘要:在移動(dòng)端進(jìn)行開發(fā)時(shí),通常整個(gè)頁(yè)面的頭部會(huì)固定一個(gè)區(qū)域,比如下圖淘寶中的頭部。其中的默認(rèn)定位都是。因此最終的代碼形式是禁用滾動(dòng)條,實(shí)現(xiàn)相對(duì)于的絕對(duì)定位代替固定定位。因此如果有元素找不到非的祖先元素,那么是相對(duì)于進(jìn)行定位的。 在移動(dòng)端進(jìn)行開發(fā)時(shí),通常整個(gè)頁(yè)面的頭部會(huì)固定一個(gè)區(qū)域,比如下圖淘寶中的頭部。這個(gè)區(qū)域無(wú)論怎么劃屏都是可見的。在PC端,我們可以使用position:fixed來(lái)實(shí)現(xiàn)。...
摘要:靜態(tài)定位下,每個(gè)元素在處在常規(guī)文檔流中,它們都是塊級(jí)元素,所以會(huì)在頁(yè)面中自上而下地堆疊。這說(shuō)明絕對(duì)定位的元素脫離了常規(guī)文檔流,它現(xiàn)在是相對(duì)于頂級(jí)元素在定位。事實(shí)上,一個(gè)相對(duì)定位元素同時(shí)設(shè)置了和位移屬性值,實(shí)際上優(yōu)先級(jí)高于。 這是《CSS設(shè)計(jì)指南》的讀書筆記,用于加深學(xué)習(xí)效果。前一篇CSS入門指南-2:盒子模型、浮動(dòng)和清除介紹了css盒子模型、浮動(dòng)和清除,這一篇介紹 css元素的定位。 ...
摘要:靜態(tài)定位下,每個(gè)元素在處在常規(guī)文檔流中,它們都是塊級(jí)元素,所以會(huì)在頁(yè)面中自上而下地堆疊。這說(shuō)明絕對(duì)定位的元素脫離了常規(guī)文檔流,它現(xiàn)在是相對(duì)于頂級(jí)元素在定位。事實(shí)上,一個(gè)相對(duì)定位元素同時(shí)設(shè)置了和位移屬性值,實(shí)際上優(yōu)先級(jí)高于。 這是《CSS設(shè)計(jì)指南》的讀書筆記,用于加深學(xué)習(xí)效果。前一篇CSS入門指南-2:盒子模型、浮動(dòng)和清除介紹了css盒子模型、浮動(dòng)和清除,這一篇介紹 css元素的定位。 ...
摘要:寫在最前是的一種布局場(chǎng)景。頁(yè)腳永遠(yuǎn)固定在頁(yè)面的底部,頁(yè)面內(nèi)容不夠長(zhǎng)的時(shí)候頁(yè)腳黏在視窗底部,內(nèi)容足夠長(zhǎng)時(shí)會(huì)被向下移動(dòng)。老式門戶網(wǎng)站由于內(nèi)容過(guò)短常常版權(quán)頁(yè)腳前移,移動(dòng)端特定布局也需要來(lái)解決這些問(wèn)題。 showImg(https://segmentfault.com/img/bVbrIV9?w=200&h=354); 寫在最前:Sticky Footer是css的一種布局場(chǎng)景。頁(yè)腳foot...
閱讀 3525·2023-04-26 00:16
閱讀 1361·2021-11-25 09:43
閱讀 3824·2021-11-23 09:51
閱讀 2964·2021-09-24 09:55
閱讀 713·2021-09-22 15:45
閱讀 1387·2021-07-30 15:30
閱讀 3064·2019-08-30 14:04
閱讀 2237·2019-08-26 13:46