• ベストアンサー

CSSで自動改行させたくない。

スタイルシートやテーブルで、幅を指定してあげると その幅にあわせて自動改行したりとか、その枠内の背景だけを 変更することができると思うんですが。 スタイルシートでやっても、なぜかうまくいきません。 今は、あきらめてテーブルでやってるんですが。 何がよくないのか、教えていただければ幸いです。 根本的な基本が、わかってないんですかね? CSS #main { width:760px; overflow:visible; } #head { width:760px; bgcolor: #ff0000; } .head-img { padding: 0px; margin: 0px; float:left; } #menu { width:760px; margin: 0px; padding: 0px; bgcolor: #ff0000; } .menu-buttom { margin: 0px; padding: 0px; } HTML <html> <head>  <link href="base.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <div id="main">  <div id="head">   <div class="head-img"><img src="img/head_img.jpg"></div>  </div>  <div id="menu"> <img src="img/menu_left.gif" width="20" height="30"><img src="img/menu_top.gif" border="0" width="180" height="30" name="img_m1"><img src="img/menu_hp.gif" border="0" width="180" height="30" name="img_m2"><img src="img/menu_com.gif" border="0" width="180" height="30" name="img_m3"><img src="img/menu_inq.gif" border="0" width="180" height="30" name="img_m4"><img src="img/menu_right.gif" width="20" height="30">  </div> </div> </body> </html>

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

  • ベストアンサー
  • webtera
  • ベストアンサー率57% (40/70)
回答No.3

メニュー(#menu  など)を、CSSで作りたいのであれば、リスト(li)でまず項目を作り(画像5つなら、テキストで5つ入力)、display:inline; でこのリストが横並びになり、このメニューリンク(#menu a)のa要素に、display:block; を指定、paddingやwidthも指定、float:left; も指定。 背景画像をa:hover 等で指定すれば、クリック時に背景画像変更が可能。 余白やマージンの設定は、プレビュー等で確認して、良い様に設定してください。試しにCSSを書いてみました。違うところがあるかも分かりませんが、考え方として以下のようにとられてはいかがでしょうか。 例) #menu{ float:left; height:50px; width:500px; } #menu li{ display:inline; } #menu a{ display:block; width:98px; float:left; padding:5px; text-decoration:none; } #menu a:hover{ color:#FFFFFF; background:url(img/menu_top.gif); }

akira212
質問者

お礼

大変遅くなってしまいもうしわけないです。 試してみますね!ありがとうございました。

その他の回答 (3)

  • yk0223
  • ベストアンサー率17% (21/123)
回答No.4

No2です。 >ブラウザを縮小してみると、上に3つ。下に2つといったぐあいに >改行されてしまうんです。 ウィンドウの大きさを変えたらってことですよね? 質問者さんが貼ってあるソースをそのまま使ってみましたが、 改行されず、スクロールバーが出てきましたよ(WIN+IE6.0の環境です)。 問題ないんじゃないですか?? <html> <head>  <link href="base.css" rel="stylesheet" type="text/css"> <style Type="text/css"> <!-- #main { width:760px; overflow:visible; } #head { width:760px; bgcolor: #ff0000; } .head-img { padding: 0px; margin: 0px; float:left; } #menu { width:760px; margin: 0px; padding: 0px; bgcolor: #ff0000; } .menu-buttom { margin: 0px; padding: 0px; } --></style> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <div id="main">  <div id="head">   <div class="head-img"><img src="img/head_img.jpg"></div>  </div>  <div id="menu"> <img src="img/menu_left.gif" width="20" height="30"><img src="img/menu_top.gif" border="0" width="180" height="30" name="img_m1"><img src="img/menu_hp.gif" border="0" width="180" height="30" name="img_m2"><img src="img/menu_com.gif" border="0" width="180" height="30" name="img_m3"><img src="img/menu_inq.gif" border="0" width="180" height="30" name="img_m4"><img src="img/menu_right.gif" width="20" height="30">  </div> </div> </body> </html>

akira212
質問者

お礼

遅くなってしまい申し訳ないです。 私も同じ環境の・・・はず・・・orz ありがとうございました。

  • yk0223
  • ベストアンサー率17% (21/123)
回答No.2

css部分の #head { width:760px; bgcolor: #ff0000; } の中の bgcolor: #ff0000; はcssではありません。 背景色変わらなかったでしょ? background-color もしくは background と記述して下さい。 http://www.hajimeteno.ne.jp/stylesheet/css1/p-bgcolor.html#background-color 自動改行については、質問の意味がよくわかりませんでした。。 幅760pxの#menu;の中に、760px分(20+180+180+180+180+20)の画像をぴったり敷き詰めているのに、最後の画像だけ下に回り込んでしまう、という意味でしょうか? それだと多分ブラウザ等によって、表示され方が違うので、#menuや#mainを{width:100%;} 等にしたほうがいいと思います。

akira212
質問者

補足

ご指摘のBGCOLORについては、気づきませんでした。 自動改行については。 スタイルシートでの枠幅が500だったとして。 幅が98のイメージを5つ横に並べた場合に ブラウザを縮小してみると、上に3つ。下に2つといったぐあいに 改行されてしまうんです。 これって、スタイルシートでの枠がうまくできてないのでしょうか?

  • go_nta
  • ベストアンサー率45% (5/11)
回答No.1

タイトルの『CSSで自動改行させたくない。』と言うのであればテーブルの<th>要素や<td>要素にCSSで『white-space:nowrap;』を指定すれば良いかと・・・お試し下さい。

akira212
質問者

お礼

回答ありがとうございます。 今回は、テーブルを使わず。スタイルシートで枠を区切って作ってみたいのです。

関連するQ&A