Border-Radius 疯狂 CSS Webkit 与 Facebook 页面插件的消失

Border-Radius Crazy CSS disappeareance in Webkit with Facebook Page Plugin

我今天在开发一个新站点时发现了一个非常奇怪 的错误,我真的不知道为什么会这样,但我想有人可能知道。

我做了一个固定在页面 top-right 部分的导航菜单,里面有一个很大的 div 由很多 border-radius.

组成

在我向右侧栏添加 facebook 页面插件之前,它工作得非常好和正常。
当 div 的底部越过插件中页面的标题时,border-radius 就会消失。它在那里时保持正方形 div,如果我滚动页面并保持圆形直到 "touching" 那个页面插件的非常具体的部分。

我真的不知道为什么,这里有一些代码可以更好地理解:

.nav {
    position:fixed;
    width:100%;
    text-align:right;
    z-index:9999;
}
.face {
    position:absolute;
    width: 20%; 
    background:#F93;
    top:5px;
    right:10px;
    border-radius:9999px;
    overflow:hidden;
}

.face:before {
    content: "";
    display: block;
    padding-top: 95%;

}
.face a img {
    position:absolute;
    top:0;
    left:0;
    right:0;
    bottom:0;
    width:100%
}
.menu{
    display:inline-block;
    background:#FFF;
    padding:1em;
    width:50%;
    text-align:left;
    border-top-left-radius: 100px;
    border-bottom-left-radius: 100px;
    margin-top:3%;

}

.menu a {
    padding:0 0.5em;
    border-radius:4em;
}

还有:

<div class="nav">
<div class="menu">
<a href="#">menu</a><a href="#">menu</a><a href="#">menu</a><a href="#">menu</a>
</div><br/>
<div class="name">
<h2>name</h2>
</div>
<div class="face">
<a href="#"><img src="i/image.png"/></a>
</div>
</div>

顺便说一句,它似乎只发生在 webkit 浏览器上,在 firefox 上看起来很正常,甚至没有在 internet explorer 中测试。

编辑:刚刚在 Internet Explorer 上测试过,令人惊讶的是它确实运行良好,这现在非常非常奇怪

EDIT2:一些截图以进一步说明:

在触摸标题之前:

到达那个非常具体的位置后:

再往下:

只要超过标题就不是圆的,其他地方都可以。

EDIT3:我发现错误发生在另一个地方;我在页面上有一个 jquery 滑块;我在某些控件上悬停时有一个不透明度效果,当这些不透明度被动画化时,它再现了消失的 border-radius 问题,然后自行恢复正常;从中性状态中删除不透明度 CSS 规则使错误在悬停滑块时停止发生,但是当 div 在 facebook 插件

上时它会继续发生

由于 Facebook 插件的原因,这里可能会发生更多事情,但听起来这是一个没有考虑 Webkit CSS 规则的问题。如果这是问题所在,我很惊讶 Firefox 没有给您带来麻烦。跨浏览器支持设置圆角样式的标准方法是给出 border-radius,然后是 -moz-border-radius-webkit-border-radius:

.menu {
    ...
    border-radius: 100px 0px 0px 100px;
    -moz-border-radius: 100px 0px 0px 100px;
    -webkit-border-radius: 100px 0px 0px 100px;
    ...
}
.menu a {
    ...
    border-radius: 4em;
    -moz-border-radius: 4em;
    -webkit-border-radius: 4em;
}

好的,我找到了解决问题的方法,我只能认为我以前没有想到,因为我太累了。 ^^'

首先,我发现这个错误比我想象的还要奇怪,回想另一个元素上的不透明度似乎如何影响它,我尝试改变图像不透明度,然后,我发现 div 包含它的实际上仍然是圆的。

即使图像被 overflow:hidden; 剪切,它也没有被父 div 的 border-radius 剪切。

我也通过在图像上添加 border-radius 来修复它,所以现在即使在那个插件上它也是圆的,问题现在消失了。

我希望有一天这会被一些 webkit 开发人员发现并识别并修复那个错误,这真的很奇怪。

也感谢亨利的帮助!

TL;DR

已通过在父级 div 和图像上使用 border-radius 修复。