HTMLとCSSでレイアウトが崩れる問題の解決方法

このQ&Aのポイント
  • CSS初心者が作成したHTMLとCSSにおいて、レイアウトが崩れてしまう問題が発生しています。特にdiv#rightmenu内の3つのdiv間に隙間ができる、background-imageが適用されないなどの問題が発生しています。この問題の解決方法を教えてください。
  • レイアウト崩れの原因としては、div#rightmenuの幅やfloatの設定、背景画像の指定などが考えられます。また、異なるブラウザで確認すると、レイアウト崩れの度合いが異なることも分かりました。解決するためには、幅やfloatの設定を再確認し、背景画像の指定方法を見直す必要があります。
  • また、DWで作業するとさらにレイアウト崩れが発生することも分かりました。これはDWの表示方法や環境設定に問題がある可能性も考えられます。DWのバージョンや環境設定を確認し、必要に応じて修正することで、レイアウト崩れを解消できるかもしれません。
回答を見る
  • ベストアンサー

このhtml,cssでどこがおかしいか分かりません

お世話になります。 CSS初心車です。参考書など見ながらhtmlとCSSを作成してみましたが、 レイアウトが崩れてしまいます。CSSのほうに問題があるとは思うのですが、初心者な者でいまいちどこが間違っているのか分かりかねます。どうかご教授くださらないでしょうか。 問題はdiv#rightmenuにあると思います。 rightmenuの中にさらにrightbox-top/rightbox-inside/rightbox-buttomと3つのdiv分けをしており、それぞれbackground-image指定してコンテンツの多さによってリピートしていく背景(ボックスのような画像)を制作したいです。 ところが、以下のような指定をするとおかしなところがたくさん出てきました。 (1)headerとrightmenu全体の間に20pxほどの隙間ができる。 (2)rightbox-topとrightbox-insideの間、同じくrightbox-insideとrightbox-buttomにも20pxほどの隙間ができる。 (3)rightbox-insideのbackground-imageが適用されない。 さらに言うとFirefoxやSafariで確認するとレイアウトは上記のような問題があるにしろ、そこそこレイアウト崩れはありませんが、DWで作業しているともうひどいレイアウト崩れが発生しています。自分だけではどうしても解決できなくてみなさんに力に頼ざるを得ませんでした。どうかお願いします。 ●html <div id="rightmenu"> <div id="rightbox-top"> <h3></h3> </div> <div id="rightbox-inside"> <p><img src="images/index-main-image01.jpg"></p> <p><img src="images/index-main-image02.jpg"></p> <p class="text"> 本文いろいろp> <a href="result.html" id="index-button01"></a> <a href="contact.html" id="index-button02"></a> </div> <div id="rightbox-buttom"> <h4></h4> </div> </div> </div> ●CSS div#rightmenu { width:650px; float:right; margin:0px; } div#rightbox-top { width:650px; } #rightbox-top h3 { background-image:url(../images/rightmenu-top.png); background-repeat:no-repeat; width:650px; height:20px; } #rightbox-inside { background-image:url(../images/rightmenu-inside.png); background-repeat:repeat-y; width:650px; } #rightbox-inside p img { float:left; padding-left:40px; } #rightbox-inside p.text { margin-right:30px; padding-bottom:10px; width:400px; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; font-size:10px; letter-spacing:130%; line-height:180%; color:#333333; float:right; } #rightbox-buttom { width:650px; clear:both; } #rightbox-buttom h4 { background-image:url(../images/rightmenu-buttom.png); background-repeat:no-repeat; width:650px; height:20px; margin:0px; }

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

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

naokitaです(補足への回答) 当初の質問内容が解決したら一旦閉めた方が良いようです。 ついでに言えば、1回に3項も質問しない方が誰かが回答付けてくれる可能性が高いでしょう。 NO.2の補足は当初の質問から外れるようなので、この回答にて最終にします。 ------------ その前に、 (3)の部分が、それなら崩れる可能性があるので、 float枠には、widthの幅設定をしましょう。 それが、ウェブサイトの設計って事なので、 拡張性を残しつつも、 後から増築・改築しなくて済むような設計をした方が良いでしょう。 paddingで左右の隙間も変更しているようですが、 width幅と左右のpadding幅も計算して設計する事(DTDを考慮) ------------ 前回答の<h3></h3><h4></h4>を空にしないって事と同じで、 他のタグも空にしない事。 何故、~ a {text-indent:-9999;}を利用するのか? って事の1つの要因でもあります。 つまり、 ブラウザによりますが、<a></a> が空だからって事。 前回答でも背景画像は前面があってこその背景と書いたはず! 空なのだから背景表示どころか、クリックすら出来ない・・・ 逆に言えば、クリック領域さえ作ればCSSで固定幅にもできるし背景も作れる。 HTMLが無ければCSSは使えないって事。 CSSやJSは、HTMLのオプションでしかない。 逆に言えば、HTMLが正しければ、JSやCSSで好きなように出来るって事です。 つまり、不正なHTMLでは使い物にならないし、 アンカーテキストがなければ、Googleでも解釈できない。 main-image-button01:hover プロでも↑こんな風に書く人もいますが、 疑似クラスが使えない古いブラウザがまだ10%程度も想定できるので、 id か classを充ててからa:hoverとする方が(今はまだ)実用的でしょう。

