css浮动是什么意思?css浮动的原理以及css清除浮动的方法(附代码)

css浮动是什么意思?所谓css浮动就是浮动元素会脱离文档的普通流,根据float的值向左或向右移动,直到它的外边界碰到父元素的内边界或另一个浮动元素的外边界为止。由于浮动框不在文档的普通流中,所以文档的普通流中的块级元素表现得就像浮动元素不存在一样。接下来,本文讲给大家说一说css浮动的原理以及css清除浮动的方法。

浮动影响

浮动元素会造成父元素塌陷

当给元素设置float之后,元素脱离文档流,父元素没有设置height,造成塌陷。

.super{ border:1px solid red;}.sub{ float: left; background: green; border: 1px solid yellow; width: 100px; height: 100px;}

2345截图20180807163309.png

立即学习“前端免费学习笔记(深入)”;

浮动元素的左(右)外边界不能超出其父元素的左(右)内边界。

在不设置margin为负值和父元素还有剩余空间的情况下,浮动元素的外边界(margin)不会超出父元素的内边界(padding)。

.super{ margin: 0 auto; padding: 10px; border:1px solid yellow; width: 300px;}.super:after{ clear: both; content: ''; display: block;}.sub1{ float: left; background: pink; border: 1px solid green; width: 100px; height: 100px;}.sub2{ float: right; background: pink; border: 1px solid green; width: 100px; height: 100px;}

2345截图20180807163604.png

浮动元素不会重叠。

这个也是在margin不会为负值和父元素还有剩余空间的条件下适用的。
这个是我对《CSS权威指南》中浮动这一章节中规则二和规则三的理解,以下是原文。

2、The left (or right) outer edge of a floated element must be to the right (or left) of the right (left) outer edge of a left-floating (or right-floating) element that occurs earlier in the document’s source, unless the top of the later element is below the bottom of the former.

有道翻译:

2、浮动元素的左(或右)外缘必须位于右(左)的右(左)左侧浮动(或右浮动)元素的外边缘,该元素在文档的源代码中较早出现,除非后面的元素的顶部在下面

3.The right outer edge of a left-floating element may not be to the right of the left outer edge of any right-floating element to its right. The left outer edge of a right- floating element may not be to the left of the right outer edge of any left-floating element to its left.

有道翻译:

3、左浮动元素的右外缘可能不是右浮动元素的左外边缘的右侧。一个右浮动元素的左外边缘可能不在左边任何左浮动元素的右外缘的左边。

这两个规则是保证两个浮动元素不重叠的基础。

表现为当一个浮动元素往左(右)靠的时候,在这个元素左(右)边已经存在一个浮动元素,他们不会重叠,后来者紧挨着先来者排列。如果浮动元素们的总宽度已经超过父元素的宽度,浮动元素之间也不会重叠,依照HTML结构的顺序,从在一行排列不下的浮动元素开始会移动到下一行。

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
float:left
float:right
.super { float: left; margin: 10px; padding: 10px; border: 1px solid blue; width: 300px;}.super1 .sub1{ float: left; background: pink; border: 1px solid red; width: 100px; height: 100px;}.super1 .sub2{ float: left; background: pink; border: 1px solid red; width: 100px; height: 100px;}.super2 .sub1{ float: left; background: pink; border: 1px solid red; width: 200px; height: 100px;}.super2 .sub2{ float: right; background: pink; border: 1px solid red; width: 200px; height: 100px;}

效果如下:

2345截图20180807164125.png

浮动元素的顶端不能比其父元素的内顶端更高,不能比之前出现的浮动元素顶端高。

这个规则也是在margin-top不为负值的情况下成立。

父元素的顶端会限制浮动元素,防止一直浮动到页面顶端。
对于下图右边的例子,sub2在sub1下面,sub1右边的空间已经不足以容纳sub2,但是足够容纳sub3,而sub3没有上浮,那是因为他的的顶端就不能超过sub2的顶端,这个例子足以印证浮动元素的顶端不能比之前出现的浮动元素顶端高。

sub1
sub2
sub3
.super { float: left; margin: 10px; padding: 10px; border: 1px solid blue; width: 320px;}.sub { background: pink; border: 1px solid red; height: 100px;}.sub0 { float: left; width: 100px;}.sub1 { float: left; width: 200px;}.sub2 { float: left; width: 150px;}.sub3{ float: right; width: 50px;}

效果如下:

2345截图20180807164252.png

清除浮动

清除浮动的目的是为了解决高度塌陷的问题,撑开浮动父元素。常用的一般有几种方法:

增加一个样式为clear:both的空标签

把上面这句标签放到浮动元素的父元素的最后。

原理:clear会在元素的margin-top之上增加一个清除区域(clearance),这个区域会在元素的margin-top上增加额外间隔,并且不允许浮动元素进入这个区域。

优点:方便,兼容性强。

缺点:多出许多无意义的标签,增加维护成本,而且稍不注意中间多了个空格会产生一段空白高度。

父元素设置浮动

