【发布时间】:2010-09-15 05:18:35
【问题描述】:
我在另一个 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 的边界?
编辑
以下 hack 暂时达到了目的。但问题仍然存在(可能是 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;
}
【问题讨论】:
-
您是否尝试过为内部元素设置完全相同的边框半径?
-
但我希望内部元素的边框半径在底部是直的。是否可以只为某个角设置边框半径?
-
当然。您甚至可以像
border-radius: TL TR BL BR一样分配它们。 -
我把它读作“强迫孩子服从父母的命令”。 :)
-
除 Safari 外,
-moz-border-radius和border-radius可以用作具有四个值的速记:10px 10px 0 0。但是对于 Safari,您需要单独设置它们。
标签: css