你不得不了解的HTML知識

這次要細(xì)說的只是塊級元素和行內(nèi)元素的內(nèi)容,如有不對钞诡,請輕噴潜索。

塊級元素和行內(nèi)元素

默認(rèn)情況下塊級元素會(huì)始終占居一行竹习,而行內(nèi)元素并不會(huì)。除了 table 元素的 display 屬性比較特殊以外拗窃,基本上所有的 HTML 元素的 display 的屬性值要么是 block,要么是 inline九默。無論你想了解哪個(gè) HTML 元素驼修,第一個(gè)要問的問題就是:它是塊級元素還是行內(nèi)元素诈铛,然后在編寫標(biāo)記的時(shí)候預(yù)想到這個(gè)元素在初始狀態(tài)下是如何定位的幢竹,這樣才能進(jìn)一步想好將來怎么用 CSS 重新定位它,因?yàn)閴K級元素和行內(nèi)元素在定位上有很大的區(qū)別蹲坷,后面會(huì)詳細(xì)說明循签。

塊級元素盒子(一個(gè)很重要的概念————盒模型)會(huì)擴(kuò)展到與父元素同寬幸乒,這也是為什么塊級元素會(huì)占居一行的原因了罕扎,因?yàn)樗袎K級元素的父元素都是 body,而它的默認(rèn)寬度就是瀏覽器的視口大小杆查,所以默認(rèn)情況下塊級元素的寬度也和瀏覽器的視口一樣寬臀蛛,這樣以來浊仆,一個(gè)塊級元素旁邊也就沒有空間來容納另一個(gè)塊級元素了。

相比于塊級元素會(huì)擴(kuò)展到與父元素同寬舔琅,然而行內(nèi)元素的行為卻是恰恰相反备蚓,它會(huì)盡量的收縮包裹其內(nèi)容,這也就是為什么幾個(gè)行內(nèi)元素會(huì)并排顯示在一行直到它們排滿一行才會(huì)另起一行二跋,而每個(gè)塊級元素會(huì)直接另起一行的原因了流昏。

下表列出了一些常見的塊級元素和行內(nèi)元素:

塊級元素 行內(nèi)元素
div span
form a
table img
header label
aside input
section select
article textarea
figure br
figcaption i
h1~h6 em
nav strong
p small
pre button
blockqoute sub
canvas sup
ol, ul, dl code

之前提到過無論你想了解哪個(gè) HTML 元素,第一個(gè)要問的問題就是:它是塊級元素還是行內(nèi)元素横缔,因?yàn)樗鼈冊诤心P蜕系谋憩F(xiàn)有很大的不同铺遂,不過在了解它們的不同之前我們還得先知道另外一個(gè)概念————替換元素非替換元素,其中替換元素就是指瀏覽器是根據(jù)元素的屬性來判斷具體要顯示的內(nèi)容的元素茎刚,比如 img 標(biāo)簽,瀏覽器是根據(jù)其 src 的屬性值來讀取這個(gè)元素所包含的內(nèi)容的撤逢,常見的替換元素還有 input 膛锭、textareaselect蚊荣、 object初狰、 iframevideo 等等互例,這些元素都有一個(gè)共同的特點(diǎn)奢入,就是瀏覽器并不直接顯示其內(nèi)容,而是通過其某個(gè)屬性的值來顯示具體的內(nèi)容媳叨,比如瀏覽器會(huì)根據(jù) input 中的 type 的屬性值來判斷到底應(yīng)該顯示單選按鈕還是多選按鈕亦或是文本輸入框腥光。而對于非替換元素,比如 p糊秆、label 元素等等武福,瀏覽器這是直接顯示元素所包含的內(nèi)容《环看到這里你應(yīng)該大概的知道了什么是替換元素和非替換元素了捉片。

對著兩個(gè)概念有了大概的了解后就可以對 blockinline 在盒模型上的表現(xiàn)差異進(jìn)行了解了,首先是 margin 汞舱,W3C 對其所支持了元素對象是這么定義的:

Applies to: all elements except elements with table display types other than table-caption, table and inline-table

我的理解就是所有元素都支持 margin 除了 display 屬性值為 table-captiontable-inline 以外的所有表格顯示類型比如table-row-group伍纫、 table-celltable-rowtable-header-group等等,但是為了驗(yàn)證我的理解昂芜,我發(fā)現(xiàn) display 屬性值為 table 的元素也支持莹规,可能是我對原文標(biāo)準(zhǔn)的理解有誤。但還有一個(gè)要特別注意的是 margin-topmargin-bottom 兩個(gè)屬性比較特殊说铃,它們對非替換行內(nèi)元素沒有效果访惜,下面是 W3C 上對于 margin-topmargin-bottom 支持對象的介紹:

