Home > Web Front-end > HTML Tutorial > How to solve the problem of div covering content but not covering it?_html/css_WEB-ITnose

How to solve the problem of div covering content but not covering it?_html/css_WEB-ITnose

WBOY
Release: 2016-06-24 11:57:24
Original
1879 people have browsed it

1. In a div layout with a top-down structure, a div may cover a div, but the content is not covered. Take a look at an example

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


Generally, you need to add ".boxa" and The ".boxb" layout is a top-down structure. From the picture above, we can see in the browser that the content in the two boxes achieves the top-down structure effect, but the DIV ".boxb" goes under ".boxa", but The content is not overwritten, only the DIV is overwritten.

This reason is because the child in the first big box uses the float attribute to float, so ".boxa" is not opened, and the ".boxb" box at the same level is not opened. ".boxa" is close to it, but ".boxa" has no height. The children of ".boxa" are not floating at the same level as ".boxb". The ".boxb" box still thinks that ".boxa" has no height, so " The .boxb" DIV box runs under the ".boxa" sub-level DIV box, forming an overlapping phenomenon.

There are three ways to solve the problem:

1. Add a height attribute to boxa. The value of height must be greater than or equal to the height of baxa-l

   1: <div class="boxa" style="height:81px;">
Copy after login


2. Clear the float

Add clear style before closing the ".boxa" box

to clear the float.

   1: //css
Copy after login
   2: .clear{ clear:both}
Copy after login
   3:
Copy after login
   4: //修改boxa
Copy after login
   5: <div class="boxa">
Copy after login
   6:     <div class="boxa-l">内容左</div>
Copy after login
   7:     <div class="boxa-r">内容右</div>
Copy after login
   8:     <div class="clear"></div>
Copy after login
   9: </div>
Copy after login

Or clear on boxb Float

   1: <div class="boxb" style="clear:both">boxb盒子里的内容</div>
Copy after login

3. Add overflow:hidden to ".boxa"

   1: <div class="boxa" style="overflow:hidden">
Copy after login
   2:     <div class="boxa-l">内容左</div>
Copy after login
   3:     <div class="boxa-r">内容右</div>
Copy after login
   4:  </div>
Copy after login

2. Two adjacent DIVs overlap and cover

This problem is generally caused by two adjacent DIVs, one floating and the other not. Use float to create two DIVs that overlap.

   1: <!DOCTYPE html>
Copy after login
Copy after login
   2: <html>
Copy after login
Copy after login
   3: <head>
Copy after login
Copy after login
   4: <title>DIV与DIV覆盖</title>
Copy after login
Copy after login
   5: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Copy after login
Copy after login
   6: <style>
Copy after login
Copy after login
   7: .bb{ float:left; border:1px solid #333; background:#FFF;height:50px;}
Copy after login
   8: .cc{ border:1px solid #F00;background:#CCC; height:80px}
Copy after login
   9: </style>
Copy after login
  10: </head>
Copy after login
  11: <body>
Copy after login
  12: <div class="bb">我是bb里内容</div>
Copy after login
  13: <div class="cc">我是dd里内容</div>
Copy after login
  14: </body>
Copy after login
  15: </html>
Copy after login


As can be seen from the above picture or browser test case, the ".bb" corresponding DIV box is floating and covered in the ".cc" corresponding DIV above the box, but the content is not covered. This is because the DIV box corresponding to ".bb" uses floating, and the DIV box corresponding to ".cc" at the same level does not use floating. Using floating on one does not cause the DIV to not be on the same "plane" ", but the content will not be overwritten, only the DIV will be overwritten.

Solution:

1. Do not use float, remove the float in .bb, the effect is as follows


2. Use both For floating, add float:left to .cc, the effect is as follows


3. Set the margin style for DIVs that do not use float floating. Add margin:100px to .cc, the effect is as follows

Source: http://www.ido321.com/669.html


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template