ホームページ > ウェブフロントエンド > htmlチュートリアル > div がコンテンツをカバーしているがカバーしていない問題を解決する方法?_html/css_WEB-ITnose

div がコンテンツをカバーしているがカバーしていない問題を解決する方法?_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:57:24
オリジナル
1894 人が閲覧しました

1. トップダウン構造の div レイアウトでは、div が div をカバーする可能性がありますが、コンテンツはカバーされません。例を見てみましょう

   1: <!DOCTYPE html>
ログイン後にコピー
ログイン後にコピー
   2: <html>
ログイン後にコピー
ログイン後にコピー
   3: <head>
ログイン後にコピー
ログイン後にコピー
   4: <title>DIV与DIV覆盖</title>
ログイン後にコピー
ログイン後にコピー
   5: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ログイン後にコピー
ログイン後にコピー
   6: <style>
ログイン後にコピー
ログイン後にコピー
   7: .boxa,.boxb{ margin:0 auto; width:400px;}
ログイン後にコピー
   8: .boxa-l{ float:left; width:280px; height:80px; border:1px solid #F00}
ログイン後にコピー
   9: .boxa-r{ float:right; width:100px; height:80px; border:1px solid #F00}
ログイン後にコピー
  10: .boxb{ border:1px solid #000; height:40px; background:#999}
ログイン後にコピー
  11: </style>
ログイン後にコピー
  12: </head>
ログイン後にコピー
  13: <body>
ログイン後にコピー
  14: <div class="boxa">
ログイン後にコピー
  15: <div class="boxa-l">内容左</div>
ログイン後にコピー
  16: <div class="boxa-r">内容右</div>
ログイン後にコピー
  17: </div>
ログイン後にコピー
  18: <div class="boxb">boxb盒子里的内容</div>
ログイン後にコピー
  19: </body>
ログイン後にコピー


通常、「.boxa」と「.boxb」をレイアウトする必要があります上の図から、ブラウザーで見られる効果は、2 つのボックス内のコンテンツがトップダウン構造の効果を実現していますが、DIV ".boxb" は ".boxa" の下で実行されていることがわかります。 、ただし、コンテンツは上書きされず、DIV のカバレッジ現象のみが発生します。

この理由は、最初の大きなボックス内の子が float 属性を使用して float しているため、「.boxa」が開かれておらず、同じレベルにある「.boxb」ボックスが「.boxa」とは異なるためです。しかし、「.boxa」には高さがありません。「.boxa」の子は浮動小数点であり、「.boxb」ボックスは依然として「.boxa」に高さがないと考えます。 .boxb" DIV ボックスは、".boxa" サブレベル DIV ボックスの下で動作し、重複現象を形成します。

この問題を解決するには 3 つの方法があります:

1. height 属性を boxa に追加します。 height の値は、baxa-l の高さ以上でなければなりません

  20: </html>
ログイン後にコピー


2 . フロートをクリアします

".boxa" ボックス

を閉じる前にクリア スタイルを追加します。

   1: <div class="boxa" style="height:81px;">
ログイン後にコピー
   1: //css
ログイン後にコピー
   2: .clear{ clear:both}
ログイン後にコピー
   3:
ログイン後にコピー
   4: //修改boxa
ログイン後にコピー
   5: <div class="boxa">
ログイン後にコピー
   6:     <div class="boxa-l">内容左</div>
ログイン後にコピー
   7:     <div class="boxa-r">内容右</div>
ログイン後にコピー
   8:     <div class="clear"></div>
ログイン後にコピー

または、boxb の float をクリアします

   9: </div>
ログイン後にコピー

3. 「.boxa」に overflow:hidden を追加します。

RREE RREE RREE RREE

2. 2 つの隣接する DIV の重複カバレッジ

この問題は通常、2 つの隣接する DIV の一方がフローティングを使用し、もう一方がフローティングを使用しないという事実によって発生し、これにより 2 つの DIV が重複します。

   1: <div class="boxb" style="clear:both">boxb盒子里的内容</div>
ログイン後にコピー
   1: <div class="boxa" style="overflow:hidden">
ログイン後にコピー
   2:     <div class="boxa-l">内容左</div>
ログイン後にコピー
   3:     <div class="boxa-r">内容右</div>
ログイン後にコピー
   4:  </div>
ログイン後にコピー
   1: <!DOCTYPE html>
ログイン後にコピー
ログイン後にコピー
   2: <html>
ログイン後にコピー
ログイン後にコピー
   3: <head>
ログイン後にコピー
ログイン後にコピー
   4: <title>DIV与DIV覆盖</title>
ログイン後にコピー
ログイン後にコピー
   5: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ログイン後にコピー
ログイン後にコピー
   6: <style>
ログイン後にコピー
ログイン後にコピー
   7: .bb{ float:left; border:1px solid #333; background:#FFF;height:50px;}
ログイン後にコピー
   8: .cc{ border:1px solid #F00;background:#CCC; height:80px}
ログイン後にコピー


上の図またはブラウザのテストケースからわかるように、「.bb」はDIV ボックスのフローティング オーバーレイ「.cc」は DIV ボックスに対応しますが、内容は対象外です。これは、「.bb」は DIV ボックスに対応し、float を使用しますが、「.cc」は同レベルの DIV ボックスに対応し、float を使用しないためです。 1 つは float を使用し、もう 1 つは DIV が「プレーン」上に存在しないようにし、コンテンツはカバーされず、DIV のみがカバーされます。

解決策:

1. float を使用せず、.bb 内の float を削除します。効果は次のとおりです


2. float を使用し、float:left を .cc に追加します。効果は次のとおりです


3 、float フローティングを使用しない DIV のマージン スタイルを設定します。 margin:100px を .cc に追加すると、効果は次のようになります。



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート