前端系列第4集-解释下浮动和它的工作原理,清除浮动的方法

这篇具有很好参考价值的文章主要介绍了前端系列第4集-解释下浮动和它的工作原理,清除浮动的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

浮动是CSS布局中的一个重要概念,它可以让元素脱离标准文档流,并且可以让其他元素环绕在其周围。通常情况下,浮动用于创建多列布局或者图像与文字混排的效果。比如,我们可以使用浮动来实现一个左侧导航栏、右侧主体内容的页面布局。

浮动的工作原理很简单。当一个元素设置为浮动后,它会尝试尽可能地向左或者向右移动,直到遇到包含它的容器边界或者其他浮动元素。同时,其他未设置浮动的元素会忽略浮动元素的位置,继续按照标准文档流排列。

清除浮动有多种方法,其中比较常见的两种是:

  1. 使用clear属性:在浮动元素的下方添加一个空元素,并给这个元素设置clear属性。clear属性有left、right、both三个值,分别表示清除左浮动、右浮动以及两者都清除。例如:

<div style="clear:both;"></div>
  1. 使用overflow属性:将浮动元素的容器元素设置为一个块级元素,并给它设置overflow属性。这样可以强制容器元素包含浮动元素,并且不会出现溢出的情况。例如:

<div style="overflow:auto;">
  <div style="float:left;">浮动元素</div>
</div>
  1. 使用after伪元素:在浮动元素的容器元素上添加一个clearfix类,并在CSS中定义clearfix类的样式,使用after伪元素清除浮动。例如:

.clearfix:after {
  content: ".";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}
.clearfix {
  zoom: 1; /* IE6/7 */
}
<div class="clearfix">
  <div style="float:left;">浮动元素</div>
</div>
  1. 使用display属性:将浮动元素的容器元素设置为table、table-cell或者flex等具有弹性布局的属性。这种方法需要考虑兼容性和语义化的问题。例如:

<div style="display: table;">
  <div style="display: table-cell; vertical-align: top;">
    <div style="float:left;">浮动元素</div>
  </div>
</div>
  1. 使用inline-block属性:将父元素设置为display:inline-block,子元素再设置float:left等浮动属性。这种方式也可以实现多列布局。

<div style="display: inline-block;">
  <div style="float: left;">浮动元素1</div>
  <div style="float: left;">浮动元素2</div>
  <div style="float: left;">浮动元素3</div>
</div>
  1. 使用BFC(块级格式化上下文):在父元素上触发BFC可以清除浮动,具体方式有多种,如给父元素设置overflow:hidden、position:absolute、display:table等属性都可以触发BFC。

<div style="overflow: hidden;">
  <div style="float: left;">浮动元素</div>
</div>

还有一个比较新的方法是使用CSS Grid布局中的grid属性。可以将子元素设置为grid-column-start和grid-column-end等属性,然后在父元素上设置display: grid即可实现清除浮动。

<div style="display: grid;">
  <div style="grid-column-start: 1; grid-column-end: 2;">浮动元素1</div>
  <div style="grid-column-start: 2; grid-column-end: 3;">浮动元素2</div>
  <div style="grid-column-start: 3; grid-column-end: 4;">浮动元素3</div>
</div>
  1. 使用flex布局:将父元素设置为display:flex,子元素再设置float:left等浮动属性。这种方式也可以实现多列布局。

<div style="display: flex;">
  <div style="float: left;">浮动元素1</div>
  <div style="float: left;">浮动元素2</div>
  <div style="float: left;">浮动元素3</div>
</div>
  1. 使用网格布局(Grid Layout):将父元素设置为display:grid,子元素再设置grid-column-start和grid-column-end等属性。这种方式可以实现更复杂的多列布局。

<div style="display: grid;">
  <div style="grid-column-start: 1; grid-column-end: 2;">浮动元素1</div>
  <div style="grid-column-start: 2; grid-column-end: 3;">浮动元素2</div>
  <div style="grid-column-start: 3; grid-column-end: 4;">浮动元素3</div>
</div>

还有一种比较特殊的方法是使用伪元素:before和:after,将它们添加到包含浮动元素的容器中,并给它们设置clear:both属性。这样就可以清除浮动并且不需要在HTML中添加多余的元素。

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

还有一种比较新的方法是使用CSS变量(CSS Variables)来清除浮动。我们可以在包含浮动元素的容器中添加一个::after伪元素,并且将这个伪元素的高度设置为0,然后利用CSS变量将容器的高度赋值给伪元素的高度,从而达到清除浮动的效果。例如:

