-
ID:u4mR3M さんの質問

こんにちは。
navタグ内に、ulタグを入れて、上下二段で構成された目次を作りたいと考えています。

  • 一段目にメインの目次を横に並べます。
  • 二段目に、「一段目で選んだ目次」のサブコンテンツの目次を横に並べます。

次のようにhtmlを書きました。
cssをいろいろ試しましたが、メインの目次のうち、1番目と2番目の間が開いてしまいます。(1番目のサブコンテンツである二段目の目次の幅だけ、横に開いてしまう)
このようなhtmlの書き方で、1番目と2番目の間を空けずに、上下二段に目次を並べることはできるでしょうか。
どなたかご教授願えないでしょうか。

よろしくお願いいたします。
-----
<nav id="menu">
<ul>
<li class="menu_A here">
<a href="#">ニュース</a>
<ul>
<li class=""><a href="#">スポーツ</a></li>
<li class=""><a href="#">ダイエット</a></li>
</ul>
</li>
<li class="menu_B">
コラム
</li>
<li class="menu_C">
まとめ
</li>
</ul>
</nav>

-----

みんなの回答 7 件

ID:Hq5UdA さんの回答

スタイルも書いてほしいな

ID:X1yUS5 さんの回答

色々おかしい

ID:u4mR3M さんの回答

書き方が下手で、申し訳ないです。
もともと、divばかりで構成するhtmlを書いていたので、
よそのHPを参考にさせてもらいながら、htmlの書き方を勉強している所です。

CSSも追加しました。
お手数ですが、よろしくお願いいたします。
------
<html>
<head>
<style type="text/css">

ul,li {
margin:0;
padding:0;
list-style: none;
}

#menu li {
}

.menu_A a {
background: #ff668f;
}

.menu_A li {
background: white;
}

nav li {
float: left;
text-align: center;
font-weight: bold;
border-right: solid 1px #000;
border-left: solid 1px #FFF;
}

nav li a {
display: block;
width: 100px;
padding: 5px 10px;
text-decoration: none;
border-bottom: solid 1px #000;
color: #FFF;
}

nav li a:hover {
background: #FFF;
padding: 5px 10px;
text-decoration: none;
border-top: solid 1px #F90;
border-bottom: solid 1px #FFF;
color: #F90;
}
</style>
</head>
<body>
<nav id="menu">
<ul>
<li class="menu_A here">
<a href="#">ニュース</a>
<ul>
<li class=""><a href="#">スポーツ</a></li>
<li class=""><a href="#">ダイエット</a></li>
</ul>
</li>
<li class="menu_B">
コラム
</li>
<li class="menu_C">
まとめ
</li>
</ul>
</nav>
</body>
</html>
------

ID:u4mR3M さんの回答

ちなみに、目次箇所の書き方を参考にさせていただいたのは、
「日経Gooday」さんです。
違いに愕然とされると思いますが、
シンプルできれいなデザインの書き方を勉強させてもらいたいと思いました。
スタイルシートを探したのですが、よくわからず…。

ID:Hq5UdA さんの回答

> メインの目次のうち、1番目と2番目の間が開いてしまいます。
ボーダーのせいです。わかりずらいので装飾はあとにつけましょう。

ID:Hq5UdA さんの回答

CSS HTMLはいじってないけど、そのままのHTMLだと使用がわかりずらい。
* {
margin: 0;
padding: 0;
}

ul,li {
list-style: none;
}

a {
color:#666;
text-decoration: none;
}

.menu_A > a {
background: #ff668f;
}
.menu_A li {
background: white;
}

nav li {
float: left;
text-align: center;
}

nav > ul > li {
float: left;
display: block;
width: 318px;
}

nav > ul > li > a {
background-color: #e6e6e6;
display: block;
padding: 5px auto;
color: #FFF;
}
nav > ul > li > a:hover {
background-color: #0000ff;
padding: 5px auto;
color: #F90;
}

nav > ul > li > ul {
width: 960px;
display: none;
}

nav > ul > li > ul > li {
margin-right: 10px;
}

nav > ul > li.here > ul {
display: block;
}

ID:Hq5UdA

nav > ul > li > ul > li {
margin-right: 10px;
}
はいらないや、わかりずらいから入れただけ。

nav > ul > li > ul {
width: 960px;
display: none;
}
nav > ul > li.here > ul {
display: block;
}
オンオフしないならこれもいらない。

ID:u4mR3M さんの回答

具体的に書いていただき、ありがとうございます!

「>」でどのタグにスタイルを適用するか指定することで、
シンプルに、きれいなHTMLでレイアウトを実現できるんですね。
自分で考えていたら、変に凝った書き方をしてしまったと思います。
とても勉強になりました。

最終更新日:2015-08-05 (3,412 views)

関連するトピックス

ページ上部に戻る