优点:简单,代码少,浏览器支持好。
缺点:父级使用浮动之后,浮动造成的影响仍旧存在,并且不可能父级往上一级级都使用浮动。

使用overflow、zoom属性

.fix{    overflow:hidden(auto、scroll);     zoom:1;}

优点:代码简洁,兼容性好,不产生多余标签。

缺点:设置该fix类的标签的内容超出该标签的时候会被隐藏(或产生滚动条)。

父元素设置浮动

优点:简单,代码少,浏览器支持好。
缺点:父级使用浮动之后,浮动造成的影响仍旧存在,并且不可能父级往上一级级都使用浮动。

父元素设置position

原理:在position的值不为relativestatic的情况下,会形成BFC。

这种方式在父元素原本就需要设置positionfixed或者absolute的时候可以优先采用。

优点:简单,代码少,浏览器支持好。
缺点:改变父元素布局,影响整体布局。

使用:after

.fix:after{    display:block;     content:'';     clear:both; }

原理类似添加新的标签然后设置clear:both;,但使用伪类的方法没有多余标签。

优点:代码简洁,兼容性好,不产生多余标签。

以上方法中,第一种增加一个样式为clear:both的空标签的方法不建议使用,会增加无意义标签,其他设置父元素浮动,改变父元素position、overflow的方法依情况而定,如果父元素本身就有这方面的样式需求,那很合适,如果没有的话还是采用最后一种伪元素的:after的方式最为常见。

相关文章推荐:

CSS清除浮动_清除float浮动_html/css_WEB-ITnose

Css3之基础-8 Css 浮动(定位,浮动定位)_html/css_WEB-ITnose

CSS中Float(浮动)相关技巧文章_经验交流

CSS里怎么清除浮动

以上就是css浮动是什么意思?css浮动的原理以及css清除浮动的方法(附代码)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:53:50
下一篇 2025年12月24日 01:54:08

