• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Firefoxでの型崩れについて)

Firefoxでの型崩れについて

このQ&Aのポイント
  • IE6では正常に表示されるがFirefoxでは横幅がはみ出る型崩れが起こる
  • cssのwidthとpaddingの指定が原因か
  • 親要素と子要素にwidthとpaddingを設定することでブラウザの見え方の違いを回避する方法を知りたい

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

  • ベストアンサー
  • abril
  • ベストアンサー率69% (388/560)
回答No.1

> widthとpaddingを同時に指定している箇所 Firefox(+主要モダンブラウザ)とIE6では、上記の様な指定をしている場合(DOCTYPE宣言の種類やXML宣言の有無が関わってきます((DOCTYPEスイッチ、標準準拠モード/後方互換モード))。詳細は省きますので、これらのキーワードでググるなりして調べてみて下さい。)ボックスモデルの計算方法において解釈が異なってしまう事があります。 ※ボックスモデルにボーダーを指定している場合、そのボーダーの太さも計算に関わってきます。 とりあえず、この問題については下記のサイトがとてもよくまとまっていてわかりやすいかと思いますので、ここの基礎編を熟読されてみることをお奨めします。かなりかみ砕いて説明されているので理解に苦労する事はないと思います。 【参考】http://www.geocities.jp/multi_column/ …ということで、上記を読んで頂ければ済む話ですが、とりあえずごくごくさわりだけを。 例えば、「全体の幅が100pxで、左右(上下は幅に関係ないので本件では考慮しません)の余白が10px」としたいボックス(仮に<div class="hoge">内包要素</div>とします。)があるとします。これをCSSで下記の様に指定したとします。 div.hoge { width: 100px; padding: 0px 10px; } この場合、IE6では「幅100pxでボックスをレンダリングし、その中から左右10pxを引いた残りの80pxの幅の領域に内包要素をレンダリング」します。 しかし、Firefox等では「幅100pxの領域に内包要素をレンダリングし、その100pxの外側に更に左右10pxづつの余白を取ってボックスをレンダリング」する為、ボックスの実際の長さは100px+10px×2=120pxとなります。ですので、もしhogeというボックスの幅を100pxで考えてレイアウトしていた場合、当然後者は想定外の領域まではみ出してしまう、という事になります。 しかしながら、CSSの仕様上では実はIE6での上記の様な計算方法は独自解釈(バグ)であり、後者の解釈の方が順当とされております。ですので、本来ならば: div.hoge { width: 80px; padding: 0px 10px; } と指定するのが仕様に準じた記述です。 しかし、IE6ではこれだとボックス全体の幅が80px・内包要素のレンダリング領域が幅60pxになってしまいます。その為、CSSハックなどで処理を振り分けたり、DOCTYPEスイッチが標準準拠モードになる記述をしたり、といった色々な対処がなされるのですが、その様な異なる環境(とりあえずブラウザの事だと思っておいて下さい)間での差異を吸収する方法の一つとして、同一の要素に「widthとpaddingを同時に指定」しない、という逃げ道があります。質問者様が調べられところの「親要素にwidth、子要素にpaddingを設定する」というやり方ですね。 > 親要素、子要素とはどういったことでしょうか? 「これ」はCSSを適切に使いこなす上での重要なキーワードの一つです。「これ」についてきちんと理解できていないとCSSの”C”の部分を活かす事ができなくなりますので、CSS本を読むなり解説サイトを見るなりして習得しておく事が必須です。 上記は調べて頂くとして、「親要素にwidth、子要素にpaddingを設定する」というやり方のごく簡単な一例としてのサンプルだけ最後に。 【HTML】 <div class="hoge">←親要素 <p>内包要素</p>←子要素 </div> ------------------------------------------- 【CSS】 div.hoge { width: 100px; } div.hoge p { padding: 0px 10px; }

ibu34
質問者

お礼

