プロが教えるわが家の防犯対策術!

<ul><li>を使って横並びのメニューを作っています。項目が増えると横幅いっぱいになるためメニューが2行になるのですが、項目の途中で改行されて困っています。

│●リンクA ●リンクB ●リンクC ●リン│←ページ右端
│クD ●リンクE

項目の途中で改行せずに↓こうしたいと考えています。

│●リンクA ●リンクB ●リンクC    │←ページ右端
│●リンクD ●リンクE

リストタグを使わずに<br>で改行を入れる方法は使いたくありません。いい方法をご存知の方がいましたら教えてください。よろしくお願いします。

A 回答 (4件)

難しく考えすぎ。

単純に改行されたくなければ、幅固定が一般的だけど、文字数で幅がかなり違う場合には、ブロックにして li や a 内に限り改行禁止にする。

li{ display:block } が一般的。

あとは、アンカーの前後に文字が付属する場合なら
li{ white-space: nowrap; } li a{ display:block;}

こうやれば、
li や a を margin,paddingで調整。border で囲ったり background や color で色々出来る。
また、この場合、
ブラウザでフォントサイズのみを大きく変更された場合に、段落が増えるのでリンクメニューの順序も多少考慮し標準サイズで右側が短い文章の項目になるようにデザインも考慮しなければいけない。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/15 22:10

ユーザーが、フォントを大きくしようが小さなディスプレイだろうが確実なのは、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では無視される。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/15 22:10

基本どうしょうもないわね。



でもアイデアがないわけではないわ。

その1.
文字列の長さを考慮して幅を取り
改行位置を調整する。

その2.
Javaスクリプト等で記述する。
1行に3つずつ表示する、とか
面倒だけど文字列の長さを計算して
1行越えるようなら改行するとか。

ホントは<li>使わないのが一番面倒ないけど。
    • good
    • 1

元ソースがないのでなんとも言えませんね・・・


floatで処理しているなら普通項目の途中で改行されることは
ないと思いますが・・・
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!