Home  >  Article  >  Web Front-end  >  不定高度的div背景或背景图片不显示问题_html/css_WEB-ITnose

不定高度的div背景或背景图片不显示问题_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:42:271273browse

在使用div+css进行网页布局时,如果外部div有背景颜色或者边框,而不设置其高度,在IE浏览器下显示正常。但是使用Firefox/opera浏览时却出现最外层Div的背景颜色和边框不起作用的问题。

大体结构

<style>.a1 {width:100px;background:red;}.b1 {background:blue;width:50px;height:600px;}</style></head><body><div class="a1">    <div class="b1"></div></div>    </body>

原因分析:由于在Firefox和opera中:如果里面的DIV是浮动的(float)而母体不会去计算子体float之后的height。而在 IE中支持这种计算,所以IE下正常。

所以出现这种问题有两个前提:1.外部div没有设置高度;2. 内部div是浮动的(带有float属性)。

一般,我们不确定外部div的高度,所以我们要清除浮动。

实现在div自增长后,其内的背景色或图片如何随之增长。

.a1{width:100px;background:red;height:auto !important;     height:550px;     min-height:550px;}.a1:after {    content:".";     height:0;     visibility:hidden;     display:block;     clear:both;      }

1.在Div末尾加入代码: 

 

或者使用 


 

2. 使用after伪类 

这种方法就是对父容器使用after伪类和内容声明在指定的现在内容末尾添加新的内容。经常的做法就是添加一个“点”,因为它比较小不太引人注意。然后我们再利用它来清除浮动(闭合浮动元素),并隐藏这个内容。 

这种方法兼容性一般,但经过各种 hack 也可以应付不同浏览器了,同时又可以保证html 比较干净,所以用得还是比较多的。 

代码如下:


#a1:after{ 
content:"."; 
height:0; 
visibility:hidden; 
display:block; 
clear:both; 


3.设置overflow为hidden或者auto 

这种做法就是将父容器的overflow设为hidden或auot就可以在标准兼容浏览器中闭合浮动元素. 

不过使用overflow的时候,可能会对页面表现带来影响,而且这种影响是不确定的,你最好是能在多个浏览器上测试你的页面 

4.浮动外部元素,float-in-float 

这种做法就是让父容器也浮动,这利用到了浮动元素的一个特性??浮动元素会闭合浮动元素。这种方式在 IE/Win 和标准兼容浏览器中都有较好的效果,但缺点也很明显??父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。

Statement:
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