Home >Web Front-end >HTML Tutorial >How to solve the problem of div covering content but not covering it?_html/css_WEB-ITnose
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>
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>
20: </html>
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;">
2. Clear the float
Add clear style before closing the ".boxa" box 16b28748ea4df4d9c2150843fecfba68 to clear the float.
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>
9: </div>
Or clear on boxb Float
1: <div class="boxb" style="clear:both">boxb盒子里的内容</div>
3. Add overflow:hidden to ".boxa"
1: <div class="boxa" style="overflow:hidden">
2: <div class="boxa-l">内容左</div>
3: <div class="boxa-r">内容右</div>
4: </div>
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>
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}
9: </style>
10: </head>
11: <body>
12: <div class="bb">我是bb里内容</div>
13: <div class="cc">我是dd里内容</div>
14: </body>
15: </html>
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