ul li:first-child a {
border-radius: 5px 5px 0 0;
}
ul li:last-child a {
border-radius: 0 0 5px 5px;
}
当只有一个孩子时,最后一个孩子的样式会覆盖第一个孩子的样式。有没有办法同时应用(因为它是第一个和最后一个孩子)
我希望在没有 JS 的帮助下仅使用 CSS 来实现这一点。谢谢。
ul li:first-child a {
border-radius: 5px 5px 0 0;
}
ul li:last-child a {
border-radius: 0 0 5px 5px;
}
当只有一个孩子时,最后一个孩子的样式会覆盖第一个孩子的样式。有没有办法同时应用(因为它是第一个和最后一个孩子)
我希望在没有 JS 的帮助下仅使用 CSS 来实现这一点。谢谢。
只需单独应用您的边框:
ul li:first-child a {
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
ul li:last-child a {
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
这样,最后应用的规则不会覆盖前一个规则(border-radius: 5px 5px 0 0;
将底部边框半径重置为零)。
演示:http: //jsfiddle.net/vUz5Z/5/
您可以使用:only-child
. 只需添加
ul li:only-child a {
border-radius: 5px;
}
在他们之后。它在 IE8(或更早版本)中不起作用,但我猜这不是问题,因为border-radius
在 IE8 中也不起作用。
ul {border-radius: 5px}
或者如果可能的话,使用列表本身的边界半径。
为什么不把边界半径放在容器上呢?
ul,li { margin:0; padding:0; list-style:none; }
ul { border-radius: 10px; overflow:hidden }
a { display:block; margin-bottom:2px; padding:3px; background-color:#f00 }
ul li:last-child a {
margin: 0;
}
您还可以使用 0px 值的 auto insead。前任。(较少的):
&:first-child{
.border-radiuses (5px, auto, auto, 5px);
}
&:last-child{
.border-radiuses (auto, 5px, 5px, auto);
}