toonie
質問者

お礼

ありがとうございます。 自分のような素人に根気強く対応してくださって、本当感謝です。無機質なネット上でアツいものを感じました。 補足してくださった点、肝に銘じてがんばっていきます。 ありがとうございました。

その他の回答 (2)

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

naokitaです(補足への回答) (3)ですが、clearは、回り込み解除、 もしくは、floatの終点としてセットで覚えても良いです。 まずは、画像への文章の回り込みの方法と解除も勉強して下さい。 floatカラムでのclearは、 clear:both; 、 clearfix 、 display:inline; 、 overflow など多々あって、UA対応で解釈も変わりますので、色々試して、自分の最良の方法を選択して下さい。 floatカラム+clear設定する事で、全ブラウザ対応で背景画像が表示できる。具体的には、rightbox-inside内でfloatしているなら、rightbox-inside内でクリアー。 ------- 中身は、上下の画像や背景画像は、外枠の為って事ですね。 それなら、 まずは、HTMLでの意味を考えましょう。 <h3></h3>や<h4></h4>は、その項の小見出しですから、 空にするのは、何の為の<h3><h4>なのか!? 意味の無いマークアップはしない事(一部テクニックを除く) また、デザインだけならCSSの役目です。  >何か最適な方法はあるのでしょうか。 前回答の1.2.3.4で書いたはず・・・ 画像の「画像文字」なら<h3><img></h3>で良いでしょう。 no-repeatの背景画像で、空要素で前面テキストが無いなら<img>にするのが妥当です。わざわざ、CSSで背景画像にする必要は無いのでは? 横枠は、縦にリピートさせるので、 div#rightmenuで全体背景にする方法もあります。 その前面の上下に透過では無い画像を置くと四角い枠になります。 主に、情報ボックスなど枠を作るケースですが、 これも何種類か方法があります(書ききれない程) <div 真ん中のリピート横枠背景><img上辺画像>コンテンツ<img下辺画像></div> または、 <div 真ん中のリピート横枠背景><div上辺背景画像><div下辺背景画像>コンテンツ</div></div></div> こんな方法の方が簡単かもしれませんが、 現状の質問者さん環境で設定すると、(h3,h4無し * 幅は適当) <div id="rightmenu"> <div id="rightbox-inside"> <div id="rightbox-inside-img"><img src="images/index-main-image02.jpg"></div> <div id="rightbox-inside-txt"><p>文章</p><p>リンク<br>リンク</p></div> <div id="rightbox-buttom"><img src="images/rightmenu-buttom.png"></div> </div> </div> #rightmenu { width:650px; float:right; padding-top:20px; background:url(../images/rightmenu-top.png) no-repeat;} #rightbox-inside { padding-top:10px; background:url(../images/rightmenu-inside.png) repeat-y;} #rightbox-inside-img { width:240px; float:left; text-align:right; padding:10px 10px 0 0;} #rightbox-inside-txt { width:400px; float:left; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; font-size:10px; letter-spacing:130%; line-height:180%; color:#333;} #rightbox-inside-txt p { margin:0; padding:10px 50px 10px 10px;} #rightbox-buttom { clear:both;} ※ 下辺の画像を透過しない。 または上記4行、逆でもOK(画像配置の違い) #rightmenu { width:650px; float:right; background:url(../images/rightmenu-inside.png) repeat-y;} #rightbox-inside { padding-top:20px; background:url(../images/rightmenu-top.png) no-repeat;}

toonie
質問者

お礼

