閱讀字母間距的規格後,我明白原子內聯的運行(前內聯塊)的元素被視爲一個單個字符(http://www.w3.org/TR/css3-text/#letter-spacing):爲什麼嵌套內聯元素和後續字符之間沒有字母間距?
對於字母間距的目的,每個連續運行原子內聯(如圖像和/或嵌入塊)被視爲單個字符。
在我測試過的所有瀏覽器(Chrome,Safari,Firefox,IE 9 + 10)中,似乎並不像這樣工作。
下面的代碼(http://codepen.io/caleb/pen/CqDfK):
<style>
div { letter-spacing: 2em; }
em { letter-spacing: normal; }
</style>
<div>
a<em>em</em><em>em</em>bc
</div>
呈現,如:
a ememb c
是否有一個原因,爲什麼沒有在emem
和b
之間的間距的附加2em的?由於emem
是單個字符。
我在IE7中測試了上面的代碼,它給了我:'aememb c',並且在IE8中它與原始文章中的相同。這聽起來似乎沒有人去實現這部分規範呢。 – 2013-03-01 18:42:36
CSS2.1對['letter-spacing'](http://www.w3.org/TR/CSS21/text.html#spacing-props)沒有太多的描述,但它確實表示[in-replace元素是*不*原子內聯](http://www.w3.org/TR/CSS21/visuren.html#inline-boxes)。這意味着像'em'這樣的元素默認情況下是'display:inline',而不是*原子內聯。也就是說,在你的'em'規則中聲明'display:inline-block'不管在當前的瀏覽器中都沒有區別。 – BoltClock 2013-03-01 20:37:28