2013-04-25 65 views
4

当您将轮廓元素和伪元素组合在一起时,Firefox的行为与Chrome和Safari(我没有测试过其他浏览器)的行为不同。 有没有办法解决它或这是一个错误?带有轮廓和伪元素的Firefox中的奇怪行为

.main { 
 
    position: relative; 
 
    width: 100px; 
 
    height: 100px; 
 
    margin: 10px auto; 
 
    border: 2px solid #f00; 
 
    outline: 2px solid #00f; 
 
} 
 
.main:after { 
 
    content: 'Hello'; 
 
    position: absolute; 
 
    width: 100px; 
 
    text-align: center; 
 
    bottom: -50px; 
 
} 
 
.wtf { 
 
    width: 400px; 
 
    margin: 90px auto; 
 
}
<div class="main"></div> 
 
<div class="wtf"> 
 
    <p>In Chrome and Safari the 'Hello' is outside of the outline.</p> 
 
    <p>In firefox the outline is extended and the 'Hello' is inside the outline. Bug from Firefox or is there a way to fix this?</p> 
 
</div>

演示:http://codepen.io/romainberger/pen/nuxlh

编辑: 测试在Firefox 20.0,铬28和Safari 5.1

回答

3

现在用于

框阴影

因为这样

.main { 
    position: relative; 
    width: 100px; 
    z-index:1; 
    height: 100px; 
    margin: 10px auto; 
    border: 2px solid #f00; 
    box-shadow:0px 0px 0px 3px #00f; 
} 
.main:after { 
    content: 'Hello'; 
    position: absolute; 
    text-align: center; 
    bottom: -50px; 
    left:0; 
    right:0; 
    z-index:2; 
} 

.wtf { 
    width: 400px; 
    margin: 90px auto; 
} 

Demo

+0

我没有想过盒子影子,它很好用。我有点担心浏览器支持,但它只是排除IE8,所以我会去“螺丝IE8”。谢谢! – romainberger 2013-04-25 12:42:28

1

无需使用的z-index。

.main { 
    position: relative; 
    width: 100px; 
    height: 100px; 
    margin: 10px auto; 
    border: 2px solid #f00; 
    box-shadow:0px 0px 0px 3px #00f; 
} 
.main:after { 
    content: 'Hello'; 
    position: absolute; 
    text-align: center; 
    bottom: -50px; 
    left:0; 
    right:0; 
} 

.wtf { 
    width: 400px; 
    margin: 90px auto; 
}