前段时间我为自己制作了一个小页面,偶然发现了一个以后无法回答的错误。
打开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”之外别无其他答案......当我得到满意的答案时,我会保持此页面更新:)
答案 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的一个错误,他们修复了它。问题已结束:)