ご回答ありがとうございます。 (3)に関してですが、解決しました。naokitaさんの助言を参考に以下のようにHTMとCSS書きました。親切に教えてくださり本当にありがとうございました。<h3><h4>記述せず、<img>で表示する方法は知りませんでした。こっちのほうがシンプルですね! <div id="rightmenu"> <div id="rightbox-inside"> <div id="rightbox-inside-img"> <img src="images/index-main-image01.jpg" alt="解説"><img src="images/index-main-image02.jpg" alt="解説"> <p>本文</p> </div> <div id="main-image-button"> <a href="result.html" id="main-image-button01"></a> <a href="contact.html" id="main-image-button02"></a> </div> <div id="rightbox-buttom"><img src="images/rightbox-buttom.jpg" alt="解説"> </div> </div> </div> ●CSS #rightmenu { width:645px; float:right; padding-top:20px; background:url(../images/rightbox-top.png) no-repeat; } #rightbox-inside { background:url(../images/rightbox-inside.png) repeat-y; } #rightbox-inside-img { float:left; text-align:left; padding:10px 0 10px 35px; } #rightbox-inside-img p { float:right; width:400px; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; font-size:11px; letter-spacing:130%; line-height:180%; color:#333; margin:0; padding:20px 30px 10px 0px; } #rightbox-buttom { clear:both; } ただ、迷惑ついでに新しい問題が... テキストの下に新しく<div id="main-image-button">を作り、マウスオーバー仕様のボタンを設置しようと思っているのですが、何故かbackground-imageがまったく表示されません。 CSSは、 div#main-image-button { width:400px; float:right; padding:10px 30px 10px 0; } main-image-button a { display:block; } main-image-button01 { width:190px; height:50px; background-image:url(../images/index-button01.jpg); } main-image-button01:hover { background-image:url(../images/index-button01-hover.jpg); } main-image-button02 { width:190px; height:50px; background-image:url(../images/index-button02.jpg); } main-image-button02:hover { background-image:url(../images/index-button02-hover.jpg); } です。 これってどうしてなんでしょうか、何か基本的なことを見落としている気がするのですが...差し支えなければご助言ください。ありがとうございました。

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

>レイアウトが崩れてしまいます。 いえ、書いた通りで表示されますよ。 崩れるというのは、特定のブラウザだけ違うって事であって、 意図した配置が出来ないって事ですよね。 間違ってるといえば、 (3)の部分と、<p>が p>になってる程度です。 但し、 CSSの基本的なmarginなど理解や使い方が曖昧ですし、 HTMLを自身で複雑化しているように思います。 -------------- (1) #rightbox-top h3に margin:0; padding:0; 追加 or 調整。  (空要素はNG * 下記参照) (2) #rightbox-inside p{ margin:0; padding:0;} を追加 or 調整 (3) floatしてるのに、その要素内でclearしていないって事が原因です。 #rightbox-buttom は、一見clearしてるように見せてるが、 その要素の中ではなく、外でclearしちゃっています・・・ -------------- DWの作業ビューのデザインは作業する為の簡易ビューであって、 正しくレンダリングされる訳ではありません。 プレビューもDWのCS?バージョンによって違いますし。 -------------- <h3></h3>と<h4></h4>を 空っぽにして背景画像で表示しているのでしょうか? それなら、背景は、前面があってこその背景なので、 前面が空だと背景にならず・・・(ブラウザによる) 別の方法としては、 1、背景画像を使わずに、<img>だけでよいのでは? 2、<div><h3>とブロック要素で二重にする必要も無い。 3、特に意味の薄い画像なら<div><h3>を削除して<img>のみでも良い。 4、div#rightmenu {background:url(../images/rightmenu-top.png) no-repeat; padding-top:20px;} でも良い。 -------------- <p>もブロック要素なので、中の<img>をfloatしても <p>自体は動かないので、<p>内でimgが動くだけです。 この辺の配置設計が出来ていないようで、 background-color:yellow; または border:1px solid red; など各ブロック要素の骨格が目視できるように作業しましょう。 <p><img src="images/index-main-image01.jpg"></p> #rightbox-inside p img { float:left; padding-left:40px; } この使い方も無意味で、表示された画像を良く見て設定する事です。 -------------- <div id="rightmenu">内は、 マークアップの仕方によって配置方法も変わるので、 その画像類をどう解釈させたいのかによって、 HTML,CSSの書き方がガラッと変わります。 その画像が何を意味するのかにもよりますし、 png画像が透過なのか、どう見せるのかとか、 幅とか、背景色とか背景画像で良いのかimageにするかとか、 その辺がわからないので、HTML,CSSが書けず、その部分の回答は安易にできないです・・・

toonie
質問者

補足

