> 웹 프론트엔드 > HTML 튜토리얼 > 怎么解决div覆盖内容却没覆盖的问题?_html/css_WEB-ITnose

怎么解决div覆盖内容却没覆盖的问题?_html/css_WEB-ITnose

WBOY
풀어 주다: 2016-06-24 11:57:24
원래의
1875명이 탐색했습니다.

一、在上下结构的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>
로그인 후 복사
  20: </html>
로그인 후 복사


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

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

问题解决办法,测试有三种:

1、给boxa添加一个height属性,height的值必须大于或等于baxa-l的高度

   1: <div class="boxa" style="height:81px;">
로그인 후 복사


2、清除浮动

在“.boxa”盒子

闭合前加clear样式清除浮动。

   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>
로그인 후 복사

或者在boxb上清除浮动

   1: <div class="boxb" style="clear:both">boxb盒子里的内容</div>
로그인 후 복사

3、对“.boxa”添加overflow:hidden

   1: <div class="boxa" style="overflow:hidden">
로그인 후 복사
   2:     <div class="boxa-l">内容左</div>
로그인 후 복사
   3:     <div class="boxa-r">内容右</div>
로그인 후 복사
   4:  </div>
로그인 후 복사

二、相邻两个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: .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>
로그인 후 복사


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

解决方法:

1、都不使用浮动,去掉.bb中的float,效果如下


2、都使用浮动,给.cc添加float:left,效果如下


3、对没有使用float浮动的DIV设置margin样式。给.cc添加margin:100px,效果如下

 

来源:http://www.ido321.com/669.html


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