カテゴリー︎: 【CSS】
CSS隣接セレクタは「要素が隣接している場合にスタイルを適用」という動きになるので、
li要素がひとつしかない場合はスタイルが適用されず、
2つ以上になった場合に2つ目以降のli要素にスタイルを適用させることができる。
つまり、最初ボーダーにはスタイルを適用しないで、
2番目からborder-top: 1px..を
適用することで、最初と最後のボーダーがない状態となる
webサイトでよくあるナビゲーションで簡単に実装することができます。
↓サンプルコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>リストを作る_03</title>
</head>
<body>
<h1>リストを作る_03</h1>
<style>
body {
margin: 0;
padding: 0;
}
ul, ol {
margin: 0;
padding: 0;
}
#wrap_all {
width: 800px;
margin: 0px auto;
background: tan;
}
/* リスト */
.list ul{
margin: 0;
padding: 0;
}
.list {
margin: 5px;
overflow: hidden;
border-radius: 8px;
border: 1px solid #999;
}
.list__item {
padding: 1em;
background: #ddd;
}
.list__item > a {
display: block;
margin: -1em;/*paddingで膨らむ分を相殺する*/
padding: 1em;/*余分な余白をとる*/
text-decoration: none;
}
.list__item + .list__item {
border-top: 4px solid #eee;
}
/* リスト2 */
.list__item_2 {
padding: 1em;
background: snow;
}
.list__item_2 > a {
display: block;
margin: -1em;/*paddingで膨らむ分を相殺する*/
padding: 1em;/*余分な余白をとる*/
text-decoration: none;
}
.list__item_2 + .list__item_2 {
border-top: 1px solid gold;
}
/* すべてのホバー */
ul.list a:hover{
background: red;
}
</style>
<!-- <div id="wrap_all"> -->
<ul class="list">
<li class="list__item"><a href="">リスト1</a></li>
<li class="list__item"><a href="">リスト2</a></li>
<li class="list__item"><a href="">リスト3</a></li>
<li class="list__item"><a href="">リスト4</a></li>
<li class="list__item"><a href="">リスト5</a></li>
</ul>
<ul class="list">
<li class="list__item_2"><a href="">リストA</a></li>
<li class="list__item_2"><a href="">リストB</a></li>
<li class="list__item_2"><a href="">リストC</a></li>
<li class="list__item_2"><a href="">リストD</a></li>
<li class="list__item_2"><a href="">リストE</a></li>
</ul>
<!-- </div> -->
</body>
</html>
サンプル画面⇒隣接セレクターでナビゲーション