2015-03-31 35 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

相关问题