摘要:我們一般喜歡將寬度設(shè)置成百分比,但在將高度設(shè)置成百分比的時(shí)候要注意。解決方法利用函數(shù)讓的寬度減去因?yàn)榈陌俜直仁菂⒄掌涓冈氐膶挾扔?jì)算的,因此這里將它的父元素的寬度減小,那么它的的自然就小了
結(jié)論:
標(biāo)準(zhǔn)流中的元素,看其屬性有沒有繼承性。對于width和margin-left,它是可以繼承的,它會參照父元素或者祖先元素(其實(shí)是包含塊);對于height,它沒有繼承性,父元素或者祖先元素會自適應(yīng)其所有子元素的高度和(這點(diǎn)是需要注意的)。
絕對定位參照的是離它最近的父元素或祖先元素,如果沒有父元素或祖先元素,那么參照的是初始包含塊(不同的瀏覽器可能不一樣,因?yàn)閃3C沒有規(guī)定瀏覽器具體如何去實(shí)現(xiàn))。但實(shí)際上,大部分瀏覽器將可視區(qū)當(dāng)作絕對定位的包含塊。
固定定位參照可視區(qū)
width設(shè)置成百分比一般子元素通常將繼承父元素計(jì)算過的值當(dāng)作百分比的參照,對于不可繼承的屬性和根元素,則使用初始值作為參照
比如.box沒有設(shè)置寬度,但默認(rèn)繼承了body計(jì)算過的值,又因?yàn)?box是.item的父元素,因此.item又繼承了.box計(jì)算過的值。當(dāng)一個(gè)塊級元素不設(shè)置寬度時(shí),則它的寬度默認(rèn)為全屏,就是因?yàn)樗^承了包含塊的寬度。
height設(shè)置成百分比結(jié)論
高度設(shè)置成百分比時(shí),高度不像寬度一樣會繼承父元素或者祖先元素,相反,父元素或者祖先元素會根據(jù)子元素的實(shí)際高度(高度計(jì)算值)來自適應(yīng),一般為所有子元素的內(nèi)容加起來的高度和。而子元素會根據(jù)文字行高來設(shè)置高度具體值(在子元素高度不設(shè)置具體值的情況下)。對于有absolute定位的元素,其高度為百分比時(shí)會參照父元素或祖先元素的高度,絕對定位參照的是離它最近的父元素或祖先元素,如果沒有父元素或祖先元素,那么參照的是初始包含塊(不同的瀏覽器可能不一樣,因?yàn)閃3C沒有規(guī)定瀏覽器具體要如何實(shí)現(xiàn))。但實(shí)際上,大部分瀏覽器將可視區(qū)當(dāng)作絕對定位的包含塊。
我們一般喜歡將寬度設(shè)置成百分比,但在將高度設(shè)置成百分比的時(shí)候要注意。
height 100%
html為什么會出現(xiàn)height等于21呢?是不是這21是從祖先元素繼承過來的?當(dāng)我們把body的高度設(shè)置成100%結(jié)果還是一樣。其實(shí)這里的高度為行高的高度,也就是說,在高度為0或者不設(shè)置高度的情況下,高度是文字的行高,當(dāng)我們在.box中加上line-height:20px;時(shí),box,body和html的高度都會變成20px;當(dāng)我們把.box高度設(shè)置成具體值時(shí):
height 100%
可以發(fā)現(xiàn),body和html竟然跟.box高度一樣為100px.所以可以得出父元素在不設(shè)置高度的情況下,是自適應(yīng)子元素高度的(在不設(shè)置高度的情況下,html和body的高度是所有內(nèi)容加起來的高度),如果父元素設(shè)置了高度,則是另外一種情況了:
height
可以發(fā)現(xiàn)d,body,html的高度都變成了100px(本來應(yīng)該是200px),說明父元素或祖先元素時(shí)被動自適應(yīng)子元素高度的,它們的高度值不會繼承給自元素。
當(dāng)有absolute定位時(shí)1.絕對定位沒有定位的祖先元素
這時(shí)絕對定位參照的是一個(gè)視口的高度,注意視口這個(gè)概念。
height 100%
?
改變height分別為100%和50%,可以發(fā)現(xiàn)html的高度為0,并沒有自適應(yīng)div的高度,因?yàn)閐iv已經(jīng)徹底脫離標(biāo)準(zhǔn)流了,我們說過,如果絕對定位沒有定位的祖先元素,則包含塊為初始包含塊,這里的初始包含塊即為可視區(qū),所以這里的百分比是參照可視區(qū)的大小來計(jì)算的。所以為50%時(shí)占視口的一半。注意這只是一個(gè)視口的高度,把滾動條往下拉拉就知道了。
2.絕對定位的元素在另外一個(gè)定位元素里面(除static外)
這時(shí)百分比參照的是父元素生成的包含塊計(jì)算出來的值
所以想讓定位元素的高度占滿整個(gè)屏幕,可以:
body{ position:relative; }margin-left設(shè)置成百分比
margin-left
這時(shí)出現(xiàn)了滾動條,這是因?yàn)閷iv的margin-left設(shè)置成了100%,而百分比是參照其包含塊body的寬度,body又是參照的html(某些瀏覽器將它當(dāng)作初始包含塊)。而html的初始包含塊是可視區(qū),所以可視區(qū)的寬度再加上元素的100%,自然就超出了屏幕了。
解決方法:
(1)利用calc函數(shù)
margin-left
(2)讓body的寬度減去100px,因?yàn)閐iv的百分比是參照其父元素的寬度計(jì)算的,因此這里將它的父元素的寬度減小,那么它的margin-left的100%自然就小了
margin-left
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108014.html
摘要:同理相當(dāng)于,相當(dāng)于基于元素本身的寬度但此值只能應(yīng)用在塊元素上,所設(shè)置百分值將使用背景圖片大小根據(jù)所在元素的寬度的百分比來計(jì)算 面試題:css中的單位都有哪些?可以取百分?jǐn)?shù)的單位有哪些?這些百分比是如何計(jì)算的? css中的單位 絕對單位 in-英寸;cm;mm;pt-磅;pc-pica 相對單位 em-與元素字號掛鉤;ex-與元素字體的x高度掛鉤;rem-與根元素字號掛鉤;px...
摘要:絕對單位英寸磅相對單位與元素字號掛鉤與元素字體的高度掛鉤與根元素字號掛鉤與像素掛鉤另一屬性值的百分比。定義基于父元素寬度的百分比的縮進(jìn)。參考權(quán)威教程節(jié)樣式可以使用百分比的屬性總結(jié)淺析屬性之中經(jīng)常出現(xiàn)的百分比 起源:一道面試題(貓眼電影) 問題:css中的單位都有哪些?可以取百分?jǐn)?shù)的單位有哪些?其中margin-top取百分?jǐn)?shù)時(shí)是相對于誰來計(jì)算的? 回答: (1)css中的單位:CSS規(guī)...
摘要:相反的,通用數(shù)據(jù)類型并不和任何特定的屬性相關(guān)聯(lián)。本文,我將整體講述一下所有的通用數(shù)據(jù)類型。這樣以來就能夠避免和字符串?dāng)?shù)據(jù)類型混淆。距離距離數(shù)據(jù)類型表示距離的單位,有兩種長度單位。漸變函數(shù)使用數(shù)據(jù)類型來定義。 CSS中屬性的值有著許多種格式。為了讓用戶代理(即瀏覽器)能夠識別一個(gè)值是否有效,則需要確認(rèn)該值是否符合該類值支持的格式的其中一種。這些屬性值所支持的格式叫做數(shù)據(jù)類型,在規(guī)范中用的...
摘要:相反的,通用數(shù)據(jù)類型并不和任何特定的屬性相關(guān)聯(lián)。本文,我將整體講述一下所有的通用數(shù)據(jù)類型。這樣以來就能夠避免和字符串?dāng)?shù)據(jù)類型混淆。距離距離數(shù)據(jù)類型表示距離的單位,有兩種長度單位。漸變函數(shù)使用數(shù)據(jù)類型來定義。 CSS中屬性的值有著許多種格式。為了讓用戶代理(即瀏覽器)能夠識別一個(gè)值是否有效,則需要確認(rèn)該值是否符合該類值支持的格式的其中一種。這些屬性值所支持的格式叫做數(shù)據(jù)類型,在規(guī)范中用的...
摘要:很多屬性的取值都可以是百分比值。這就是百分比值的意義??捎冒俜直戎档某R妼傩詫捄透咴谑褂冒俜直戎禃r(shí),其參照都是元素的包含塊,詳情。百分比值的繼承請注意,當(dāng)百分比值用于可繼承屬性時(shí),只有結(jié)合參照值計(jì)算后的絕對值會被繼承,而不是百分比值本身。 很多css屬性的取值都可以是百分比值。雖然形式上來說,百分比值都是數(shù)字后跟%的形式(注意數(shù)字和%之間不可以有空格),但在不同的使用場合下,其意義會有...
閱讀 1027·2021-11-22 13:52
閱讀 941·2019-08-30 15:44
閱讀 582·2019-08-30 15:43
閱讀 2437·2019-08-30 12:52
閱讀 3486·2019-08-29 16:16
閱讀 648·2019-08-29 13:05
閱讀 2953·2019-08-26 18:36
閱讀 2007·2019-08-26 13:46