リストを横ナビゲーション

横並びのボックス(liにborderを指定した場合)

  • marginは通常計算(相殺されません)
  • paddingはブラウザにより影響
  • borderも計算に入れる


borderの数値を大きくしただけで、崩れます。
この解釈は、ブラウザごとに違います。(旧ブラウザとモダンブラウザの違い)



ということで、このような崩れをなくすためには「li」に borderを設定するのではなく、「li a」に borderを設定します。
指定された「li幅の上」にborderが設定されるため、幅にborderを加算する必要が無くなります。

リストを横ナビにするときのポイント

  • 「li」ではなく、「li a」にborderを指定する
  • ul は、レイアウト幅を指定
  • li は、widthとfloatを指定
  • li a は、display: block と border-rightを指定


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>横並びメニュー</title>
<link rel="stylesheet" href="css/style1.css">
</head>
<body>
<div id="nav">
<ul>
<li><a href="#">HTML+CSS</a></li>
<li><a href="#">JavaScript</a></li>
<li><a href="#">PHP</a></li>
<li><a href="#">WordPress</a></li>
<li><a href="#">ActionScript</a></li>
</ul>
</div><!-- /#nav -->
</body>
</html>


《授業例》

@charset "utf-8";

/* reset */
html, body, div, ul, li {
  margin: 0;
  padding: 0;
  line-height: 1.0;
  font-family:
    "Hiragino Kaku Gothic ProN",
    Meiryo,
    sans-serif;
}
ul {
  list-style: none;
}
a {
  text-decoration: none;   
}

/* body */
body {
  font-size: 16px;
}

/* layout */
#nav {
  width: 750px;
  margin: 50px auto;
}
ul {
  width: 750px;
  overflow: hidden;
  border: 2px solid #3B7F71;
  border-right: none;
}
li {
  float: left;
  width: 150px;
  text-align: center;
}
li a {
  display: block;
  line-height: 50px;
  border-right: 2px solid #3B7F71;
  background: #59BFAC;
  color: #FFF;
  font-weight: bold;
}
li a:hover {
  background: #3B7F71;   
}
@charset "utf-8";

/* リセット */
body, div, ul, li {
  margin: 0;
  padding: 0;
}
ul {
  list-style: none;
}
a {
  text-decoration: none;
}

/* 全体 */
body {
  font-size: 16px;
  font-family: 
    "Hiragino Kaku Gothic ProN",
    Meiryo,
    sans-serif;
}

/* ナビゲーション */
#nav {
  margin: 50px 0 0 30px;
}
#nav ul {
  font-size: 18px;
  font-weight: bold;
  border-top: 2px solid #B9D156;
  border-bottom: 2px solid #B9D156;
  border-left: 2px solid #B9D156;
  overflow: hidden;
  text-align: center;
  width: 750px;
}
#nav li {
  float: left;
  width: 150px;
}
#nav li a {
  display: block;
  background-color: #0099FF;
  color: #FFFFFF;
  padding: 8px 0 6px 0;
  border-right: 2px solid #B9D156;
}

/* 擬似クラス */
#nav li a:link, #nav li a:visited {
  background-color: #0099FF;
}
#nav li a:hover, #nav li a:active {
  background-color: #FF8000;
}