詳しいご回答ありがとうございます。 (1)と(2)に関しては余白はなくなりました。 <h3></h3>と<h4></h4>を空っぽにして背景画像で表示しているのでしょうか? >>その通りです。以前は適当なテキストを入力してtext-indent:-9999px指定していたのですが、このやり方は検索エンジン側からスパム行為と認識される可能性が高く、SEO的な見地からオススメできないという意見がネット上にあり(そんなレベルでないのは分かっていますが...)今回のような仕様にしたのですが...空要素はNGということですが、何か最適な方法はあるのでしょうか。 (3)こちらはまだ解決しておりません。 floatしてるのに、その要素内でclearしていないって事が原因です。#rightbox-buttom は、一見clearしてるように見せてるが、その要素の中ではなく、外でclearしちゃっています・・・ >>覚えが悪くて申し訳ありません、要素内でclearするというのはどういうことでしょうか。#rightbox-inside {}でしょうか。それとも#rightbox-inside p.text {}でしょうか。素人なので、不明な発言をしていると思いますがご容赦ください。 rightmenu部分は背景に視覚的にもボックスのような画像(透過png)を乗せて、そこにコンテンツを表示させたいと考えています。rightbox-inside{}のコンテンツ量はページによっても変わるので<img>配置ではなくbackground-imageで指定し、repeat-yしていきたいです。 {background:url(../images/rightmenu-top.png)と {background:url(../images/rightmenu-buttom.png)はそのボックス画像のいわゆる上辺と下辺の「枠」部分です。 具体的なイメージとしては下記サイトの「今週の元気」「お知らせ」「ピックアップニュース」の表示ボックスのようなことがしたいです。 http://c1000.jp/news/ ご親切なご指摘ありがとうございます。

