边界半径和子元素存在已知问题。子元素从父母的圆角突出。
常见的解决方案是将overflow:hidden
添加到父元素。但是当父母有position:absolute
时,它仍然不起作用。
答案 0 :(得分:2)
HTML
<div id="items">
<div id="top">One</div>
<div>Two</div>
<div>Three</div>
<div id="bottom">Four</div>
CSS
#items {
border: 1px solid black;
border-radius: 10px;
overflow: hidden;
position: absolute;
}
#items div {
border-bottom: 1px solid black;
padding: 5px;
}
#items #top:hover {
border-top-right-radius: 10px;
border-top-left-radius: 10px;
background-color: #ccc;
}
#items div:hover{
background-color: #ccc;
}
#items #bottom:hover {
background-color: #ccc;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
}
答案 1 :(得分:1)
这是Chrome中的已知错误(在Firefox中运行良好)。
你需要一个围绕你的DIV #items的包装器,并为该包装器分配属性。
答案 2 :(得分:1)
这似乎是chrome css的一个错误 我们可以做的工作是使用包装器
<div style="position:absolute">
<div id="items">
<div>One</div>
<div>Two</div>
<div>Three</div>
<div>Four</div>
</div>
<div>
并从position:absolute
#items
答案 3 :(得分:0)
我喜欢user1136403的答案,但我会使用第一个和最后一个孩子的css选择器。这样您就不必将id =“top”,id =“bottom”添加到HTML中的第一个和最后一个li。
HTML
<div id="items">
<div >One</div>
<div>Two</div>
<div>Three</div>
<div >Four</div>
</div>
CSS
#items {
border: 1px solid black;
border-radius: 10px;
overflow: hidden;
position: absolute;
}
#items div {
border-bottom: 1px solid black;
padding: 5px;
}
#items div {
border-bottom:none; //removes the double border on the bottom
}
#items div:hover{
background-color: #ccc; //this is the only background color def you need
}
#items div:first-child:hover {
border-top-right-radius: 10px;
border-top-left-radius: 10px;
}
#items div:last-child:hover {
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
}
另请注意,您不需要在first-last-child css块中使用'background-color'。它已在#items div:hover {}中定义。这是小提琴。 http://jsfiddle.net/honkskillet/CHL8K/
答案 4 :(得分:0)
您需要通过css3强制加速硬件。
#items {
[......]
-webkit-transform: translate3d(0,0,0);
-moz-transform: translate3d(0,0,0);
-ms-transform: translate3d(0,0,0);
-o-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}