Opera中的border-radius bug

时间:2013-03-31 15:17:44

标签: css opera css3

前段时间我为自己制作了一个小页面,偶然发现了一个以后无法回答的错误。

打开http://darngoodpictures.com/#showme时,您会在左侧和右侧看到导航箭头。这些完全是CSS制作的。现在我会采取另一种方式,但它已经完成,我坚持它:)

在我测试的每个浏览器中,箭头看起来都应该如此。唯一的例外是Opera。 Opera以我以前从未见过的方式呈现箭头。谁能解释那里发生了什么?我很快发现Opera在箭头的border-radius-property方面存在一些问题,但是有人能提供更准确的信息吗?这种行为太奇怪了......

编辑: 它变得越来越怪异。最初我想,我的CSS结合border-radius以某种方式引发了问题,但问题是边界半径。当边界宽度与它结合时,它会变得更加强烈。 请参阅以下jsfiddles:

我:http://jsfiddle.net/62ujn/(一切都按照人们的预期呈现)

关键规则:

border-radius: 0;
border-width: 200px;

II:http://jsfiddle.net/62ujn/1/(Opera中的第一个小问题)

关键规则:

border-radius: 50px;
border-width: 200px;

III:http://jsfiddle.net/62ujn/2/(从这里开始,Opera中的渲染变得荒谬)

关键规则:

border-radius: 50px;
border-width: 200px 150px;

IV:http://jsfiddle.net/62ujn/3/

关键规则:

border-radius: 50px;
border-width: 200px 150px 100px;

V:http://jsfiddle.net/62ujn/4/

关键规则:

border-radius: 50px;
border-width: 200px 150px 100px 50px;

奇怪。 非常。奇怪。

编辑2:

我刚刚联系了Opera,因为我怀疑除了“Opera-Bug”之外别无其他答案......当我得到满意的答案时,我会保持此页面更新:)

4 个答案:

答案 0 :(得分:2)

.round { 
       -o-border-radius topleft: 30px;  **//for Opera and Iphone5 Mobile**
       -o-border-radius topright: 30px;
       -o-border-radius bottomleft: 30px;
       -o-border-radius bottomright: 30px;
       }

答案 1 :(得分:1)

尝试为您的div border-radius提供跨浏览器行为

 .arrow {
    border-radius: 30px;
    -o-border-radius: 30px;  //for Opera
    -webkit-border-radius: 30px; // for Chrome, Safari
    -moz-border-radius: 30px; // for Mozilla
    border-style: solid;
    cursor: pointer;
    height: 0;
    margin: 0 0 -15px 50px;
    width: 0;
  }

答案 2 :(得分:0)

这些确实非常有趣的神器;)你正在使用0维度和边框填充所有空间的CSS技巧。只有这会导致与边界半径结合的问题。在大多数情况下,边界半径本身在Opera中运行良好,即使边框非常粗Fiddle-Example,也有0边框和一种颜色的情况。 但我知道我们都喜欢这些小伎俩和歌剧是一个有趣的塞子。

所以,这里有一个ALTERNATIVE VERSION OF YOUR NAVIGATION ARROWS,对歌剧有效,但也不完美。 Opera真的很糟糕; /

HTML:

<div>
    <div class='first'></div>
    <div class='second'></div>
</div>

<div class='mirror'>
    <div class='first'></div>
    <div class='second'></div>
</div>

CSS:

div {
    width:200px; height:100px;
    background:none;   
    position:relative;
    margin-bottom:5px;
}

.first {
    position:absolute;
    left:0; top:0;
    width:60px; height:100px;
    background:black;
    border-radius:40px 0 0 40px;
    transform:scale(0.5, 1);
    -webkit-transform:scale(0.5, 1);
    -o-transform:scale(0.5, 1);
}
.second {
    position:absolute;
    left:57px; top:0;
    width:0; height:0;
    background:none;

    border-top: 50px solid transparent;
    border-bottom: 50px solid transparent;
    border-left: 50px solid green;
    transform:scale(1.5, 1);
    -webkit-transform:scale(1.5, 1);
    -o-transform:scale(1.5, 1);
}

.mirror { 
    transform:scaleX(-1);
    -webkit-transform:scaleX(-1);
    -o-transform:scaleX(-1);    
}

好消息是Opera将停止开发自己的渲染引擎并开始使用webkit。因此,您的箭头问题将通过歌剧未来更新之一自动解决^^

答案 3 :(得分:0)

好的,只是为了正式结束这个问题:前一段时间Opera发布了一个不再存在这些问题的版本。所以,显然,这是Opera的一个错误,他们修复了它。问题已结束:)