.container::after {
  content: '';
  display: block;
  height: 0;
  clear: both;
  --height: calc(100% + 1px); /* 设置CSS变量 */
  height: var(--height); /* 使用CSS变量 */
}

这种方法的好处是能够动态地计算容器的高度,因此在响应式布局中更加灵活。但是需要注意的是CSS变量的兼容性问题,目前还不是所有的浏览器都支持CSS变量。

还有一种比较传统的方法是使用JavaScript来清除浮动。我们可以在包含浮动元素的容器中添加一个空的div元素,并且给这个元素设置clear:both属性,然后通过JavaScript来计算出容器的实际高度,将这个高度赋值给空的div元素。例如:

<div class="container">
  <div class="float-left">浮动元素1</div>
  <div class="float-left">浮动元素2</div>
  <div class="float-left">浮动元素3</div>
  <div class="clear-float"></div>
</div>

<script>
  var container = document.querySelector('.container');
  var clearFloat = document.querySelector('.clear-float');
  clearFloat.style.height = container.offsetHeight + 'px';
</script>

这种方法的好处是能够解决一些兼容性问题,但是需要注意的是如果网页中存在大量浮动元素,使用JavaScript来清除浮动可能会对性能产生影响。

还有一种比较特殊的情况,即使用flexbox布局时,浮动元素会自动清除。这是因为在flex容器中,子元素会默认设置为flex-item,而不是常规文档流中的block元素。因此,浮动元素不会对flex容器中其他元素的布局产生影响。

.flex-container {
  display: flex;
}

.flex-item {
  float: left; /* 浮动元素 */
}

还有一种比较特殊的情况,即在CSS Grid布局中,浮动元素同样会被自动清除。这是因为在Grid容器中,子元素默认设置为grid-item,而不是常规文档流中的块级元素。因此,浮动元素不会对Grid容器中其他元素的布局产生影响。

.grid-container {
  display: grid;
}

.grid-item {
  float: left; /* 浮动元素 */
}

还有一种比较简单的清除浮动方法是使用CSS Flexbox布局。我们可以将浮动元素的父元素设置为display: flex,并且将子元素设置为flex属性即可实现清除浮动的效果。

.parent {
  display: flex; /* 将父元素设置为Flex容器 */
}

.child {
  flex: 1; /* 将子元素设置为Flex项 */
  float: left; /* 浮动元素 */
}

浮动(Float)

浮动是 CSS 中用于实现元素水平布局的一种方式。通过 float 属性,可以使一个元素脱离正常的文档流,沿其容器的左侧或右侧边缘排列。浮动通常用于实现文本环绕图片、创建多列布局等效果。

工作原理

当一个元素应用 float 属性后,它会沿其父容器的左侧或右侧边缘浮动。其他非浮动元素将不会覆盖浮动元素,而是环绕它。同时,浮动元素里面的文本和内联元素也会环绕浮动元素。需要注意的是,浮动元素只会影响其后的同级元素。

举个例子,你可以为一个图片元素设置 float: left,这会使图片沿父容器左侧浮动,同时后面的文本会环绕这个图片。

清除浮动(Clear Float)

当一个元素浮动后,它会脱离正常文档流,可能导致父容器高度塌陷等布局问题。为了解决这个问题,我们需要清除浮动。有以下几种常用的清除浮动方法:

  1. 使用 clear 属性:你可以在一个元素上应用 clear: bothclear: leftclear: right。这会使该元素不允许出现在浮动元素的旁边,从而实现清除浮动的效果。

  2. 使用伪元素:这是一种常用的自动清除浮动的方法。通过为父容器添加一个 ::after 伪元素,并设置 contentdisplayclear 属性,可以实现自动清除浮动。

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

    然后,为需要清除浮动的父容器添加 clearfix 类即可。

  3. 使用 overflow 属性:为父容器设置 overflow: autooverflow: hidden 也可以实现清除浮动。这种方法有时可能会导致其他布局问题,需要根据实际情况权衡。

  4. 使用 display: flexdisplay: grid: 使用 Flexbox 或 Grid 布局的容器会自动清除浮动,因为这两种布局方式不受子元素的浮动属性影响。

仓库地址:https://github.com/webVueBlog/WebGuideInterview文章来源地址https://www.toymoban.com/news/detail-404810.html

