温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

DIV相互重叠怎么解决

发布时间:2022-03-04 16:40:59 来源:亿速云 阅读:858 作者:iii 栏目:web开发

这篇文章主要介绍“DIV相互重叠怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“DIV相互重叠怎么解决”文章能帮助大家解决问题。

一、上下结构DIV盒子覆盖    

1、首先网站DIV CSS实例HTML代码

<!DOCTYPE html> <html> <head> <title>DIVCSS5实例 DIV与DIV覆盖</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> .boxa,.boxb{ margin:0 auto; width:400px;} .boxa-l{ float:left; width:280px; height:80px; border:1px solid #F00} .boxa-r{ float:right; width:100px; height:80px; border:1px solid #F00} .boxb{ border:1px solid #000; height:40px; background:#999} </style> </head> <body> <div class="boxa"> <div class="boxa-l">内容左</div> <div class="boxa-r">内容右</div> </div> <div class="boxb">boxb盒子里的内容</div> </body> </html>

可拷贝代码自己动手发现DIV覆盖现象。

实例代码说明:
设置两个大div盒子分别CSS命名为“.boxa”和“.boxb”,设置宽度相同均为400px,对“.boxb”设置一个黑色边框与高为40px、背景为黑色的;然后在boxa里添加两个一个靠左一个靠右CSS命名分别为“.boxa-l”“.boxa-r”,两个小盒子,同时设置红色边框、css高为80px、宽度分别为280px和100px。

2、实例效果截图

DIV相互重叠怎么解决
代码在DW软件中,效果浏览器截图

3、问题分析
一般想需要将“.boxa”和“.boxb”布局是上下结构,从上图发现在浏览器中看到效果是两个盒子里内容是实现上下结构效果,但“.boxb”这个DIV跑到“.boxa”下面去了,但内容没有发生覆盖,只有DIV发生覆盖现象。

这个原因是因为第一个大盒子里的子级使用了浮动float属性而产生了浮动,所以导致“.boxa”没有被撑开,而同级的“.boxb”盒子与“.boxa”紧贴,而“.boxa”高度没有,“.boxa”的子级浮动的与“.boxb”不是同级,“.boxb”盒子依然认为“.boxa”没有高度,所以导致“.boxb”DIV盒子就跑到“.boxa”子级DIV盒子下面形成了覆盖重叠现象。

4、问题解决方法
要么清除浮动,要么设置“.boxa”高度,一般情况下文字内容不确定多少 就不能设置固定的高度,所以一般不能设置“.boxa”高度(当然能确定内容多高,这种情况下“.boxa”是可以设置一个高度即可解决覆盖问题。)。

这里就使用CSS清除浮动方法解决上下结构DIV重叠覆盖问题,清除浮动有两种方法,方法如下。

4-1:css clear清除浮动
在“.boxa”盒子</div>闭合前加clear样式清除浮动。

完整HTML源代码:

<!DOCTYPE html> <html> <head> <title>DIVCSS5实例 DIV与DIV覆盖</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> .boxa,.boxb{ margin:0 auto; width:400px;} .boxa-l{ float:left; width:280px; height:80px; border:1px solid #F00} .boxa-r{ float:right; width:100px; height:80px; border:1px solid #F00} .boxb{ border:1px solid #000; height:40px; background:#999} .clear{ clear:both} </style> </head> <body> <div class="boxa"> <div class="boxa-l">内容左</div> <div class="boxa-r">内容右</div> <div class="clear"></div> </div> <div class="boxb">boxb盒子里的内容</div> </body> </html>

案例截图

DIV相互重叠怎么解决
使用clear样式清除浮动

相关CSS教程文章:
css clear清除浮动

4-2:css overflow清除浮动
此方法与上一方法更为简便简单,只需对“.boxa”(子级有浮动的父级盒子加overflow:hidden)

CSS DIV实例代码如下:

<!DOCTYPE html> <html> <head> <title>DIVCSS5实例 DIV与DIV覆盖</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> .boxa{ overflow:hidden} .boxa,.boxb{ margin:0 auto; width:400px;} .boxa-l{ float:left; width:280px; height:80px; border:1px solid #F00} .boxa-r{ float:right; width:100px; height:80px; border:1px solid #F00} .boxb{ border:1px solid #000; height:40px; background:#999} </style> </head> <body> <div class="boxa"> <div class="boxa-l">内容左</div> <div class="boxa-r">内容右</div> </div> <div class="boxb">boxb盒子里的内容</div> </body> </html>

DIV+CSS案例效果截图

DIV相互重叠怎么解决

二、相邻两个DIV重叠覆盖    

这种新手出现这种问题比较多,一般是由于相邻两个DIV一个使用浮动一个没有使用浮动,这样照成两个DIV覆盖重叠现象。

1、出问题完整CSS+DIV代码

<!DOCTYPE html> <html> <head> <title>DIVCSS5实例 DIV与DIV覆盖</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> .aa{ float:left; border:1px solid #333; background:#FFF;height:50px;} .bb{ border:1px solid #F00;background:#CCC; height:80px} </style> </head> <body> <div class="aa">我是aa里内容</div> <div class="bb">我是BB里内容</div> </body> </html>

介绍代码:设置两个盒子使用class命名分别为“.aa”和“.bb”,一个设置float:left一个设置没有设置,一个设置背景为白色,一个设置背景颜色为灰色,一个高度设置50px,一个设置高度为80px,一个边框为黑色,一个边框为红色。

2、案例效果截图

DIV相互重叠怎么解决
DIV与DIV覆盖案例截图

3、问题分析
从上图或浏览器测试案例可以看出,“.aa”对应DIV盒子浮动覆盖在“.bb”对应DIV盒子之上,但内容没有覆盖,这是因为“.aa”对应DIV盒子使用了浮动,而同级“.bb”对应DIV盒子没有使用浮动,一个使用浮动一个没有导致DIV不是在同个“平面”上,但内容不会照成覆盖现象,只有DIV形成覆盖现象。

4、解决方法
要么都不使用浮动;要么都使用float浮动;要么对没有使用float浮动的DIV设置margin样式。

比如这里“.aa”对应盒子会固定宽度为300px;这个使用对“.bb”对应盒子设置margin-left:302px(大于300即可,自己测试设置需要的值)实现不重叠覆盖现象。

关于“DIV相互重叠怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

div
AI