Safari漏洞与CSS圆角渲染

时间:2011-05-17 23:00:30

标签: css safari

运行Safari 5.05。

这个CSS在Chrome和Firefox中看起来不错,但是当在Safari中显示时,border-left只跨越border-radius的开头。这会在顶部/底部留下间隙。

.boxWithLeftBorder {
height:100px;
width:100px;
background: #ddd;
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px;
border-left: 20px;
border-color:#000;
border-style:solid;}    

我在下面附上了一张图片来澄清。

鉴于人群的智慧,我猜这是众所周知的,或者有一个简单的解决方法。我已经Google搜索到了我的能力,并会欣赏任何想法。谢谢!

boxWithLeftBorder image

3 个答案:

答案 0 :(得分:3)

使用某些广告素材CSS pseudo elements:before:after),您可以实现效果 使用最小标记同时。 注意:红色边框颜色强调是我的。

enter image description here

HTML:

<div class="boxWithLeftBorder">Lorem Ipsum</div>

CSS:

.boxWithLeftBorder {
    background: #ddd;
    border: 3px solid #000;
    border-radius: 10px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    height: 100px;
    position: relative;
    width: 100px;
    padding: 0;
}

.boxWithLeftBorder:before {
    background-color: #c00;
    border-bottom-left-radius: 5px;
    border-top-left-radius: 5px;
    -moz-border-radius-bottomleft: 5px;
    -moz-border-radius-topleft: 5px;
    -webkit-border-bottom-left-radius: 5px;
    -webkit-border-top-left-radius: 5px;
    content: "";
    display: block;
    float: left;
    height: 100%;
    width: 20px;
}

编辑此小提琴:http://jsfiddle.net/BYa9C/5/

答案 1 :(得分:0)

Safari 5.05和Firefox 3.6+应支持border-radius而不使用-webkit-和-moz-前缀。

如果圆角元素中有元素,则需要具有完全透明的背景或自身具有圆角(讨论中元素内的第一个和最后一个元素)

答案 2 :(得分:0)

由于绘制边框的方式以及目前不同浏览器的变幻莫测,你最终会遇到以这种方式尝试这样做的问题。

您可以通过添加包装盒来破解功能:

.outer-box
{
  padding:2px 2px 2px 20px;
  border:none;
  -moz-border-radius:10px;
  -webkit-border-radius:10px;
  border-radius:10px;
  background:#000;
  width:100px;
  height:100px;
}
.inner-box
{
  border:none;
  -moz-border-radius:8px;
  -webkit-border-radius:8px;
  border-radius:8px;
  background:#ddd;
  width:100%;
  height:100%;
}

HTML:

<div class="outer-box">
  <div class="inner-box"></div>
</div>

我留下了-moz和-webkit前缀,因为那里还有大量的Firefox 3.5和Safari 4。

请注意,内盒的半径较小。这是必要的,因为在缩小方框时角度会发生变化。