浮动

定义

一个浮动盒会向左或右移动,直到其外边(outer edge)挨到包含块级沿或者另一个浮动盒的外边。如果存在行盒,浮动盒的外top(边)会与当前行盒的top(边)对齐 如果没有足够的水平空间来浮动,它会向下浮动,直到空间适合或者不会再出现其他浮动了
因为浮动(盒)不在普通流内,在浮动盒之前或者之后创建的未定位的(non-positioned)块盒会竖直排列,就像浮动不存在一样。然而,接着(next to)浮动(盒)创建的当前及后续行盒会进行必要的缩短,为了给浮动(盒)的margin box让出空间。

脱离普通流

普通流是什么?
代码
浮动元素意义上不是真正的脱离文档流,和absolute不一样。

两个特性:

  1. 块级元素设置浮动宽度可以收缩
  2. 行内元素设置浮动,拥有块级的特性,可以设置margin,padding.

浮动的使用场景

  1. 两栏布局
    左侧固定宽度,右侧自适应
    代码
    右侧固定宽度,左侧自适应
    代码

  2. 三栏布局
    两侧宽度固定,中间自适应宽度

    image.png

    注意:顺序问题

通过浮动实现导航条

1.左浮动导航条
代码
2.右浮动导航条
代码

浮动的副作用:

  1. 对后续元素位置产生影响
    代码

  2. 父容器高度计算出现问题
    代码

总结:如果一个元素里只有浮动元素,那它的高度会是0。如果你想要它自适应即包含所有浮动元素,那你需要清除它的子元素。一种方法叫做clearfix ,即clear一个不浮动的 ::after 伪元素

#container::after { 
  content: "";
  display: block; 
  clear: both;
}

代码

清除浮动

clear既可以用于浮动又可以用于非浮动

当应用于非浮动块时,它将非浮动块的边框边界移动到所有相关浮动元素外边界的下方,这个非浮动块的垂直外边距会折叠。
当应用于浮动元素时,它将元素的外边界移动到所有相关的浮动元素外边框边界的下方。
这会影响后面浮动元素的布局,后面的浮动元素的位置无法高于它之前的元素。(参考mdn)

  1. clear:left;要求该盒的top border边位于源文档在此之前的元素形成的所有左浮动盒的bottom外边下方
    代码

  2. clear:right;要求该盒的top border边位于源文档中在此之前的元素形成的所有右浮动盒的bottom外边下方
    代码

浮动和负边距
两个浮动元素,如果因放不下导致其中一个下移,对下移的元素设置负margin值大于自身的宽度可以其上移。
代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!)(注2:更多内容请查看我的目录。) ...
    love丁酥酥阅读 3,746评论 0 4
  • 主要内容: 浮动的介绍、清除浮动、各种定位、BFC以及外边距合并的介绍。 浮动 什么是浮动元素 浮动元素是floa...
    苦瓜_6阅读 3,738评论 0 0
  • 自我总结: 浮动是实现布局的一种常见方式 浮动脱离普通文档流,即页面渲染时,盒模型按标准会将父元素所设置的属性将页...
    饥人谷_远方阅读 3,203评论 0 0
  • 浮动 CSS允许浮动任何元素。 浮动元素 首先,会以某种方式将浮动元素从文档的正常流中删除,不过它还是会影响布局。...
    exialym阅读 5,000评论 0 6
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 4,599评论 0 2

友情链接更多精彩内容