ul li:first-child a {
border-radius: 5px 5px 0 0;
}
ul li:last-child a {
border-radius: 0 0 5px 5px;
}
子が1つしかない場合、最後の子のスタイルが最初の子のスタイルを上書きします。両方を適用する方法はありますか(最初と最後の両方の子であるため)
JSの助けを借りずに、CSSだけでこれを達成しようとしています。ありがとう。
ul li:first-child a {
border-radius: 5px 5px 0 0;
}
ul li:last-child a {
border-radius: 0 0 5px 5px;
}
子が1つしかない場合、最後の子のスタイルが最初の子のスタイルを上書きします。両方を適用する方法はありますか(最初と最後の両方の子であるため)
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値の自動インシードを使用することもできます。元。(以下):
&:first-child{
.border-radiuses (5px, auto, auto, 5px);
}
&:last-child{
.border-radiuses (auto, 5px, 5px, auto);
}