LZ混淆了Doctype定義下分類各個(gè)標(biāo)簽的塊級(jí)、內(nèi)聯(lián)概念和CSS的塊級(jí)、內(nèi)聯(lián)概念。Doctype定義中的inline/block第一個(gè)跟Doctype定義有關(guān),你看到的這個(gè)規(guī)則,是XHTMLStrict中定義的。那么這個(gè)語(yǔ)境下的inline和block是什么意思呢,它們是對(duì)html標(biāo)簽進(jìn)行的分類(比如p、div、form都屬于block,而span、a則屬于inline),而和它們最終的CSS屬性一點(diǎn)關(guān)系都沒(méi)有(你可以把p的display改為inline,瀏覽器不會(huì)打死你,但是接替你的頁(yè)面重構(gòu)可能會(huì))。這個(gè)在Doctype里定義的規(guī)則直接導(dǎo)致了瀏覽器parse整個(gè)文檔的時(shí)候構(gòu)建成的樹(shù)是什么樣子的。這里有一篇非常棒的關(guān)于元素嵌套規(guī)則及其對(duì)文檔結(jié)構(gòu)影響的說(shuō)明,你可以讀一下。總結(jié):Doctype這個(gè)語(yǔ)境下面,inline和block指的是一種分類各個(gè)標(biāo)簽的方法,這個(gè)方法由各個(gè)標(biāo)簽的語(yǔ)義和默認(rèn)的展現(xiàn)形式得來(lái),區(qū)分它們主要是因?yàn)樗鼈冊(cè)诓煌膁octype里面會(huì)有不一樣的嵌套約束,會(huì)影響到瀏覽器生成的文檔結(jié)構(gòu)。CSS的block和inlineLZ第二個(gè)代碼規(guī)范的建議和CSS中高寬計(jì)算模式有關(guān)系:塊級(jí)只包含塊級(jí)的時(shí)候,進(jìn)入的模式是塊級(jí)∈塊級(jí)模式,相關(guān)計(jì)算規(guī)則大致是內(nèi)層寬自適應(yīng)于外層的content-box的寬;外層的content-box自適應(yīng)于內(nèi)部所有塊級(jí)容器的高;等等等等。塊級(jí)只包含內(nèi)聯(lián)元素的時(shí)候,進(jìn)入的模式是內(nèi)聯(lián)∈塊級(jí)模式,相關(guān)的規(guī)則大致是:內(nèi)聯(lián)構(gòu)成line-box,line-box的高由內(nèi)聯(lián)元素的高、line-height和vertical-align決定;通過(guò)斷行算法,內(nèi)聯(lián)元素組成N個(gè)line-box,line-box的寬由塊級(jí)元素的content-box的寬決定;各個(gè)line-box撐高塊級(jí);等等等等。塊級(jí)元素同時(shí)包含塊級(jí)元素和內(nèi)聯(lián)元素的時(shí)候,會(huì)為每個(gè)內(nèi)聯(lián)元素創(chuàng)建匿名塊,從而拆解問(wèn)題為塊級(jí)/匿名塊∈塊級(jí)模式和內(nèi)聯(lián)∈塊級(jí)/匿名塊模式,回到規(guī)則1,2去計(jì)算各個(gè)元素的最終寬、高。LZ第二個(gè)代碼規(guī)范可以這樣解釋:由于第三個(gè)規(guī)則的存在,所以為了能夠在所有時(shí)候都能完美的控制塊級(jí)元素的高和寬,內(nèi)聯(lián)元素和塊級(jí)元素并列時(shí),在內(nèi)聯(lián)元素外包裹一層塊級(jí)元素。總結(jié):在CSS屬性這個(gè)語(yǔ)境下面,inline和block指的是元素最終的display屬性,區(qū)分它們主要是因?yàn)樗鼈儠?huì)導(dǎo)致不一樣的高寬計(jì)算模式。