我在另一个div里面有一个div。 #outer
和#inner
。 #outer
有弯曲的边框和白色背景。 #inner
没有弯曲的边框和绿色背景。 #inner
延伸到#outer
的曲线边界之外。反正有没有阻止这个?
#outer {
display: block; float: right; margin: 0; width: 200px;
background-color: white; overflow: hidden;
-moz-border-radius: 10px;
-khtml-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
#inner { background-color: #209400; height: 10px; border-top: none; }
<div id="outer">
<div id="inner"></div>
<!-- other stuff needs a white background -->
<!-- bottom corners needs a white background -->
</div>
无论我如何尝试它仍然重叠。如何让#inner
服从并填充到#outer
的边界?
修改
以下黑客为此目的服务。但问题是(可能是CSS3和webbrowser编剧):为什么子元素不服从父母的弯曲边界,无论如何都要强迫他们去做?
现在可以根据我的需要解决这个问题,您可以将曲线分配给各个边框。所以就我的目的而言,我只是给内部元素的前两个分配了一条曲线。
#inner {
border-top-right-radius: 10px; -moz-border-radius-topright: 10px; -webkit-border-top-right-radius: 10px;
border-top-left-radius: 10px; -moz-border-radius-topleft: 10px; -webkit-border-top-left-radius: 10px;
}
答案 0 :(得分:151)
根据规格:
一个盒子的背景,但不是它的背景 边框图像,被剪切到 适当的曲线(由...确定) “背景剪辑”)。其他影响 剪辑到边框或填充边缘 (比如'溢出'除了 '可见')也必须剪辑到 曲线。 替换内容 元素总是被修剪为 内容边缘曲线。此外,该区域 在边界边缘的曲线之外 代表不接受鼠标事件 元素。
http://www.w3.org/TR/css3-background/#the-border-radius
这意味着overflow: hidden
上的#outer
应该有效。但是,这不适用于Firefox 3.6及更低版本。这已在Firefox 4中修复:
圆角现在剪辑内容和图像(如果溢出:未设置可见)。
https://developer.mozilla.org/en/CSS/-moz-border-radius
所以你仍然需要修复,只需将其缩短为:
#outer {
overflow: hidden;
}
#inner {
-moz-border-radius: 10px 10px 0 0;
}
答案 1 :(得分:1)
这会有什么问题?
#outer {
display: block; float: right; margin: 0; width: 200px;
background-color: white; overflow: hidden;
}
#inner { background-color: #209400; height: 10px; border-top: none; }
#outer, #inner{
-moz-border-radius: 10px;
-khtml-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
}
答案 2 :(得分:1)
如果你想在底部有锋利的边缘: 使用这些:
border-top-left-radius: 10px; border-top-right-radius: 10px; -moz-border-radius-topleft -moz-border-radius-topright
答案 3 :(得分:0)
你有没有尝试过这个位置:相对于内部div ???
即:
#inner {
background-color: #209400;
height: 10px;
border-top: none;
position: relative;
left: 15px;
top: 15px;
}