【发布时间】:2012-07-12 22:20:26
【问题描述】:
我有一个带有多个边框的div,对于一个边框我使用box-shadow。我希望这个div 有几个圆角和一个方角。但是,每当一个角添加了border-radius(0 除外)时,box-shadow 的其他角也会变为圆角(半径与border-radius 的任何指定值不同)。有没有办法为某些角设置border-radius,但不是全部,并让box-shadow 对所有角使用与border 相同的半径?
这种行为存在于 Chrome 19、Firefox 13 和 Safari 5 中,但它不存在于 Internet Explorer 9 或 Opera 12 中,它们都按预期显示 box-shadow - 带有当border 的角也是正方形时,box-shadow 的角也是正方形。
代码(example):
CSS
.block1 {
padding: 18px 14px;
margin: 5px;
background: #fff;
border: 1px solid red;
-webkit-box-shadow: 0 0 0 5px rgba(0, 57, 47, .32);
-moz-box-shadow: 0 0 0 5px rgba(0, 57, 47, .32);
box-shadow: 0 0 0 5px rgba(0, 57, 47, .32);
-webkit-border-radius: 10px 0 10px 10px;
-moz-border-radius: 10px 0 10px 10px;
border-radius: 10px 0 10px 10px;
}
.block2 {
padding: 18px 14px;
margin: 5px;
background: #fff;
border: 1px solid red;
-webkit-box-shadow: 0 0 0 5px rgba(0, 57, 47, .32);
-moz-box-shadow: 0 0 0 5px rgba(0, 57, 47, .32);
box-shadow: 0 0 0 5px rgba(0, 57, 47, .32);
}
.outer {
border: 1px solid green;
}
HTML
<p>Top-right block corner is not rounded, but box-shadow is:</p>
<div class="outer">
<div class="block1">
foo
</div>
</div>
<p>Box-shadow on block without border-radius:</p>
<div class="outer">
<div class="block2">
bar
</div>
</div>
【问题讨论】:
-
由于在您的示例中阴影不会消失,粗边框是否可以解决这个问题?不确定红色边框是用于演示还是在您的实际代码中:jsfiddle.net/cchana/3efB5/5
-
我必须在一个元素上有多个边框 - 红色边框是强制性的,而且我还需要一个边框。我可以用伪元素解决这个问题,但问题本身仍然存在。虽然我认为这个问题更合适的地方是 webkit 和 mozilla bugtrackers...
-
有趣的测试用例。我打算建议使用轮廓来获得第二个边框,但边框半径似乎根本不适用于该边框(至少在 chrome 中)。
-
@only,是的,这绝对看起来像一个错误。如果这不是引擎的错误,我会说这是规范 (imo) 的错误。
-
@only,您可以在提交错误报告并发布报告链接时联系我吗? (或者如果您不打算报告该错误,请告诉我。)
标签: css