在IE11和Edge中(在Windows 10上),以下HTML / CSS会显示一个奇怪的透明边框,而不应该是这样。
<!DOCTYPE html><html>
<head>
<style>
body {
background-color:red;
font-size: 10pt;
}
.menu {
background-color: #5f6062;
overflow:hidden; /* To contain floats */
box-sizing: content-box;
}
.right-menu {
float:right;
margin:auto;
padding:0 0 0 20px;
list-style: none;
}
.spacer {
background-color: #ffffff;
height: 20px;
}
.content {
background-color: #ffffff;
border-radius:0 0 10px 10px;
background-clip: content-box;
}
</style>
</head>
<body>
<div class="menu">
<ul class="right-menu">
<li><a href="#">Link</a></li>
</ul>
</div>
<div class="spacer"></div>
<div class="content">
<div class="content-title">There shouldn't be a 'border' above this...</div>
</div>
</body>
</html>
JSFiddle(您可能需要垂直调整窗口大小,以便在JSFiddle中看到&#39;边框和淡入淡出 - 这甚至更奇怪。)
最有趣的部分是问题似乎是由border-radius
引起的。如果我删除它,边界&#39;离开了。如果我删除一些其他元素(例如.menu div),它也会消失,但这不是一个选项,因为我不想弄乱有这个问题的网站的结构。
我发现提及background-clip: content-box
或padding-box
作为解决方案,但它似乎无法在此工作。
另外值得注意的是,在尝试减少演示的大小时,我最终得到了一个代码,该代码在JSFiddle中显示了边框,但在纯HTML文件中却没有。这是我能够展示边界的最小边界。在JSFiddle里面和一个普通的HTML文件。
在EDGE Platform Issues中发现错误,但仍希望找到解决方法......
答案 0 :(得分:0)
看起来IE正在呈现透明边框以显示border-radius
但是选择了背景&#39;颜色比图层更低(在我的样本中,使用红色而不是白色)。
所以我选择了变通方法......
在我的实际页面上,有两个元素存在此错误。我的解决方法是将另一个元素的background-color
设置在具有border-radius
的元素的后面,而另一个元素设置为设置实际的border
与元素的背景颜色相同。