とても基本的なことだと思われますのに、丁寧に教えてくださり、本当にありがとうございます! 教えていただいたサイトも 分かりやすく、とても参考になります! 基礎的なことをしっかり勉強して、見苦しくないHPを作っていきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイヤーフォックスでカラム落ちします。

    下記サイトを作っているのですが、東京都世田谷区認可保育園という部分と画像を変える四つの画像が画面を縮小するとファイヤーフォックスでカラム落ちします。 下記をやってみても治りません。どうすれば治るのでしょうか? http://okwave.jp/qa/q3719369.html 初めまして。 FireFoxやsafariなどの正規表現に忠実なブラウザでは ────────────────────────── width(550px)+padding(50px)=実際に表示される横幅 ────────────────────────── となります。 つまり、#Aの横幅に対して#B+#Cの値の方が大きくなってしまっているので、結果として、収まらなかった#Cが下に追いやられてしまっている、という具合です。 width550pxがwidth(550px)+padding(50px)より小さくなってカラム落ちする。 対処法としては ────────────────────────── <div style="横幅を指定">ここにmargin <div style="余白を指定">内容物</div>ここにpadding </div> ────────────────────────── このように相性の悪いプロパティは、各要素に対して一つずつ指定する事で全てのブラウザに対応出来ます。 http://sample1.digi2.jp/kindergarten2/index.html

    • ベストアンサー
    • HTML
  • Firefox と IE での padding の認識の違いについて

    CSS にて padding の記述をしているのですが、IE と Firefox で padding の認識の仕方が違い困っております。 例えば、幅100px の枠に左右の padding を 10px 指定した場合、幅100px の内に 10px の padding を取るのが IE であり、幅100px の外側に改めて padding 10px 取る(最終的に幅が120pxになる)のが Firefox であるようにです。 CSS例 #header { float: left; padding: 0 20; width: 100; height: 20; text-align: right; } このIE と Firefox の違いを解決する方法をご存知の方いらっしゃれば教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • いきなりHPの型崩れが!?

    こんにちわ。 タイトル通り、先週ぐらいからHPが型崩れを起してしまいます。 しかし、オフラインでは正しく表示され、 アップデートすると少し型崩れを起します。 以前は綺麗に表示されていました。 この原因は何なのでしょうか? 使用ブラウザはIE8で、FirefoxやSafari等では綺麗に表示されます。 宜しくお願いします!

  • display:block;を指定した置換要素の幅

    通常のブロック要素であれば親要素の幅まで広がりますが、 置換要素の場合display:block;を指定しても幅が広がりませんよね。 置換要素をブロック要素と同様な幅算出させる方法ってありますか? 具体的にはiPhone/Android向けのデザインでbuttonを親要素の横幅いっぱいにしたいのですが、 width:100%;だとbuttonにmarginを設定した場合にはみ出てしまうので使い勝手がよくないのです。 Firefoxの場合はwidth:-moz-available;を指定することで期待する挙動になるのですが、 webkitで似たようなことを実現する方法があれば教えてください!

    • 締切済み
    • CSS
  • スタイルシートのバグです(3)

    下記アドレスが現在テスト中のサイトのアドレスです。 添付画像の赤枠の部分が ブラウザーの文字サイズを大きくしていき 横幅がいっぱいになるとなぜかカラム落ちしてしまいます。 親ボックスには横幅のサイズを指定しているものの 子要素には特に幅のサイズ指定などはしていないにもかかわらず なぜかカラム落ちしてしまいます。 仮に子要素の幅のサイズ指定をしてみたのですがそれでも同じでした 原因がよくわかりません?? ちなみに一般的なブラウザー全てで同じ現象でした。 どなたかご教授いただけると助かります。 宜しくお願いします。 ■HTML http://sangoclip.web.fc2.com/lesson03/jyuken/ ■デフォルトCSS http://sangoclip.web.fc2.com/lesson03/shared/css/default.css ■リセットCSS http://sangoclip.web.fc2.com/lesson03/shared/css/reset.css

    • ベストアンサー
    • CSS
  • FireFoxで見ると表示がおかしくなってしまいます

    困っています。質問させてください。 このカテゴリでいいのか分からないのですが・・・。 HPを運用しているのですが、聞きかじりのcssを利用しています。 IEだと場合によっては普通に表示されるのですが、FireFoxだと文字がどでかく表示されてしまって、レンタルスペースはFC2を使っているのですがページの最後に表示されるはずの広告が文字列の中に割り込んでいたりして、表示がめちゃくちゃになってしまいます。 ちなみに使っているcssは * { margin:0; padding:0; } html { text-align:center; height:100%; } body { width:600px; height:100%; text-align:left; } #HEADER img { display:block; } #NAV { float:left; width:200px; height:100%; margin-top:-100px; padding-top:100px; } #CONTENT { width:650px; height:100%; margin-top:-100px; padding-top:100px; margin-left:200px; } です。index.htmlのbody部分にはfontの大きさは全く指定していません。 よろしければFireFoxでご覧になってみてください。 http://clovermiwa.web.fc2.com/ 私はHTMLをかじったくらいで、cssについては全く分かりません。 HTMLが間違っているのかもしれません。 色々いじってみましたが、問題が解決されず、困っています。 よろしければご教授、お願い致します。

    • ベストアンサー
    • HTML
  • HTMLで横幅をCSSで設定できません。

    HTMLで横幅をCSSで設定できません。 headerを作成しているのですが、画像のように横幅が外枠の wrapperをはみ出して表示されてしまいます。 はみ出した値は5pxとpaddingで指定した値と一致します。 headerをtableタグで作成した場合、横幅700pxの枠中での padding-left:5px;になり、横幅には変化はありません。 しかし、<div id="header">で横幅を700pxとし、 padding-left:5px;とすると、headerの横幅が 5px増えてしまいます。 <div id="header">の横幅を変化させずに、 paddingを指定することは可能なのでしょうか。 わかる方いらっしゃいましたら宜しくお願い致します。 ■HTML <html> <body> <div id="wrapper"> <div id="header"></div> </div> </body> </html> ■CSS #wrapper { width: 700px; } #header { width: 700px; padding-left: 5px; }

    • ベストアンサー
    • HTML
  • 画像表示

    cssで画像(width: 1920px; height: 1200px;)の表示範囲を指定して その表示範囲を指定した画像を  height: 150px;  width: 100%;(ブラウザの横幅) の大きさでで表示されるにはどうすればいいのでしょうか?

    • ベストアンサー
    • CSS
  • Firefoxで見ると画像が・・・

    CSS入門者なのですが質問させていただきます。 IEで見るとイメージどおりなのですが、 Firefoxで見ると画像が変形(DIVの大きさまで拡大)されてしまいます。 HTMLでサイズ指定できるかと思いwidthとheightを指定してみると、 高さのみ指定したとおりになりました。でも幅は変わらず大きいまま、デザイン全体が崩れてしまいます。 ご回答、よろしくお願いいたします。

    • 締切済み
    • CSS
  • webデザインcss <p>タグ内の長文について

    初歩的な質問失礼致します。 webデザイン初心者です。現在サイトの制作中なのですが、<p>要素の長文について何点かわからない所が出てきたので質問させていただきます。 (1) <p>要素で記述した文章の折り返し地点は、<br>を使用しない限り<p>要素に指定したwidth幅によってきまるのでしょうか? (2) その場合、背景画像を<p>に指定したら自動的にその背景画像も同じwidthになるのでしょうか? 添付画像の上の図のように、<p>要素にcssで背景画像を指定して、その上に上下左右それぞれ余白をとって長文を配置したいのですが、添付画像の下のような状態になってしまいます。 以下がcssです。 p { background: url(図の水色部分) no-repeat 0 0 ; width:691px; padding: 16px 230px 16px 30px; } (リセットcssでmargin.padding.borderはそれぞれ0にしてあります。) <p>を囲む<div>を作ってそれに背景画像を指定して、<p>に折り返したい幅のwidthを、marginで余白を指定する方法がいいのでしょうか? 出来れば<p>要素へのcss指定だけで完結させたいのですが、方法がわかりません。 どなたか初心者にもわかりやすくご教授いただけないでしょうか?? どうかよろしくお願い致します!

    • ベストアンサー
    • CSS