css之clearfix的用法深入理解(必看篇)

CSS之clearfix的用法深入理解

简介

clearfix 是一种使用 CSS 技术清除浮动的方法。清除浮动后,可以让父元素包含子元素的浮动高度。

原理

  1. 产生浮动的元素会脱离文档的流,不再占据文档空间。
  2. 父元素如果没有设置高度,则高度为0。子元素设置浮动后,父元素的高度并不会随着子元素高度的改变而改变,即父元素不会自动包含子元素的高度。
  3. clearfix 的原理是:通过在父容器末尾插入一个“占位容器”,并对该容器应用一定的样式,从而使其自动包含子元素的浮动高度。

下面是 clearfix 样式的实现:

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

该样式会在父元素的末尾插入一个空的 ::after 伪元素,用来清除浮动。

清除浮动的方法

1. 使用空元素清除浮动

在浮动元素的最后一个元素之后,插入一个空元素,然后为该元素添加 clear: both 样式,从而使父元素自动包含子元素的浮动高度。这种方法已经不再推荐使用,因为它会导致 DOM 中插入冗余的元素。

示例代码:

<div class="clearfix">
  <div class="floated-elem"></div>
  <div class="floated-elem"></div>
  <div class="clear"></div>
</div>
.clear { clear: both; }

2. 使用 “伪元素” 清除浮动

可以使用 :before:after 伪元素来清除浮动。

示例代码:

<div class="clearfix">
  <div class="floated-elem"></div>
  <div class="floated-elem"></div>
</div>
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

注意事项

  1. clearfix 只对子元素应用清除浮动规则,不会对其自身应用。
  2. 在 IE6 中,min-height属性不能被正确识别,只能通过设置 height 属性来实现自适应高度。
  3. 在 IE6~7 中,容器也需要设置浮动,才能让容器内容自适应高度。
  4. 为避免冲突,建议定义一个全局 .clearfixclass 用于清除浮动。

示例说明

示例一

示例一是一个浮动元素未被清除浮动的情况,可以看到后面的盒子(兰色)因为浮动的存在而无法正常被包含在父盒子内,超出了父盒子边界。

<div class="wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div style="clear: both;"></div>
  <div class="box" style="background-color: lightblue;"></div>
</div>
.wrapper {
  border: 1px solid #000;
}

.box {
  width: 100px;
  height: 100px;
  background-color: lightgreen;
  float: left;
  margin: 10px;
}

示例二

示例二是使用 clearfix 清除浮动后的情况,可以看到兰色盒子正常被包含在父盒子内,不会超出父盒子边界,效果更加美观。

<div class="wrapper clearfix">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box" style="background-color: lightblue;"></div>
</div>
.wrapper {
  border: 1px solid #000;
}

.box {
  width: 100px;
  height: 100px;
  background-color: lightgreen;
  float: left;
  margin: 10px;
}

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:css之clearfix的用法深入理解(必看篇) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • vue 组件中使用 transition 和 transition-group实现过渡动画

    下面是详细讲解“vue 组件中使用 transition 和 transition-group实现过渡动画”的完整攻略: 1. Vue 中的过渡动画 Vue 提供了一套内置的过渡和动画系统,可以方便地在组件切换和元素增删时添加过渡效果。在组件中使用过渡动画需要使用两个组件:<transition> 和 <transition-group&g…

    css 2023年6月10日
    00
  • coolcode转SyntaxHighlighter与Mysql正则表达式实现分析

    Coolcode转SyntaxHighlighter与Mysql正则表达式实现分析 本篇攻略主要介绍如何使用Coolcode和SyntaxHighlighter将代码块进行高亮显示,并结合Mysql正则表达式进行分析。 步骤1:Coolcode转SyntaxHighlighter Coolcode是一种代码高亮工具,可以将代码渲染成漂亮的样式。但是它存在一些…

    css 2023年6月9日
    00
  • Query常用DIV操作获取和设置长度宽度的实现方法

    获取和设置元素的长度和宽度,是前端开发中经常需要涉及的操作。在 Query 中,可以通过 DIV 操作来实现。以下是该操作的具体攻略及两个示例说明: 1. 获取元素的长度和宽度 获取元素的长度和宽度,可以使用 width() 和 height() 方法。 width() 方法用于返回元素的宽度,包括 padding 和 border 的宽度,但不包括 mar…

    css 2023年6月10日
    00
  • FireFox下文本框/域百分比自适应数值padding显示bug解决方案

    FireFox下文本框/域百分比自适应数值padding显示bug解决方案 在使用 FireFox 浏览器浏览网页时,我们经常会遇到文本框或者文本域中的内容显示不全的情况,这是由于 FireFox 对于文本框/域的 padding 值的处理有一定的问题,导致了文本框/域的宽度不够,内容没有完全显示,影响浏览体验。 不过不用担心,下面为大家介绍几种能够解决这个…

    css 2023年6月10日
    00
  • IE6 float:left margin-left出现两倍像素

    首先,我们需要了解以下几点: 浮动元素具有块级盒子的特性,可以清除其前面的行内元素,但是它的外边距可能会和其他元素的外边距叠加。 IE6对浮动元素的解析方式与现代浏览器不同,可能会出现问题。 具体解决方案如下: 1.清除浮动,使用clear:both 在IE6浏览器中,float:left元素的左边距可能会变成两倍。这是由于浮动元素与其他元素的外边距叠加导致…

    css 2023年6月10日
    00
  • css教程实现div背景色渐变色代码分享

    下面是“CSS教程实现div背景色渐变色代码分享”的完整攻略。 1. 前言 CSS渐变背景色在网页设计中十分常见,它可以为网页带来更加丰富的色彩和视觉效果。本教程将介绍如何使用CSS实现渐变背景色,并提供示例代码和注释,供大家参考。 2. CSS渐变背景色的基本语法 CSS渐变背景色通过background-image属性实现,其基本语法如下: backgr…

    css 2023年6月9日
    00
  • CSS3的RGBA中关于整数和百分比值的转换

    CSS3的RGBA色彩模式可以使用整数或百分比值来定义每个颜色通道的值,如下所示: /* 定义RGBA颜色,参数值分别是红、绿、蓝和透明度 */ background-color: rgba(255, 0, 0, 0.5); 其中,255是红色通道的整数值,0是绿色通道的整数值,0是蓝色通道的整数值,0.5是透明度的百分比值,表示50%不透明度。 但是,在某…

    css 2023年6月10日
    00
  • vue前端性能优化之预加载和懒加载示例详解

    Vue前端性能优化之预加载和懒加载示例详解 前言 随着互联网信息的爆炸式增长,用户使用大量的移动设备上网冲浪,对网站的访问速度提出了更高的要求。为了提高网站的性能,我们可以使用预加载和懒加载这两种技术。 预加载 预加载是指在页面加载完成以及用户行为之前,提前加载所需的资源,从而提高页面的响应速度和用户体验。常用的预加载测试方法有以下两种: link标签方式实…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部