相关推荐

  • css属性:css伪类和css伪元素的区别(附代码)

    css伪元素和伪类对于刚学习css的同学来说可能会容易混淆,官方文档中解释:css 伪类用于向某些选择器添加特殊的效果,css 伪元素是用于将特殊的效果添加到某些选择器。那么,css伪元素和伪类的区别究竟在哪?本文将给大家细细的说道说道。 首先可以明确两点,第一:两者都与选择器相关,第二:就是添加一…

    好文分享 2025年12月24日
    000
  • 如何使用CSS实现圆点移动的动图效果

    这篇文章给大家分享的内容是关于如何使用css实现圆点移动的动图效果,有一定的参考价值,有需要的朋友可以从参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 dom,容器中包含…

    2025年12月24日
    000
  • CSS 网格布局(Grid)的两种方式介绍(附代码)

    css 网格布局(grid)能够将网页分成具有简单属性的行和列,可以直接使用 css 来定位和调整网格内的每个元素,也不需要为了实现某种布局进行多层嵌套,总而言之,css网格布局非常好用,下面我们就来看一看这篇文章给大家讲述的css网格布局的内容。 1、CSS 网格布局(Grid) CSS Grid…

    好文分享 2025年12月24日
    000
  • css布局中格式化上下文(FC)类型有哪些?格式化上下文(FC)的类型介绍

    什么是格式化上下文(fc)?格式化上下文(formatting context),指页面中一个渲染区域,拥有一套渲染规则,它决定了其子元素如何定位,以及与其他元素的相互关系和作用,那么css布局中格式化上下文有哪些呢?下面这篇文章给大家介绍了几种格式化上下文的类型。 块级格式上下文(BFC): 什么…

    好文分享 2025年12月24日
    000
  • 浅析CSS边框属性:宽度&样式&边框等

    这篇文章给大家介绍的内容是关于浅析css边框属性:宽度&样式&边框等,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 定义和用法 围绕元素内容和内边距的一条或多条线。 基本属性:宽度、样式、颜色 宽度 border-width 立即学习“前端免费学习笔记(深入)”; …

    好文分享 2025年12月24日
    000
  • CSS背景属性有哪些?css背景属性的总结(附代码)

    css背景属性是用于定义html元素背景的,那么,css背景属性有哪些呢?像是css背景颜色属性,css图片背景属性都属于css背景属性,本文将给大家总结一下css背景属性中相关的属性。 首先,我们来看一下css相关的属性: background-color: css设置背景颜色 backgroun…

    好文分享 2025年12月24日
    000
  • css3中新增属性:css3多列布局属性的总结(附实例)

    css3中增加了多列布局的属性,什么是多列布局呢?所谓多列布局,就是创建多个列来对文本进行布局,像是报纸的排版差不多,那么,在本文中我们就来看一看多列布局中的一些相关属性及代码实例。 css3多列布局容器的属性: column-width: auto | :给列定义一个最小宽度(min-width)…

    2025年12月24日
    000
  • 多列布局的概念是什么?CSS多列布局的应用(实例代码)

    这篇文章给大家介绍的内容是关于多列布局的概念是什么?css多列布局的应用(实例代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 多列布局 CSS3 可以将文本内容设计成像报纸一样的多列布局,如下实例: 代码如下(具体的解释也在代码中)浏览器支持表格中的数字表示支持该方法的第一个…

    2025年12月24日 好文分享
    000
  • 如何实现单行文字向上滚动的效果(附代码)

    这篇文章给大家介绍的内容是关于如何实现单行文字向上滚动的效果(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 最近在做一个活动页,需要一个单行文字向上滚动的效果来展示获奖公告。 效果如下: 废话不多说,下面直接贴上代码。 html代码如下: @@##@@ {{item.ph…

    2025年12月24日
    000
  • 汇总css布局的发展史,就属第四代css布局技术最牛掰

    我也是在前端行业混过几年的老人了,css网页布局也变的丰富起来,致使我也在不断的学习进步,不然真的跟不上时代的潮流啊,当第四代css布局技术网格布局呈现在我眼前的时候,好似似曾相识呢,但是又很陌生,不得不重新学习,之前的每一个开发者的电脑上还都装着一个frontpage,就连dreamwaver8都…

    2025年12月24日 好文分享
    000
  • CSS中transform-origin属性是做什么的?transform-origin属性的作用

    这篇文章给大家介绍的内容是关于css中transform-origin属性是做什么的?transform-origin属性的作用,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助 最近做的一个烟花动画,就是烟花散开的动画,在动画的实现过程中,主要在烟花旋转过程中卡住了,后来发现主要对tr…

    2025年12月24日
    000
  • 关于弹性盒布局的介绍(附代码)

    这篇文章给大家介绍的内容是关于弹性盒布局的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 弹性布局 弹性布局,又称“Flex布局” 弹性布局的使用 给父容器添加display: flex/inline-flex;属性,即可使容器内容采用弹性布局显示,而不遵循常规文档流…

    2025年12月24日
    000
  • css中圣杯布局和双飞翼布局的介绍(附代码)

    这篇文章给大家介绍的内容是关于css中圣杯布局和双飞翼布局的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 圣杯布局 #header #center #left #right #footer 实现的效果主要在container中,left 和 rgith固定宽度,ce…

    2025年12月24日
    000
  • 如何解决移动端fixed元素不显示的问题

    这篇文章给大家介绍的内容是关于如何解决移动端fixed元素不显示的问题,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 上几周给公司app做了一个html5嵌套页面,页面并不复杂,展示内容较多,底部有footer html结构如下 .main{ position: absolute;…

    好文分享 2025年12月24日
    000
  • 如何用CSS和D3实现宇宙飞船的动态效果

    这篇文章给大家介绍的内容是关于如何用css和d3实现宇宙飞船的动态效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 代码解读 定义 dom,spacecraft 表示飞船,容器中包含 1 个表示尾冀的元素 fins: 居中显示: body { margin: 0; he…

    2025年12月24日
    000
  • 如何使用CSS实现变色旋转动画的动态效果

    这篇文章给大家介绍的内容是关于如何使用css实现变色旋转动画的动态效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 代码解读 定义 dom,容器中包含 9 个元素: 居中显示: body { margin: 0; height: 100vh; display: flex…

    2025年12月24日
    000
  • CSS样式有哪几种?css样式表的三种方式总结(附代码)

    css样式有哪几种类型?css 样式代码插入的形式来看基本可以分为以下三种:内联式、嵌入式和外部式三种,这三种样式是有优先级的,他们的优先级是:内联式 > 嵌入式 > 外部式,下面我们就来看看css三种样式类型的具体内容及代码。 注意:嵌入式>外部式有一个前提:嵌入式css样式的位…

    2025年12月24日
    000
  • css中单位的使用:选择px还是rem

    这篇文章给大家介绍的文章内容是关于css中单位的使用:选择px还是rem,有很好的参考价值,希望可以帮助到有需要的朋友。 css中的单位很多,%、px、em、rem,以及比较新的vw、vh等。每个单位都有特定的用途,比如当需要设置一个矩形的宽高比为16:9,并且随屏幕宽度自适应时,除了用%,其他单位…

    2025年12月24日
    000
  • 什么是CSS BEM命名规范?BEM命名规范的总结(详细)

    bem 是block(块)、element(元素)和modifier(修饰符)的简写,它是一个很好用的命名约定。能够让你的前端代码变得更加容易理解和严密,接下来我们就来看一看bem命名规范具体是怎样的。 1 什么是 BEM 命名规范 Bem 是块(block)、元素(element)、修饰符(mod…

    好文分享 2025年12月24日
    000
  • 浅析CSS中background背景的用法

    这篇文章给大家介绍的文章内容是关于浅析css中background背景的用法,有很好的参考价值,希望可以帮助到有需要的朋友。 定义和用法 基本属性:color, image, position, repeat 背景颜色 background-color 值为颜色值或transparent二者选其一,…

    好文分享 2025年12月24日
    000

发表回复

登录后才能评论
关注微信