到了这里,关于前端系列第4集-解释下浮动和它的工作原理,清除浮动的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计一个学生类和它的一个子类——本科生类

    设计一个学生类( Student )和它的一个子类——本科生类( Undergraduate )。要求如下: (1)Student类有姓名( name )和年龄( age )属性,两者的访问权限为 protected ;一个包含两个参数的构造方法,用于给姓名和年龄属性赋值;一个 show( ) 方法用于输出Student的属性信息,输

    2023年04月09日
    浏览(32)
  • VRRP协议是什么?详解它的工作原理

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解VRRP是什么,以及它的工作原理,优点以及基本概念。 目录 一、VRRP协议是什么? 二、VRRP协议的工作原理 1、在抢占方式下 2、在非抢占方式下 三、VRRP的优点

    2024年02月13日
    浏览(31)
  • AI发展方向 可解释AI理论 发明与发现 AI智能可解释它的原理吗? 理解不了就难以信任 没有意图更安全?

    只有我们刻意设计,并清晰了解其运作原理的东西才是发明。 例如,望远镜是发明,但通过望远镜看到木星,知道它有自己的卫星,这是一个发现。大语言模型更像是发现。我们经常为它们的能力感到惊奇。它们并不是设计出来的产物。 至于 AI 对人类生存的潜在危害,贝索

    2024年01月21日
    浏览(28)
  • 前端学习笔记:CSS中浮动的原理,定位

    这是本人学习的总结,主要学习资料如下 马士兵教育 float设计的初衷是为了有文字环绕图片的效果,比如下图。 所以有浮动效果的元素一定不会遮挡其他元素的文字。比如有两个 div ,两个 div 都有文字,正常文字在 div 左上角。 我们设置一个浮动一个不浮动,我们会看到浮

    2024年02月03日
    浏览(37)
  • 解压你的压缩:Python ZipFile 实战指南(一)ZipFile 类和它的参数们

    项目 描述 维基百科 ZIP 格式 Python 官方文档 zipfile - 使用ZIP存档 搜索引擎 Google 、 Bing Zip 文件格式规范 APPNOTE.TXT 项目 描述 Python 3.10.6 操作系统 Windows 10 专业版(x86-64) Zip 文件 ZIP 文件格式是一种数据压缩和文档储存的文件格式, 原名 Deflate,发明者为菲尔·卡茨(Phil Katz),

    2023年04月23日
    浏览(30)
  • 什么是浮动(float)?如何清除浮动?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月12日
    浏览(28)
  • 深入解读 Axios 拦截器:全面了解它的工作原理和实际应用

     Axios提供了一种称为 “拦截器(interceptors)” 的功能,使我们能够在请求或响应被发送或处理之前对它们进行全局处理。拦截器为我们提供了一种简洁而强大的方式来转换请求和响应、进行错误处理、添加认证信息等操作。在本文中,我们将深入探讨如何使用 Axios 的拦截器

    2024年04月09日
    浏览(31)
  • 【前端|CSS系列第3篇】CSS盒模型、浮动及定位

    在前端开发中,CSS是一项重要的技术,用于控制网页的样式和布局。在本系列的第三篇文章中,我们将学习CSS的盒模型、浮动以及定位,这些概念和技术在页面布局中起着至关重要的作用。通过本文的学习,希望能够帮助大家更好地理解和运用这些关键概念。 CSS盒模型是用来

    2024年02月11日
    浏览(41)
  • 【CSS】网站 网格商品展示 模块制作 ( 清除浮动需求 | 没有设置高度的盒子且内部设置了浮动 | 使用双伪元素清除浮动 )

    绘制的如下模块 : 在上面的盒子中 , 没有设置高度 , 只设置了一个 1215px 的宽度 ; 在列表中每个列表项都设置了 浮动 ;   之前的盒子都设置了高度 , 因此其中虽然设置了浮动 , 但不会影响到后续的页面布局 ; 上述模型中 , 没有设置高度 , 并且设置了浮动 , 如果不清除浮动 , 后

    2024年02月10日
    浏览(33)
  • [保姆教程] Windows平台下OpenCV编译安装和它的Go语言实现gocv的使用(亲测通过)

    一、下载安装 MinGW CMake 预备步骤 首先打开cmd: 下载安装MinGW64 访问: https://sourceforge.net/projects/mingw-w64/files/ 下载: MinGW-W64 GCC-8.1.0 下面的 x86_64-posix-seh 版本 下载后,将它解压缩到 c:mingw64 里 下载安装 CMake 访问:https://cmake.org/download/ 下载:Windows x64 ZIP 解压到: c:cmake Window

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包