上图的html部分代码为:
html代码
css部分代码为:
css代码
通过上面的图片可以看出,当内部的div设置float后,外部的元素的就会受到以下影响:
背景不能显示
边框不能被撑开
margin和padding设置的值不能精确显示
元素浮动的坏处如果不用除元素浮动的话,浮动层后面的非浮动层内容就有可能被覆盖,造成页面的排版混乱。
例如在上面的例子中再加一个非浮动的div,就会创造该div被前面的三个浮动div覆盖住。
由于浮动,后面的div被覆盖
既然会涌现这种情形,我们就该当设法打消掉元素的浮动。
方法1-父级元素设定定高我们可以给父级元素.outer设置为定高,这样就可以不影响后面的非浮动元素。.outer的样式为:
设置定高
达到的效果为
清楚浮动之后
虽然这种方法可以清楚浮动,但是对父元素设置定高会有很多的限定,如果内层div的高度变革,则须要手动修正外层div的高度,相对来说有点麻烦,因此这种方法并不推举。
方法2-添加新元素,设置clear:both在父元素内部的末端处添加一个新的div,并设置其clear: both;属性。
添加一个新的div
该新增div的css属性为:
新增div的css属性
利用该方法同样可以达到清楚浮动的效果,但是由于会新增DOM元素,这种方法也不推举。
方法3-父级元素利用overflow:hidden属性在父级元素上利用overflow:hidden属性,准确来说只要不给overflow属性设置为visible都可以打消元素浮动。
设置overflow: hidden
利用这种方法可以少写很多css样式代码,同时不会新增DOM元素,因此推举利用这种办法。
方法4-对父元素利用伪元素通过对父元素利用:after伪元素,同样可以达到打消浮动的效果。
伪元素清楚浮动
以上方法在伪元素中,通过设置clear与overflow属性来实现。方法4在实际的项目中利用的频率最高,因此极大的推举利用方法4来打消元素浮动。
其他方法看到网上有的资料先容,通过设置父元素为浮动,或者设置父元素为absolute定位,这两种方法只是能显示父元素而已,但父元素同样会覆盖到后面的非浮动元素,因此这两种方法严格意义来说并不算打消浮动的方法。
总结本日这篇文章紧张先容了几种通过CSS来打消元素浮动的方法,你节制了吗?