CSS border-radius父子问题(使用:hover& position:absolute)

时间:2013-02-22 11:47:05

标签: css hover parent css3 absolute

边界半径和子元素存在已知问题。子元素从父母的圆角突出。

常见的解决方案是将overflow:hidden添加到父元素。但是当父母有position:absolute时,它仍然不起作用。

http://jsfiddle.net/Xhrx8/2/

5 个答案:

答案 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;
 }

实例http://jsfiddle.net/Xhrx8/3/

答案 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

FIDDLE

答案 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);
}