関連するQ&A

  • このCSSのどこを直せばいいですか?アドバイス求ム

    お世話になります。 CSS初心者です、ガイドブック見ながら地道に一歩一歩制作してます。 制作中にいくつかどうしても分からない壁にブチあたっています。初心者ゆえ基本的なこと聞くな!と思われる方もいらっしゃると思いますが、どうかアドバイスをお願いします。 1:div#leftmenuにCSSで配置&ロールオーバーするよう記述したボタン画像が6つ。それぞれリンクを張り、違うページに飛びたい(きっと基本的なことでしょうね...でも分からないんですスイマセン。) 2:#div rightbox-top全体背景にbackground-imageを表示したいが<h2>と<p>要素の間で表示されない空白ができる。これを解消してきちんとbackground-imageを表示させたい。 HTMLーーーーーーーーーーー <div id="leftmenu"> <a href="" id="menu-botton01"></a>      (省略) <a href="" id="menu-botton06"></a> </div> <div id="rightmenu"> <div id="rightbox-top"> <h3>本文</h3> <p><img src="image/001.png" alt="画像説明"></p> <h2>見出しタイトル</h2> <p>説明文いろいろ</p> </div> </div> CSSーーーーーーーーーーー div#leftmenu { width:161px; margin:3px 0px 0px 0px; float:left; } #leftmenu a { display:block; } #menu-botton01 { background-image:url(../image/leftmenu-botton_03.png); width:161px; height:50px; } #menu-botton01:hover{ background-image:url(../image/leftmenu-botton2_03.png); width:161px; height:50px; } div#rightmenu { width:639px; float:right; } div#rightbox-top { width:639px; } #rightbox-top h2 { background-image:url(../image/rightbox_03.png); background-repeat:repeat-y; font-size:medium; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; color:#CC9966; width:609px; padding-left:30px; } #rightbox-top h3 { background-image:url(../image/rightbox_01.png); background-repeat:no-repeat; width:639px; height:30px; margin:0px; text-indent:-9999px; } #rightbox-top p { background-image:url(../image/rightbox_03.png); background-repeat:repeat-y; width:579px; margin:0px; height:auto; padding:0px 30px 0px 30px; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; font-size:small; letter-spacing:130%; line-height:160%; color:#333333; }

  • CSSでレイアウト崩れ、#rightmenuが下がって余白ができるのは

    CSSでレイアウト崩れ、#rightmenuが下がって余白ができるのはなぜ? あまりCSSに詳しくないものです。どうかご教授ください。 添付画像のようにに、div分けして全体のデザインを制作しています。 #headerの下に#contensがあり、その中に#leftmenuと#rightmenuと区分けしています。 #leftmenuがメニューボタン部分で#rightmenuが情報を表示するコンテンツ部分です。 #contensはそれで閉じ、最後に#footerがあります。 ところが、#rightmenu部分に望んでいない余白ができます。 #leftmenuと頭で揃えたいのですが、何故か220pxほど下がって表示してしまうのです。(paddingやmarginの設定はしていません) 作業はdreamweaverで作なっているのですが、便利なものでボックスにマウスを寄せると赤いラインでボックスの表示をしてくれます。それを右クリックしてどのdivがそうさせているのか調べたら#contensだとありました。 しかし#contensのCSSをチェックしても何が原因なのか分かりません。 これはどうしてでしょうか? 私個人の知識ではどうしても分かりかね質問させていただきました。 HTMLとCSSにどこかおかしなところがあればどうか教えてください。 よろしくお願いします。 HTML----------------- <body> <div id="header"> <h1>タイトル</h1> </div> <div id="contens"> <div id="leftmenu"> <a href="" id="ボタン1"></a> <a href="" id="ボタン2"></a> <a href="" id="ボタン3"></a> <a href="" id="ボタン4"></a> <a href="" id="ボタン5"></a> <a href="" id="ボタン6"></a> <a href="" id="ボタン7"></a> </div> <div id="rightrmenu"> <div id="rightbox-top"> <h3>本文</h3>  <p>挨拶文</p>  </div> <div id="rightbox-bottom"> </div> </div> </div> <div id="footer"> <p class="copyright">Copyrightうんぬん</p> </div> </body> CSS----------------- body { background-image:url(../image/top.jpg); background-position:top center; background-repeat:no-repeat; background-color:rgb(237,232,195); } div#header { width:800px; height:139px; margin-left:auto; margin-right:auto; } div#contens { width:800px; height:auto; min-height:520px; margin-left:auto; margin-right:auto; } div#leftmenu { width:161px; } div#rightmenu { width:639px; float:right; } div#footer { clear:both; height:100px;    background-image:url(../image/top-bottom.jpg); background-position:top center; background-repeat:no-repeat; background-color:rgb(237,232,195); margin-left:auto; margin-right:auto; }

  • CSSレイアウトについて

    はじめまして。 個人用サイトを趣味で制作しています。 下記のようなイメージを、html×cssで組みたいのですが、 うまくいきません。 なんとかsafariで、再現したいのですが、問題点がわかりません。 ※IE6は、きっと無理ですよね。 どなたか原因分かる方教えていただけると幸いです。 ■イメージ http://www.turn.jp/design.jpg ■現状サイト http://www.turn.jp/ ■htmlソース <body> <div id="container"> <div id="wrapper"> <div id="contents"> <div id="logo"> <h1><img src="images/logo.png" width="200" height="164" alt="2lemma" /></h1> <h2><img src="images/menu.png" width="447" height="79" alt="blog" /></h2> </div> <div id="footer"> <p>Copyright&copy;2010 All Rights Reserved.</p> </div> </div> </div> </div> </body> </html> ■CSS @charset "Shift_JIS"; /* CSS Document */ }#container { margin: auto; width: 1000px; background-color: #959500; } #wrapper { height: 437px; width: 960px; background-image: url(../images/design.jpg); background-repeat: no-repeat; margin: 20px; } #logo { text-align: right; height: 164px; width: 200px; margin-right: 245px; margin-top: 170px; float: right; } #footer { clear: both; color:#FFFFFF; font-size:8px; padding-top: 10px; }

  • <ul><li>で画像が均等配置せずレイアウト崩れ

    <ul><li>で画像が均等配置せずレイアウト崩れしてしまいます。 いつもお世話になります。 添付画像のように、#rightmenuのul#resultList内で<li>を使用して110pxの画像を5つ均等に配置させそれぞれの隙間には10pxの空間を空けて配置したいと考えています。 左から4つの画像は#resultList li {}でpadding-right:10px;で余白を作り、5番目の画像は逆に余白がないように#resultList li.mustright 指定でpadding-right:none;設定です。 ところがそんな設定していないのに、何故か間には20pxほどの空白ができ、そのため一番右端の画像がレイアウト崩れして下段に落ちてしまいます。CSSもしくはHTMLの記述のどこがいけないのでしょうか?どうか教えてください。ちなみに並べたい画像はクリックするとthickboxで大きな画像が表示できるようにしたいと考えています。 ●HTML <div id="rightmenu"> <div id="rightbox-inside">←背景にコンテンツの外枠となる画像の上部表示用 <div id="rightbox-inside-txt"> <p class="title">タイトル</p> <p class="standard-title">コンテンツ内容</p> <p class="standard"> <ul id="resultList"> <li><a href="images/001.jpg" class="thickbox" rel="ResultSample" title="タイトル文"><img src="images/result-sample_01.jpg" alt="タイトル文" width="110px" height="100px" border="none"/></a></li> <li><a href="images/001.jpg" class="thickbox" rel="ResultSample" title="タイトル文"><img src="images/result-sample_01.jpg" alt="タイトル文" width="110px" height="100px" border="none"/></a></li> <li><a href="images/001.jpg" class="thickbox" rel="ResultSample" title="タイトル文"><img src="images/result-sample_01.jpg" alt="タイトル文" width="110px" height="100px" border="none"/></a></li> <li><a href="images/001.jpg" class="thickbox" rel="ResultSample" title="タイトル文"><img src="images/result-sample_01.jpg" alt="タイトル文" width="110px" height="100px" border="none"/></a></li> <li class="mustright"><a href="images/001.jpg" class="thickbox" rel="ResultSample" title="タイトル文"><img src="images/result-sample_01.jpg" alt="タイトル文" width="110px" height="100px" border="none"/></a></li> </ul> </p> </div> <div style="clear:both; "></div> <div id="rightbox-buttom"><img src="images/rightbox-buttom.jpg" alt="枠">←背景にコンテンツの外枠となる画像の下部表示用 </div> </div> </div> ●CSS #rightmenu { width:645px; float:right; padding-top:20px; background:url(../images/rightbox-top.png) no-repeat; } #rightbox-inside { background:url(../images/rightbox-inside.png) repeat-y; } #resultList { overflow:hidden; margin:0 25px 0 30px; padding:0; list-style-type:none; } #resultList li { display:inline; float:left; margin:0; padding-right:10px; } #resultList li.mustright { float:right; padding-right:none; } #resultList li a { display:block; } #resultList li a img { display:block; width:110px; height:100px; border:0; } #rightbox-buttom { clear:both; }

    • ベストアンサー
    • CSS
  • <script>記述したらレイアウトに変化が...

    お世話になります。どうしても分からないので、また質問させてください。 現在制作中のサイトにthickboxを使って、大きな画像を表示させたいと考えています。 それで、当たり前ですが、thickboxをダウンロードして<head>内に下記のように記述しました。 <link href="css/thickbox.css" rel="stylesheet" type="text/css" media="all"/> <script language="JavaScript" type="text/JavaScript"></script> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/thickbox.js"></script> thickbox自体は特に問題なく作動するのですが、ところがおかしなことにレイアウト面で若干変化が生じました。具体的に言うと、 1:div#headerの<h1>見出し分が10pxほど上へ上がった(ウインドウの最上部に表示されるようになった) 2:marginでピクセル指定して配置していたロゴ画像がやはり15pxくらい上へ上がって表示されるようになった。(そもそもロゴ画像がどのブラウザで見ても同じところに表示するように方法が分からなかったので、このように記述したのですが、これは根本的に問題ありかもしれません。) 3:thickboxを使用しているdiv#rightmenuの下に全ページ共通で表示させているdiv#adress-areaという店舗情報を記述する部分があるのですが、そこのmargin-bottom:10px;が適用されていない。他のCSS記述はそのまま生きている。 ちなみにthickboxを使用しているページ以外はこのような現象は見られません。 これはどうしてでしょうか。もしよければアドバイスください。 THML: <body> <div id="header"> <h1>見出し文</h1> <a href="index.html"><img src="images/logo.gif" alt="ロゴマーク" border="0"></a> </div> <div id="contens"> <div id="leftmenu"> 省略 </div> <div id="rightmenu"> <div id="rightbox-inside"> <ul id="resultList"> <li><a href="images/001.jpg" class="thickbox" title="タイトル"><img src="images/01.jpg" alt="代替テキスト"/></a></li> <li><a href="images/001.jpg" class="thickbox" title="タイトル"><img src="images/01.jpg" alt="代替テキスト"/></a></li> <li><a href="images/001.jpg" class="thickbox" title="タイトル"><img src="images/01.jpg" alt="代替テキスト"/></a></li> <li><a href="images/001.jpg" class="thickbox" title="タイトル"><img src="images/01.jpg" alt="代替テキスト"/></a></li> <li class="mustright"><a href="images/001.jpg" class="thickbox" title="タイトル"><img src="images/01.jpg" alt="代替テキスト"/></a></li> </ul> </div> <div style="clear:both; "></div> <div id="rightbox-buttom"> <img src="images/rightbox-buttom.jpg" alt="代替テキスト"> </div> </div> <div id="adress-area"> <p class="adress-txt">店舗情報いろいろ</p> </div> <div style="clear:both;"></div> </div> <div id="footer"> 省略 </div> </body> CSS>> body { background-image:url(../images/body.jpg); background-position:top center; background-repeat:no-repeat; background-color:rgb(237,232,195); margin:0px; } /* Header部分CSS */ div#header { width:800px; height:150px; margin-left:auto; margin-right:auto; } #header h1 { color:#666666; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; font-size:x-small; } #header img { margin:77px 0px 0px 10px; } /* Contens部分CSS */ div#contens { border-bottom:1px dotted #333333; width:800px; min-height:700px; margin-left:auto; margin-right:auto; padding-bottom:10px; } /* Leftmenu部分CSS */ div#leftmenu { width:155px; float:left; } /* rightmenu部分CSS */ #rightmenu { width:645px; float:right; padding-top:20px; background:url(../images/rightbox-top.png) no-repeat; } html#rightmenu{ height: auto !important; height: 800px; } #rightbox-inside { background:url(../images/rightbox-inside.png) repeat-y; } #rightbox-buttom { clear:both; } /* thickboxを使用した表部分CSS */ #resultList { overflow:hidden; margin:0 25px 0 30px; padding:0; list-style-type:none; } #resultList li { float:left; display:inline; width:120px; text-align:center; } #resultList li.mustright { float:right; width:110px; padding-right:none; } #resultList li a { display:block; } #resultList li a img { border:none; } /*店舗情報部分CSS */ div#adress-area { width:620px; float:right; margin:5px 10px 5px 10px; background-color:#E6E6E6; } #adress-area p.adress-txt { width:300px; padding:0 0 0 20px; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; font-size:12px; letter-spacing:130%; line-height:160%; color:#333; float:left; }

    • ベストアンサー
    • CSS
  • CSSレイアウト

    はじめまして。CSSレイアウトについて質問させてください。 ※昨日投稿したつもりが、、、、gooに羽井されていないようなんで 再度投稿させていただきます。 ■実現したいこと。 下記URLのようなイメージを、cssで実装したいのです。 ※センタリングもします。 http://www.turn.jp/design.jpg 現状自分で組んでみると、以下URLのように表示されます。 safariでは、外枠container部分のdivが上手く表示されません。 IE6ではとりあえず表示はされていますが、投下PNGが読めない? のか、うまくできていません。 www.turn.jp 下記にhtmlおよびcssを記載しますので どなたかアドバイスいただけると幸いです。 ■html <body> <div id="container"> <div id="wrapper"> <div id="contents"> <div id="logo"> <h1><img src="images/logo.png" width="200" height="164" alt="2lemma" /></h1> <h2><img src="images/menu.png" width="447" height="79" alt="blog" /></h2> </div> <div id="footer"> <p>Copyright&copy;2010 All Rights Reserved.</p> </div> </div> </div> </div> </body> ■CSS @charset "Shift_JIS"; /* CSS Document */ }#container { margin: auto; width: 1000px; background-color: #959500; } #wrapper { height: 437px; width: 960px; background-image: url(../images/design.jpg); background-repeat: no-repeat; margin: 20px; } #logo { text-align: right; height: 164px; width: 200px; margin-right: 245px; margin-top: 170px; float: right; } #footer { clear: both; color:#FFFFFF; font-size:8px; padding-top: 10px; } -- 以上、宜しくお願い致します。

  • CSSでのレイアウトが崩れてしまうんです。

    お世話になります。CSSビギナーなのですが、どうかご教授ください。800pxの画面のセンター表示のサイトを作りたいのですが、divでheader800px/container800px/contents600px(contensの中にleftmenu150px/centermenu450px/footer600pxとさらにdiv分けしてあります。)/leftmenu200pxという具合にレイアウトしたいのですが、leftmenuがcontensの右横にきてくれません。footerの下に表示されます。さらに言うとcontens自体が真ん中に表示されてしまいます。float:leftを指定するとブラウザ画面の左側にいってしまいますし...。これはどうしてでしょう?素人ゆえ基本的なことを見落としているかもしれませんがどなたか教えていただけないでしょうか? ■HTML </head> <body> <div id="header">省略</div> <div id="container">省略</div> <div id="contens"> <div id="leftmenu">省略</div> <div id="centermenu">省略</div> <div id="footer">省略</div> </div> <div id="rightmenu">省略</div> </body> </html> ■CSS div#header { padding-top:0px; width:800px; margin-left:auto; margin-right:auto; background-color:#00CC00; } div#container { width:800px; margin-left:auto; margin-right:auto; } div#contens { width:600px; margin-left:auto; margin-right:auto; } div#leftmenu { width:150px; float:left; } div#centermenu { width:450px; float:left; margin-left:auto; margin-right:auto; background-color:#FFFFFF; } div#footer { float:left; width:600px; padding-top:50px; } div#rightmenu { width:200px; float:right; background-color:rgb(147,182,110); padding-bottom:5px; } body { background-attachment:scroll; background-color:#FFFFFF; background-image:url(../image/bg.jpg); background-repeat:no-repeat; background-position:center top; }

  • CSSについて教えて下さい

    ホームページビルダーでの経験しかない初心者です。CSSに挑戦していますが不明な点ばかりです。 無料テンプレートを加工していますが下記の内容を教えて頂けませんか。 topとtop2の左側(上下位置は中間)に私が追加したtop3の画像を 表示させたいのですがうまくできません。宜しくお願いいたします。 CSS #bodyid{ background:#eafefe url('img/bg.png'); padding:0; margin:0; text-align:center; } #bg{ width:706px; background:#fff; margin:0 auo; } #top{ width:400px; height:80px; background:url('img/title1.gif') no-repeat center top; text-align:left; } #top2{ width:400px; height:60px; background:url('img/title2.gif') no-repeat center top; text-align:left; } #top3{ position:absolute; left 120px; top 30px; width:100px; height:80px; background:url('img/image555.gif') no-repeat center top; } html <body id="bodyid"> <DIV id="bg"> <div id="top"></div> <div id="top3"></div> <div id="top2"></div>

  • 画像をずらしてhoverしたいのですがIE7では×

    一枚の画像をずらしてロールオーバーさせてナビをつくったのですが、IE7以外の全ブラウザではうまくいきますが、唯一IE7だけはうまくいきません。 5つのナビボタンのうち、左3つがポイントしても矢印と画像が変わりません。 ですが、それはトップページのナビだけの話で、他のページは普通にロールオーバーします。 ナビの部分はDreamweaverのテンプレートで編集不可能領域に含まれてますので、全ページのコードは同一です。 以下、コードです。 <!--HTML--> <body> <div id="container"> <div id="hedder"> <div id="toprogo"><a href="index.html"><img src="○○"/></a></div> <div id="main_image"><img src="○○"/></div> <div id="navi"> <div id="top"><a href="index.html"/></a></div> <div id="kodawari"><a href="particular.html" /></a></div> <div id="catalog"><a href="goods-catalog.html" /></a></div> <div id="from_producer"><a href="index.html" /></a></div> <div id="contact"><a href="mailto:" /></a></div> </div> </div> </div> </body> <!--ここからcss--> body { font-family:"MS ゴシック", "MS Gothic", "Osaka-等幅", Osaka-mono, monospace; color: #473906; background-color: #fafde1 ; } img { border: none; } a { color: #473906; text-decoration: none; } a:hover { color: #ff0000; } #container { width: 950px; margin: auto; } #hedder { widht: 950px; height: 380px; } #top_logo {margin-top: 10px; } #main_image { width: 950px; height: 300px; margin-top: 10px; } #navi { margin-top: 20px; /margin-top: 0 ; } #top a { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: 0px 0px; display: block; float: left; } #top a:hover { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: 0px -50px; display: block; float: left; } #kodawari a { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -190px 0px; display: block; float: left; } #kodawari a:hover { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -190px -50px; display: block; float: left; } #catalog a { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -380px 0px; display: block; float: left; } #catalog a:hover { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -380px -50px; display: block; float: left; } #from_producer a { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -570px 0px; display: block; float: left; } #from_producer a:hover { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -570px -50px; display: block; float: left; } #contact a { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -760px 0px; display: block; float: left; } #contact a:hover { width: 190px; height: 50px; margin-top: 30px; background-image: url(images/navi/navi.gif); background-repeat: no-repeat; background-position: -760px -50px; display: block; float: left; } つめて見にくくなっていますが、お願いいたします。

    • ベストアンサー
    • CSS
  • CSSのborderが実際の領域より上に表示される

    お世話になります。 CSSのborder-bottom指定のことでどうしても分からないことがあります。 div#contensにborder-bottom指定をしてその直下のdiv#footerと区別したいと考えています。 本当はdiv#footerにborder-top指定すればいいのでしょうが、footerはbackground-imageが2500pxあり、border-topすると、2500px分表示されます。 実際のコンテンツ領域は800px分なので、800pxだけのborderがほしいのです。 ところが、div#contensにborder-bottom指定すると、実際の情報量より上にborderが表示されます。これはどうしてでしょうか? いろいろ考察したところ、どうやらmin-height:800px;の指定が原因で適用されているようです。min-heightはページによって情報が少ない場合でもある程度の高さを確保するために設定していますが、800px以上の情報量となる場合は、その情報量に沿ってきちんとborderも可変してほしいのです。解決法をどうか教えていただけないでしょうか。 よろしくお願いします。 CSS--- body { background-image:url(../images/site-body.jpg);←この画像が2500pxあります。 background-position:top center; background-repeat:no-repeat; background-color:rgb(237,232,195); margin:0px; } div#header { width:800px; height:150px; margin-left:auto; margin-right:auto; } div#contens { border-bottom:1px dotted #333333; width:800px; height:auto !important; min-height:800px; margin-left:auto; margin-right:auto; } div#footer { background-image:url(../images/footer-bg2.jpg) ;←この画像も2500pxあります。 background-repeat:no-repeat; background-position:bottom; height:100px; } HTML--- <body> <div id="header"> ~省略~ </div> <div id="contens"> <div id="leftmenu"> ~省略~ </div> <div id="rightmenu"> ~省略~ </div> </div> <div id="footer"> ~省略~ </div> </body>

専門家に質問してみよう