【CSS】レスポンシブのWebサイトを作っており、メニュー(li)をfloatで横並びにさせているのですが、最後のliだけ、カラム落ちのような状態になっております。
ulとli自体は%で指定しており、画面の幅を変えてもカラム落ちの状態は変わらないのですが、ブラウザの横幅をいじってスマホサイズの画面に切り替えた後、再びPCサイズの画面に切り替えると、カラム落ちはしていないのですが、更新ボタンを押すと再びカラム落ちの状態になります。
アドバイスをいただけるとありがたいです。
----- 表示させたい形 -----
ナビゲーション
ナビ1 ナビ2 ナビ3 ナビ4 ナビ5
①ulの名前が横並びにさせたliの上に表示される
②画面サイズに応じて、横幅だけ変化する(高さは固定)
※文字の表示位置(中央寄せ)やリストデザインは下記CSSには含みません。
----- HTML -----
<section>
<ul>ナビゲーション
<li>ナビ1</li>
<li>ナビ2</li>
<li>ナビ3</li>
<li>ナビ4</li>
<li>ナビ5</li>
</ul>
</section>
----- CSS -----
ul, li {
margin: 0 0;
padding: 0 0;
}
section {
width: 100%;
height: 60px;
position: relative;
}
ul {
width: 100%;
height: 30px;
position: relative;
top: 0;
left: 0;
}
li {
width: 20%;
height: 30px;
float: left;
position: relative;
top: 30px;
left: 0;
}
よろしくお願いします。。
みんなの回答 4 件
table-cellを使ったほうが簡単ですし項目が増えた場合の応用も利きます。
リストを横並びにした際に簡単に均等にすることができるdisplay:table-cellを使ってみる | bl6.jp
http://bl6.jp/web/css/display-table-cell/<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>無題ドキュメント</title>
<style>
dl, dt,dd {
margin: 0 0;
padding: 0 0;
}
section {
width: 100%;
height: 60px;
}
dl {
width: 100%;
height: 30px;
position: relative;
top: 0;
left: 0;
}
dt {
width:100%;
text-align:center;
}
dd {
width: 20%;
height: 30px;
float: left;
background:#ddd;
list-style:none;
left: 0;
}
</style>
</head>
<body>
<section>
<dl>
<dt>ナビゲーション</dt>
<dd>ナビ1</dd>
<dd>ナビ2</dd>
<dd>ナビ3</dd>
<dd>ナビ4</dd>
<dd>ナビ5</dd>
</dl>
</section>
</body>
</html>
ul配下の文字列のせいでそうなってるぽいのと文法上もいくないです。
listでも作れなくはないです。
でもtableとか使った方が、レスポンシブなら作りやすいです。
(勝手に幅とか調節してくれます)
table-layoutやdlとかはIE7に対応してないので、対応するなら注意してください。
(selectivizr使うなり、ie7だけfloatにするなり。)
float使う際は、ul要素にclearfixした方がいいですよ。
liにtop,leftは必要ないと思います。ナビの高さを調節したいならliの中のa(displaly:block)要素にpaddingとかで調整すると良いです。
ulの直下にはli以外の要素は入り得ない。
単純な文法ミス。
文法ミスでもブラウザは賢いからなんとなく表示してくれているだけ。
関連するトピックス