CSS設(shè)置HTML元素的高度與寬度的各種情況總結(jié)

1.元素不設(shè)寬度
第一種情況:元素為文檔流中元素
<!-- 父元素寬度為100px -->
<div style="width:100px;">
<div style="background:orange;">dd</div>
</div>
<!-- 父元素寬度為200px -->
<div style="width:200px;">
<div style="background:orange;">dd</div>
</div>
<!-- 父元素不設(shè)寬度,繼承body寬度 -->
<div>
<div style="background:orange;">dd</div>
</div>
結(jié)論1:把子元素定位換成position:relative與上述例子表現(xiàn)一樣,因此在元素不設(shè)寬度時(shí),若元素為文檔流中元素,則此元素繼承其父元素寬度
第二種情況:元素為脫離文檔流元素
<!-- 父元素不設(shè)寬度,繼承body寬度 -->
<div>
<div style="float:left;background:orange;">dd</div>
</div>
結(jié)論2:把子元素定位換成position:absolute或position:fixed與上述例子表現(xiàn)一樣,因此在元素不設(shè)寬度的情況下,若子元素為脫離文檔流元素,則此元素寬度等于其內(nèi)容寬度。
2.元素寬度為100%
第一種情況:元素為文檔流中元素
結(jié)論3:將上面結(jié)論1中的例子元素寬度換為100%,表現(xiàn)與結(jié)論1例子的表現(xiàn)一樣,因此若元素為文檔流中元素,則子元素寬度為父元素寬度的的100%。
第二種情況:元素為脫離文檔流元素
(1)元素為浮動(dòng)元素
- <!-- 父元素寬度為100px -->
- <div style="width:100px;">
- <div style="float:left;background:orange;width:100%">dd</div>
- </div>
- <!-- 父元素寬度為200px -->
- <div style="width:200px;">
- <div style="float:left;background:orange;width:100%">dd</div>
- </div>
結(jié)論4:當(dāng)元素寬度為100%時(shí),若元素為浮動(dòng)元素,則此元素寬度為父元素寬度的100%。
(2)元素為絕對(duì)定位元素
- <!-- 父元素寬度為100px -->
- <div style="width:100px;">
- <div style="position:absolute;background:orange;width:100%">dd</div>
- </div>
- <!-- 父元素寬度為100px -->
- <div style="width:100px;position:relative">
- <div style="position;absolute;width:100%;background:orange">dd</div>
- </div>
- <!-- 父元素寬度為200px -->
- <div style="width:200px;position:relative">
- <div style="position;absolute;width:100%;background:orange">dd</div>
- </div>
結(jié)論5:當(dāng)元素寬度為100%時(shí),若元素為絕對(duì)定位元素,則元素寬度等于元素的offset-parent寬度的100%
3.元素為固定定位元素
- <!-- 父元素寬度為100px -->
- <div style="width:100px;">
- <div style="position:fixed;background:orange;width:100%">dd</div>
- </div>
- <!-- 父元素寬度為100px -->
- <div style="width:100px;position:relative">
- <div style="position:fixed;background:orange;width:100%">dd</div>
- </div>
結(jié)論6:當(dāng)元素寬度為100%時(shí),若元素為固定定位元素,則元素的寬度始終都為body寬度的100%
階段總結(jié)一
1.在元素不設(shè)寬度的情況下:
若元素為普通流中元素,元素寬度等于父元素寬度;
若元素不在文檔流中,元素寬度等于內(nèi)容寬度;
2.在元素寬度為100%的情況下:
若元素為普通流元素或者浮動(dòng)元素,元素寬度為父元素寬度的100%;若元素為絕對(duì)定位元素,元素寬度為元素offset-parent寬度的100%;若元素為固定定位元素,元素寬度始終為body的100%
關(guān)于元素高度的討論
根據(jù)上面關(guān)于寬度的討論,大家可以自己根據(jù)此思路進(jìn)行元素高度討論得出結(jié)論,這里我就直接給出我經(jīng)過驗(yàn)證得出的結(jié)論。若有不當(dāng)之處,請(qǐng)指正。
階段總結(jié)二
1.在元素不設(shè)高度的情況下:
若元素沒有內(nèi)容,則高度為0;若元素有內(nèi)容,元素高度為內(nèi)容高度
2.在元素高度為100%的情況下:
若元素為普通流元素或者浮動(dòng)元素,元素高度為父元素高度的100%;若元素為絕對(duì)定位元素,元素高度為元素offset-parent高度的100%;若元素為固定定位元素,元素高度始終為body的100%
4.元素的各種定義
(1)塊級(jí)元素與塊元素
塊級(jí)元素(block-level elements)
那些視覺上會(huì)被格式化成塊狀的元素,通俗一點(diǎn)來說就是那些會(huì)換新行的元素。display 屬性值為:block, list-item, table 值都可以將一個(gè)元素設(shè)置成塊級(jí)元素。
(2)塊元素
display屬性值為block的元素,是塊級(jí)元素的一個(gè)子集。
(3)行內(nèi)級(jí)元素與行內(nèi)元素
A.行內(nèi)級(jí)元素(inline-level elements)
行內(nèi)級(jí)元素是那些不會(huì)為自身內(nèi)容形成新的塊,而讓內(nèi)容分布在同一行中的元素。display 屬性的:inline, inline-table, inline-block 值都可以將一個(gè)元素設(shè)置成行內(nèi)級(jí)元素。
B.行內(nèi)元素
display屬性為inline的元素,是行內(nèi)級(jí)元素的一個(gè)子集
(4)置換元素與非置換元素
A.置換元素(replaced element)
一個(gè)內(nèi)容 不受CSS視覺格式化模型控制,CSS渲染模型并不考慮對(duì)此內(nèi)容的渲染,且元素本身一般擁有固有尺寸(寬度,高度,寬高比)的元素,被稱之為置換元素。這類元素,瀏覽器根據(jù)元素的標(biāo)簽和屬性,來決定元素的具體顯示內(nèi)容。
常見的置換元素有這些:img,input,textarea,select,button等
B.非置換元素(non-replaced element)
w3c并沒有給出明確的非置換元素的解釋,但能確定的是除置換元素之外,所有的元素都是非置換元素。
5.元素高度與寬度的討論
(1)行內(nèi)級(jí)非置換元素
寬度與高度的設(shè)置對(duì)于行內(nèi)級(jí)非置換元素時(shí)不適用的,例如span,a
(2)行內(nèi)級(jí)置換元素
在前面已經(jīng)結(jié)束過關(guān)于置換元素的概念,置換元素一般都是一般擁有固有尺寸(寬度,高度,寬高比)的元素,因此對(duì)于置換元素在不設(shè)寬度和高度的情況下,元素寬高度等于元素自身固有尺寸。因此只用對(duì)當(dāng)元素寬度或者高度設(shè)為100%的情況進(jìn)行討論
A.有固有比例的元素
對(duì)于有固有比例的元素來說如果寬度與高度的一方有確定的值,若另一方并無設(shè)置值,則另一方的計(jì)算值就由確定的高度或者寬度乘以固有比例來得到,因此對(duì)于有固有比例的元素,我們只用討論高度與寬度中的一方即可,例如img元素
B.沒有固有比例的元素
對(duì)于沒有固定比例的元素,元素的寬度或者高度不會(huì)隨另一方的變化而變化,例如input,textarea,select,button等
結(jié)論
對(duì)于行內(nèi)級(jí)置換元素:在設(shè)寬度為100%的情況下
比照上一篇的例子,可自行進(jìn)行實(shí)驗(yàn),這里我就直接給出結(jié)論
若元素為普通流元素或者浮動(dòng)元素,元素寬度或者高度為父元素寬度或者高度的100%;若元素為絕對(duì)定位元素,元素寬度或者高度為元素offset-parent寬度或者高度的100%;若元素為固定定位元素,元素寬度或者高度始終為body的100%
相關(guān)文章
- 下面小編就為大家?guī)硪黄狢SS控制div寬度最大寬度/高度和最小寬度/高度的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-12
不固定寬度和高度的情況下CSS調(diào)整div居中的方法總結(jié)
這里我們來看一下在不固定寬度和高度的情況下CSS調(diào)整div居中的方法總結(jié),考慮到了老IE的兼容性,同時(shí)也有CSS3的translate屬性解決方法介紹,需要的朋友可以參考下2016-06-14兼容IE6的網(wǎng)頁最小最大寬度和最小最大高度css寫法
CSS方法解決IE6最小高度,IE6最小寬度,IE6最大高度,IE6最大寬度,兼容IE6/IE7/IE8/火狐。2014-04-02- 在寫CSS的時(shí)候我們就會(huì)發(fā)現(xiàn)max-height、min-height、等屬性在IE6下是沒有效果的,這個(gè)時(shí)候我們就可以針對(duì)IE做出專門的設(shè)置,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下2013-11-07
CSS控制頁面最大最小寬度和高度可兼容IE6版本的實(shí)現(xiàn)方法
本文將介紹CSS控制頁面最大最小寬度和高度可兼容IE6版本的實(shí)現(xiàn)方法,感興趣的朋友可以參考下2012-11-15CSS min-height IE6、IE7、FF下DIV自適應(yīng)高度
IE6、IE7、FF下DIV自適應(yīng)高度2010-05-13- IE6真是太瘋狂了。今天由于項(xiàng)目需要做了這么一個(gè)布局:一個(gè)外部的相對(duì)定位div,內(nèi)部一個(gè)絕對(duì)定位的div2009-09-22
css實(shí)現(xiàn)一個(gè)元素高度固定寬度按比例顯示效果
這篇文章主要介紹了css實(shí)現(xiàn)一個(gè)元素高度固定寬度按比例顯示效果,本文給大家分享實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-28