2012-04-08 72 views
1

有一個簡單的CSS3黑客可以將 附加到div的內容,以防止它的高度崩潰,無論它是否包含文本。我再也找不到它了。缺少CSS3屬性,它是什麼?

有人可以幫忙嗎?

<div></div> <!-- nothing in it = will collapse -->

<div>&nbsp;</div> <!-- still nothing in it but with &nbsp; appended it won't collapse -->

<div>SOME CONTENT&nbsp;</div> <!-- "SOME CONTENT" is added via JS; -->

+1

我相信你正在尋找的東西像' div:在{content:「」}之後,但Kolink的答案是一個更好更兼容的解決方案。 – animuson 2012-04-08 22:09:47

回答

3

您可能會在談論:after:before僞元素和content屬性。

#someId:after { 
    content: '&nbsp;'; 
} 

但是,爲什麼不使用min-height作爲Kolink建議?

編輯: 正如在評論中指出,該附加文本,因此該解決方案是使用Unicode表示爲逃脫序列:

#someId:after { 
    content: '\0000a0'; 
} 
+0

這實際上會追加字符串' '到最後。附加CSS的文本不會作爲HTML處理,因此HTML實體也不會被處理。 – animuson 2012-04-08 22:11:43

+2

你說得對,但它顯示瞭如何去做,不是嗎?只需將其更改爲轉義的Unicode字符:'\ 0000a0' – rcdmk 2012-04-08 22:14:42

+0

字體大小是動態計算的,它可能會向上偏移。你的解決方案也會導致字符串文字' '出現,至少它在Opera上是這樣的。 – 2012-04-08 22:14:53

0

CSS不允許你只需要添加內容的HTML標記。這將是錯誤的。

但是,你可以這樣做:

min-height: 1em; 

這將確保div總是至少一個行高,在沒有內容,因此沒有崩潰。

+2

由於第一句話,我不願意對此表示讚賞。 :x – animuson 2012-04-08 22:13:08

+0

另外,1em是當前字體大小中的m字形的寬度。如果你的行高設置爲1em,它將等於「一行高」,否則,它只是將最小高度設置爲m的寬度。 – MetalFrog 2012-04-09 13:14:09