Applies to: all elements except elements with table display types other than table-caption, table and inline-table
These properties have no effect on non-replaced inline elements.

前面一句和之前對 margin 的描述是一樣的嘹履,這毫無疑問,下面這句話的意思是這些( margin-topmargin-bottom )屬性對非替換行內(nèi)元素沒有效果比如 aspan债热,注意這里是非替換行內(nèi)元素而不單單是非替換元素或者是行內(nèi)元素砾嫉。比如 img 就是一個(gè)行內(nèi)元素, margin-topmargin-bottom 對它是有效果的窒篱,因?yàn)樗且粋€(gè)替換元素而不是非替換元素焕刮,所以對于「 margin-topmargin-bottom 對行內(nèi)元素沒有效果」這種說法是不對的。

而對于 padding 的支持對象墙杯,W3C 是這么描述的:

all elements except table-row-group, table-header-group, table-footer-group, table-row, table-column-group and table-column

上面這句話的意思是除了表格顯示類型為 table-row-group配并、 table-header-grouptable-footer-group高镐、 table-row,table-column-grouptable-column 的元素不支持溉旋,其他所有的元素都支持。

但這里有些特殊情況需要注意的是嫉髓,對行內(nèi)元素比如 spanimg 設(shè)置左右內(nèi)邊距的效果是可見可观腊,但是對行內(nèi)元素設(shè)置上下內(nèi)邊距在有些情況下是不可見的,這些情況又要分為是否為替換元素和是否設(shè)置了背景色算行,為了能更直觀的了解這些概念梧油,我在這里做了個(gè)表格:

padding-top和padding-bottom 對于行內(nèi)元素是否可見 替換元素(e.g: input) 非替換元素(e.g: span)

設(shè)置背景色
可見
影響行高
會(huì)撐開父元素
可見
不影響行高
不會(huì)撐開父元素

沒有設(shè)置背景色
可見
影響行高
會(huì)撐開父元素
不可見
不影響行高
不會(huì)撐開父元素

所以對于「 padding-toppadding-bottom 對行內(nèi)元素沒有效果」這種說法也是不對的,因?yàn)樗鼈冎皇菍τ跊]有設(shè)置背景色的行內(nèi)非替換元素效果不可見而已州邢,而對于行內(nèi)替換元素來說儡陨,不管是否設(shè)置了背景色都是有效果了,并且會(huì)把父元素?fù)伍_量淌。

說了這么多 blockinline 的區(qū)別骗村,其實(shí)除了這兩個(gè)常見的 display 屬性以外還有一個(gè)屬性也是非常常見的,那就是 inline-block 类少,沒錯(cuò)叙身,這就是前面兩種情況的結(jié)合體,它既有 block 的特性又有 inline 的特性硫狞,比如把一個(gè) display 屬性值為 block 或者 inline 的元素屬性值設(shè)置成 inline-block 后信轿,既可以用只對行內(nèi)元素有效的 text-align: center; 聲明對其進(jìn)行居中以外,還可以用 padding-toppadding-bottom 對元素設(shè)置上下內(nèi)邊距而無需對其設(shè)置背景色残吩,并且能把父元素?fù)伍_财忽。

不要問我為何知道這么多,我只獻(xiàn)上傳送門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泣侮,一起剝皮案震驚了整個(gè)濱河市即彪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖隶校,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漏益,死亡現(xiàn)場離奇詭異,居然都是意外死亡深胳,警方通過查閱死者的電腦和手機(jī)绰疤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舞终,“玉大人轻庆,你說我怎么就攤上這事×踩埃” “怎么了余爆?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長夸盟。 經(jīng)常有香客問我蛾方,道長,這世上最難降的妖魔是什么满俗? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任转捕,我火速辦了婚禮,結(jié)果婚禮上唆垃,老公的妹妹穿的比我還像新娘。我一直安慰自己痘儡,他們只是感情好辕万,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沉删,像睡著了一般渐尿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上矾瑰,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天砖茸,我揣著相機(jī)與錄音,去河邊找鬼殴穴。 笑死凉夯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的采幌。 我是一名探鬼主播劲够,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼休傍!你這毒婦竟也來了征绎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤磨取,失蹤者是張志新(化名)和其女友劉穎人柿,沒想到半個(gè)月后柴墩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凫岖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年江咳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隘截。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扎阶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婶芭,到底是詐尸還是另有隱情东臀,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布犀农,位于F島的核電站惰赋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏呵哨。R本人自食惡果不足惜赁濒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孟害。 院中可真熱鬧拒炎,春花似錦、人聲如沸挨务。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谎柄。三九已至丁侄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朝巫,已是汗流浹背鸿摇。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劈猿,地道東北人拙吉。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像糙臼,于是被迫代替她去往敵國和親庐镐。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容