当前位置: 首页 > Web前端 > HTML5

详细说明使用clear清除浮动的一些问题解决

时间:2023-04-05 15:18:38 HTML5

以下代码用于清除浮动引起的高度塌陷问题。clearfix:before{内容:".";显示:块;高度:0;明确:两者;visibility:hidden;}问题一:上面的代码能否实现浮动问题?答:不能。因为clear属性只能控制元素本身和之前浮动元素的关系。在这个例子中,:before伪元素明确地放在了所有子元素之前,所以clear属性不会对后面的浮动元素产生任何影响。clear属性的官方定义可以在CSS文档中查看。那么应该如何修改呢?将:before替换为:after。最终代码如下:.clearfix:after{content:".";显示:块;高度:0;明确:两者;visibility:hidden;}问题二:content属性的内容是否可以改为空content:'';?答:是的。因为高度:0;和visibility:hidden设置。如果内容:'';已设置,可以height:0;和可见性:隐藏被删除?当然可以,因为块元素没有内容就没有高度。修改后的代码如下:.clearfix:after{content:"";显示:块;clear:both;}问题三:display属性的内容可以改成inline或者inline-block吗?答:不是。我们需要了解float属性的初衷——让文字显示在图片周围。翻译成另外一句话:内联级别的元素会显示在浮动元素周围。那么为什么要显示:块;可以解决高塌问题。因为clear属性的意思是不允许元素本身与浮动元素的边框相邻。如果块级元素与块级元素的边界不相邻,则只能显示在下一行。也是为了换行父元素拉伸到高度,上面的代码正式解决了高度塌陷的原理。问题四:下面的div元素会不会出现高度塌陷的问题?<样式>.clearfix::after{内容:“”;显示:块;清除:左;}img{浮动:正确;}历史的天空

答:是的。为什么?要知道clear:left;之间的区别清楚:对;在清晰的属性中。left:与左浮动元素没有边界接触;right:与右浮动元素没有边界接触;both:与左浮动和右浮动元素没有边界接触;所以上面的代码并不能解决高度塌陷的问题。如果有如下代码:
1
2
3
1
23你会发现两个div的显示效果是一样的。也就是说,如果前面既有左浮动元素也有右浮动元素,那么clear属性的值设置为left还是right都没有关系。反之,如果clear属性设置为both,则前一个元素是向左浮动还是向右浮动都无所谓。这就是为什么clearfix通常设置clear:both;的原因。请注意,我们一直在谈论解决高度崩溃的问题,但从未谈论过清除浮动。因为本质上,浮动并没有被清除,我们只是通过clear属性来解决浮动元素导致的父元素高度塌陷的问题。并且clear属性只影响设置了clear属性的元素本身,不影响浮动元素。为了避免学习、工作和休闲娱乐的冲突,现用一个新的圈子【码农茶铺】与程序员交流生活、爱好、交友、求职、投诉等话题。希望你下班后能来茶馆喝茶聊天。了解更多