• ベストアンサー

<li>で改行する横並びのメニュー

<ul><li>を使って横並びのメニューを作っています。項目が増えると横幅いっぱいになるためメニューが2行になるのですが、項目の途中で改行されて困っています。 │●リンクA ●リンクB ●リンクC ●リン│←ページ右端 │クD ●リンクE 項目の途中で改行せずに↓こうしたいと考えています。 │●リンクA ●リンクB ●リンクC    │←ページ右端 │●リンクD ●リンクE リストタグを使わずに<br>で改行を入れる方法は使いたくありません。いい方法をご存知の方がいましたら教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.4

難しく考えすぎ。単純に改行されたくなければ、幅固定が一般的だけど、文字数で幅がかなり違う場合には、ブロックにして li や a 内に限り改行禁止にする。 li{ display:block } が一般的。 あとは、アンカーの前後に文字が付属する場合なら li{ white-space: nowrap; } li a{ display:block;} こうやれば、 li や a を margin,paddingで調整。border で囲ったり background や color で色々出来る。 また、この場合、 ブラウザでフォントサイズのみを大きく変更された場合に、段落が増えるのでリンクメニューの順序も多少考慮し標準サイズで右側が短い文章の項目になるようにデザインも考慮しなければいけない。

slowMay
質問者

お礼

なるほど。参考になりました。ありがとうございました。

その他の回答 (3)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

ユーザーが、フォントを大きくしようが小さなディスプレイだろうが確実なのは、liにwidthを決めること。  IEを無視してよいなら、もっとスマートな解決方法があるのですがね。そうも行かないので・・ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>Untitled</title> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"> <!-- ul#navi{display:block;padding:0px;margin:0px;} ul#navi li{display:block;float:left;width:auto;list-style-type:none;text-align:center;} ul#navi li+li:before { content: "| " } --> </style> </head> <body> <h1>title</h1> <h2>subTitle</h2> <ul id="navi"> <li style="width:6.5em;">肩こりトップ</li> <li style="width:6.5em;">肩こりって?</li> <li style="width:10.5em;">女性に多い肩こり原因</li> <li style="width:9.5em;">一般的な肩こり原因</li> <li style="width:6.5em;">肩こり解消法</li> <li style="width:10.5em;">肩こりの治らない理由</li> <li style="width:15.5em;">肩こり解消・予防のための栄養素</li> <li style="width:6.5em;">肩こりと頭痛</li> <li style="width:15.5em;">ストレスからの肩こりと自律神経</li> </ul> </body> </html> 注)ul#navi li+li:before { content: "| " } の + と :befor、contentは、IEでは無視される。

slowMay
質問者

お礼

とても参考になりました。ありがとうございました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

基本どうしょうもないわね。 でもアイデアがないわけではないわ。 その1. 文字列の長さを考慮して幅を取り 改行位置を調整する。 その2. Javaスクリプト等で記述する。 1行に3つずつ表示する、とか 面倒だけど文字列の長さを計算して 1行越えるようなら改行するとか。 ホントは<li>使わないのが一番面倒ないけど。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

元ソースがないのでなんとも言えませんね・・・ floatで処理しているなら普通項目の途中で改行されることは ないと思いますが・・・

関連するQ&A