css-浮动与清除浮动的原理详解(清除浮动的原理你知道吗)

float元素A的特点:

  1. 脱离文档流
  2. 靠向left或right
  3. float元素会和块盒子重叠
    • 准确来说,是块盒子和A重叠,但块盒子内容会浮动在A周围
    • 不会和inline元素重叠

    <div class="parent">
        <div class="box"></div>
        <p>
            孟子曰:“君子有三乐,而王天下不与存焉。父母俱存,兄弟无故①,一乐也;仰不愧于天,俯不怍②于人,二乐也;得天下英才而教育之,三乐也。君子有三乐,而王天下者不与存焉孟子曰:“君子有三乐,而王天下不与存焉。父母俱存,兄弟无故①,一乐也;仰不愧于天,俯不怍②于人,二乐也;得天下英才而教育之,三乐也。君子有三乐,而王天下者不与存焉孟子曰:“君子有三乐,而王天下不与存焉。父母俱存,兄弟无故①,一乐也;仰不愧于天,俯不怍②于人,二乐也;得天下英才而教育之,三乐也。君子有三乐,而王天下者不与存焉
        </p>
        <div class="box"></div>
        <div class="behind"></div>
        <div class="box"></div>
    </div>
        .parent{
            width:380px;
            background-color:rgb(25, 132, 199);
        }
        .box{
            width: 120px;
            height: 100px;
            float: left;
            background-color: rgb(25, 199, 185);
        }
        .behind{
            width: 150px;
            height: 120px;
            background-color: black;
        }

图中显示了浮动导致的三大问题

(1)高度塌陷,父元素parent没被子浮动元素撑开

(2)浮动元素 和 块状元素 重叠

(3)文字、非块状元素img浮动在浮动元素周围(本质上这也算是第二种元素重叠的问题,因为元素重叠了而内容浮动在其周围)

主要的解决方法分三类:1.构建BFC元素   2.利用清除浮动的属性clear   3.暴力解法

1.构建BFC元素

BFC元素的两个特性①float元素不会和BFC元素重叠 ②BFC元素计算高度会算上float元素,所以BFC就可以解决float带来的高度塌陷、元素重叠的问题

  • 高度塌陷:将父元素设置为BFC元素
  • 元素重叠:将浮动元素之后的元素设置为BFC元素

设置BFC元素的方式:

display:inline-block、table-cell

overflow:auto、scroll、hidden

float:left、right

position:absolute、fixed

2.利用清除浮动的属性clear

可在浮动元素后添加清除浮动的空元素、伪元素,这种方法适用于浮动带来的任何问题

  • <div style="clear: both"></div>
  • <br clear="all">
  • ::after{content:""; display:block; clear:both;}

需要注意的是解决元素重叠时,BFC解决的结果为,将元素变为inline-block元素,float元素和BFC元素处于一行;而clear属性解决时,只是禁止浮动上来的元素靠近,float元素和后面的元素处于一列;如下图

解决浮动问题的方法很多,需要根据不同的情况来选择最适合的方法

时间: 2024-08-10 05:05:15

css-浮动与清除浮动的原理详解(清除浮动的原理你知道吗)的相关文章

彻底理解浮动float CSS浮动详解 清除浮动的方法

我们把网页的常用的布局格式分为以下三种: 1.标准流. 所谓的标准流就是,行内元素自己单独一行,而块级元素是上下显示的. 以前我们学习的都是标准流.   注意:标准流使我们网页布局中最稳定的一种结构 2. 浮动流 使我们学习的脱离标准流的第一种方式.会影响我们标准流的排列.所以,我们布局的时候,能用标准流做的,就不用浮动做. 3. 定位流 定位流也是脱离标准流的一种模式.它完全脱离标准流,不会对标准流有影响. 浮动(float) 我们要浮动的目的: 我们浮动的目的,就是可以把多个块级元素放到想要

块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解

CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inline元素水平排列,直到行被占满后换行,block元素则被渲染为完整的一行,除非指定,所有元素默认为普通流定位. 浮动:浮动布局中,元素首先按照普通流位置出现,然后根据浮动方向尽可能向左或右偏移,效果与文本环绕相似. 绝对定位:元素会脱离普通流,因此绝对定位元素不会对其兄弟元素产生影响(与float不

kickstart安装系统原理详解

前言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的办法有什么? 光盘安装系统===>一个服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就开始装系统能用的上,以后用的机会屈指可数.用USB外置光驱,插来插去也醉了. U盘安装系统===>还是同样的问题,要一台一台服务器插U盘. 网络安装系统(ftp,http,nfs) ===>这个方法不错,只要服务器能联网就可以装系统了

Influxdb原理详解

本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 15 部分: InfluxDB学习之InfluxDB的安装和简介 InfluxDB学习之InfluxDB的基本概念 InfluxDB学习之InfluxDB的基本操作 InfluxDB学习之InfluxDB的HTTP API写入操作 InfluxDB学习之InfluxDB数据保留策略(Retention Policies) InfluxDB学习之InfluxDB连续查询(Continuous Queries) InfluxDB学习之

图像处理中的数学原理详解17——卷积定理及其证明

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 1.4.5   卷积定理及其证明 卷积定理是傅立叶变换满足的一个重要性质.卷积定理指出,函数卷积的傅立叶变

Java虚拟机工作原理详解

原文地址:http://blog.csdn.net/bingduanlbd/article/details/8363734 一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 [java] view plaincopy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码

Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数"wordcount"代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:"知其然,并知其所以然". Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是基于数据流的实时处理系统,提供了大吞吐量的实

SVM -支持向量机原理详解与实践之四

SVM -支持向量机原理详解与实践之四 SVM原理分析 SMO算法分析 SMO即Sequential minmal optimization, 是最快的二次规划的优化算法,特使对线性SVM和稀疏数据性能更优.在正式介绍SMO算法之前,首先要了解坐标上升法. 坐标上升法(Coordinate ascent) 坐标上升法(Coordinate Ascent)简单点说就是它每次通过更新函数中的一维,通过多次的迭代以达到优化函数的目的. 坐标上升法原理讲解 为了更加通用的表示算法的求解过程,我们将算法表

SVM-支持向量机原理详解与实践之一

目录(?)[+] 前言 SVM机器学习与深度学习 人工智能领域 机器学习与深度学习 SVM简介 SVM原理分析 快速理解SVM原理 线性可分和线性不可分 函数间隔和几何间隔 超平面分析与几何间隔详解 二次最优化 SVM-支持向量机原理详解与实践 前言 去年由于工作项目的需要实际运用到了SVM和ANN算法,也就是支持向量机和人工神经网络算法,主要是实现项目中的实时采集图片(工业高速摄像头采集)的图像识别的这一部分功能,虽然几经波折,但是还好最终还算顺利完成了项目的任务,忙碌一年,趁着放假有时间好好

JSPatch实现原理详解&lt;二&gt;

本文转载至 http://blog.cnbang.net/tech/2855/ 距离上次写的<JSPatch实现原理详解>有一个月的时间,在这段时间里 JSPatch 在不断地完善和改进,代码已经有很多变化,有一些修改值得写一下,作为上一篇的补充. Special Struct 先说下 _objc_msgForward,在上一篇提到为了让替换的方法走 forwardInvocation,把它指向一个不存在的 IMP: class_getMethodImplementation(cls, @se