布局中造成盒子塌陷的原因是什么?怎么解决塌陷问题?

html-css014

布局中造成盒子塌陷的原因是什么?怎么解决塌陷问题?,第1张

为什么会出现盒子塌陷?

当父元素没设置足够大小的时候,而子元素设置了浮动的属性,子元素就会跳出父元素的边界(脱离文档流),尤其是当父元素的高度为auto时,而父元素中又没有其它非浮动的可见元素时,父盒子的高度就会直接塌陷为零, 我们称这是CSS高度塌陷。

下图下方两个子元素的盒子分别设置了左浮动和右浮动,顶端的长条盒子出现了塌陷

关于盒子塌陷的几种解决方法

(1)最简单,直接,粗暴的方法就是盒子大小写死,给每个盒子设 定固定的width和height ,直到合适为止,这样的好处是简单方便,兼容性好,适合只改动少量内容不涉及盒子排布的版面。缺点是非自适应,浏览器的窗口大小直接影响用户体验。

(2) 给外部的父盒子也添加浮动 ,让其也脱离标准文档流,这种方法方便,但是对页面的布局不是很友好,不易维护。

(3)给父盒子添加overflow属性。

        overflow:auto有可能出现滚动条,影响美观。

         overflow:hidden 可能会带来内容不可见的问题。

(4)父盒子里最下方引入清除浮动块。最简单的有:

        <br style=" clear:both "/>

有很多人是这么解决的,但是我们并不推荐,因为其引入了不必要的冗余元素 。

(5)用after伪元素清除浮动 

给外部盒子的after伪元素设置clear属性,再隐藏它 

这其实是对空盒子方案的改进,一种纯CSS的解决方案,不用引入冗余元素。

这也是bootstrap框架采用的清除浮动的方法。

这是一种纯CSS的解决浮动造成盒子塌陷方法,没有引入任何冗余元素,推荐使用此方法来解决CSS盒子塌陷。

备注:第五种方法虽好,但是低版本IE不兼容,具体选择哪种解决方法,可根据实际情况决定。

(6)给父盒子添加border

(7)给父盒子设置padding-top

在“CSS盒子模型”理论中,所有页面中的元素都可以看成一个盒子,并且占据着一定的页面空间。

一个页面由很多这样的盒子组成,这些盒子之间会互相影响,因此掌握盒子模型需要从两个方面来理解:一是理解单独一个盒子的内部结构,二是理解多个盒子之间的相互关系。

每个元素都看成一个盒子,盒子模型是由content(内容)、padding(内边距)、margin(外边距)和border(边框)这四个属性组成的。此外,在盒子模型中,还有宽度width和高度height两大辅助性属性。

记住,是所有的元素都可以看出一个盒子!

下图为一个CSS盒子模型的内部结构:

CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。

网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin),

CSS盒子模式都具备这些属性。

这些属性可以把它转移到日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也就是能装东西的一种箱子,也具有这些属性,所以叫它盒子模式。

每个盒子都有:边界、边框、填充、内容四个属性;

每个属性都包括四个部分:上、右、下、左;这四部分可同时设置,也可分别设置;里的抗震辅料厚度,而边框有大小和颜色之分,又可以理解为生活中所见盒子的厚度以及这个盒子是用什么颜色材料做成的,边界就是该盒子与其它东西要保留多大距离。