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

yizhihongxing

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日

相关文章

  • CSS如何修改tr边框属性实例详解

    在网页设计中,我们经常需要修改表格的边框属性,以使其更符合我们的设计需求。下面是一个完整攻略,包含了如何使用 CSS 修改 tr 边框属性的过程和两个示例说明。 CSS 如何修改 tr 边框属性的过程 1. 使用 border-collapse 属性 我们可以使用 CSS 的 border-collapse 属性来修改 tr 边框属性。下面是一个示例: &l…

    css 2023年5月18日
    00
  • ul设置列表为一行2条的方法

    若想将列表设置为一行两条,可以采用以下方法: 通过CSS样式表来修改 可以使用CSS的display和float属性来实现将列表横向排列,实现该功能的代码为: <style> ul li { display: inline-block; width: 49%; float: left; } </style> <ul> &l…

    css 2023年6月10日
    00
  • JS代码优化的8点建议

    以下是详细讲解“JS代码优化的8点建议”的完整攻略。 1. 使用 let 和 const 代替 var 在ES6中,let和const关键字引入了块级作用域,避免了在函数作用域中变量声明提升的问题。使用let和const不仅提高了代码可读性,还有助于减少变量污染。 以一个简单的示例来说明: var a = 10; function foo() { var a…

    css 2023年6月10日
    00
  • css制作有立体效果的表格

    下面是针对“CSS制作有立体效果的表格”的完整攻略: 1. 基础样式 首先,可以先给表格设置一些基础样式,如: table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { ba…

    css 2023年6月10日
    00
  • 本文的主角 vertical-align使用介绍

    vertical-align 是 CSS 中的一个属性,用于控制元素的垂直对齐方式。在 Web 开发中,垂直对齐是一个常见的问题,vertical-align 属性可以帮助我们解决这个问题。下面是一个完整攻略,包含了 vertical-align 属性的使用介绍和两个示例说明。 vertical-align 属性的使用介绍 vertical-align 属性…

    css 2023年5月18日
    00
  • 原生JS实现导航下拉菜单效果

    这里是原生JS实现导航下拉菜单效果的完整攻略。 确定HTML结构 首先,我们需要确定HTML结构。导航下拉菜单通常都是基于一个ul列表实现的,该列表作为导航栏的主体内容,每个列表项上展示导航项的名称,在鼠标移入导航项时,显示该项的子菜单,鼠标移出后,子菜单消失。以下是HTML示例: <nav> <ul> <li><a…

    css 2023年6月10日
    00
  • 利用jquery和BootStrap实现动态滚动条效果

    接下来我将详细讲解如何利用 jquery 和 Bootstrap 实现动态滚动条效果。本攻略分为以下几步: 1. 引入必需的资源文件让网页使用 jquery 和 Bootstrap 在 HTML 代码中引入以下两行代码,使得网页可以使用 jquery 和 Bootstrap: <!– 引入 jquery –> <script src=&…

    css 2023年6月10日
    00
  • Vue快速实现通用表单验证功能

    下面是“Vue快速实现通用表单验证功能”的完整攻略: 1. 需求背景 在前端开发中,表单验证是一个必不可少的功能,但每个表单的验证规则都不尽相同,造成了大量重复的工作,降低了开发效率。因此,我们需要一种通用的表单验证方案,可以快速实现各种表单验证规则。 2. 解决方案 Vue提供了丰富的API和生命周期,可以使开发者在编写代码时更加高效。我们可以使用Vue的…

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