2015-03-31 718 views
4

我已經花了相當不錯的時間在這個上,但無法找到解決方案。我的問題是,我想在文本塊的內容之前顯示一個圖形,並且該圖標所包含的元素應該填充身體所需的所有高度。這適用於除IE以外的所有瀏覽器版本。表細胞上面使用IE11,你會看到我的問題是小提琴:如果添加/刪除顯示我已經在這個fiddle在IE11中使用僞元素:: before和display:table-cell和glyphicons contens不會出現

<div class="block"> 
    <div class="body">BODY</div> 
</div> 

.body::before { 
    background: blue; 
    content: "\e005"; 
    font-family: "Glyphicons Halflings"; 
    display: table-cell; 
    width:30%; 
} 

.body { 
    background-color: green; 
    display: table; 
    width: 25%; 
} 

煮下來。有人可以給我一個解決方案,甚至更好,解釋發生了什麼。

回答

4

在Microsoft Connect網站上有關於此問題的活動bug report。在IE上,font-family decleration在具有display: table-cell;屬性的僞元素中被忽略。

要解決此問題,您需要設置display: inline-block;

+0

或者你可以聲明一個'float'屬性爲@Sammy提到的。聲明一個具有'none'以外的值的'float'屬性可將'display:table-cell'轉換爲'display:block;'(參見[here](http://www.w3.org/TR/CSS21/) visuren.html#DIS-POS-FLO))。所以,沒有關於'浮動'的技巧,仍然是'顯示'屬性創造了變化。 – 2015-04-01 00:05:50

+0

我很肯定,浮動生成的內容將有效地取消它的'display:table-cell;'屬性,這意味着它的高度將不再匹配.body元素的高度。 – DoctorDestructo 2015-04-01 02:20:41

1

添加float:left.body的伎倆

.body:before { 
    background: blue; 
    content: "\e005"; 
    font-family: "Glyphicons Halflings"; 
    display: table-cell; 
    width:30%; 
    float:left; 
} 

fiddle


我將在這裏保持這個以前的答案。用戶可能會發現它有用:

您可以嘗試使用的content: "\2665"代替"/e005"

.body:before { 
    background: blue; 
    content: "\2665"; 
    display: table-cell; 
    width:30%; 
} 

fiddle

點擊here獲取更多信息。

+0

謝謝你的努力。這項工作,如果我想要一顆心。我有我自己的字體設置,圖形只是一個例子,他們被下載,因爲如果我刪除顯示:table.cell,即使在小提琴中,圖標也會顯示。 – Joche 2015-03-31 22:59:40

+0

修改了答案。浮動:左邊似乎有伎倆。 – Sammy 2015-03-31 23:34:10

+0

@Sammy您將'float:left;'添加到生成的':before'元素,而不是'.body'元素。不幸的是,它將生成的元素的高度與其內容的高度相關聯,而不是.body元素的高度。我不認爲這是OP想要的。 – DoctorDestructo 2015-04-01 02:18:52