CSS Float 浮动布局


前言

在页面开发的过程中,CSS 页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流、周边元素、父容器或者主视口/窗口的位置。
当前主要的布局方式有:浮动布局(Float)、定位布局(Position)、弹性布局(Flex)、网格布局(Grid)等,本文将从浮动布局开始学习。


一、Float 布局

把一个元素“浮动”(float)起来,会改变该元素本身和在正常布局流(normal flow)中跟随它的其他元素的行为。这一元素会浮动到左侧或右侧,并且从正常布局流(normal flow)中移除,这时候其他的周围内容就会在这个被设置浮动(float)的元素周围环绕。

当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。

在 css 中,我们可以通过定义 float 属性实现浮动布局。

二、属性值

属性值描述
left表明元素必须浮动在其所在的块容器左侧的关键字。
right表明元素必须浮动在其所在的块容器右侧的关键字。
none表明元素不进行浮动的关键字。
inline-start关键字,表明元素必须浮动在其所在块容器的开始一侧,在 ltr 脚本中是左侧,在 rtl 脚本中是右侧。
inline-end关键字,表明元素必须浮动在其所在块容器的结束一侧,在 ltr 脚本中是右侧,在 rtl 脚本中是左侧。

浏览器兼容情况:
canIUse-float

三、代码实现

  • 首先,定义一个父盒子,宽高分别是 500px*400px 的。
  • 然后,分别定义三个子盒子,宽高均为 100px*100px 的。
<!-- 基本结构 -->
<style>
  .father {
    width: 500px;
    height: 400px;
    background-color: #2c3e50;
  }
  .child {
    width: 100px;
    height: 100px;
    /* float: left; */ /* 左浮动 */
    /* float: right; */ /* 右浮动 */
  }
  .child1 {
    background-color: #1abc9c;
  }
  .child2 {
    background-color: #3498db;
  }
  .child3 {
    background-color: #9b59b6;
  }
</style>
<body>
  <div class="father">
    <div class="child child1">child1</div>
    <div class="child child2">child2</div>
    <div class="child child3">child3</div>
  </div>
</body>

效果图

当给 child 选择器设置 float:left 属性的时候,child 盒子脱离文档流,实现左侧浮动。
左浮动效果图

clear 清除浮动

与 float 属性有一个相对的属性:clear 属性。其的作用主要是为当前标签清除浮动所带来的影响。

案例继续:

  • 在上述原有的代码上,给父盒子添加一个 p 标签,并设置文本。
<div class="father">
  <div class="child child1">child1</div>
  <div class="child child2">child2</div>
  <div class="child child3">child3</div>
  <!-- 测试文本 -->
  <p class="text-style">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi quo, tempora ipsa excepturi culpa quis possimus
    nisi, sed at hic assumenda. Quaerat possimus voluptas veritatis laboriosam minus inventore tempore similique!
  </p>
</div>

清除浮动前效果图

不难看出,即便 p 标签没有设置浮动属性,但是依然受前面 child 盒子的影响,这个时候我们可以为 p 标签添加 clear 清除浮动属性,即可不跟着换行。

<style>
  .text-style {
    clear: left;
  }
</style>

清除浮动效果图

clear 属性值

属性值描述
left在左侧不允许浮动元素
right在右侧不允许浮动元素
both在左右两侧均不允许浮动元素
inherit规定应该从父元素中继承 clear 属性值
none默认值。允许浮动元素出现在两侧

三、Float 设计初衷与不足

float 设计的初衷其实并不是用来布局的,其本意仅仅是实现图片文字环绕效果,即图片左浮动,文字环绕图片。(如上面添加 p 标签后的效果)

不足

在 float 快速实现分栏布局的背景下,常常会导致父盒子高度坍塌、浮动盒子与非浮动盒子重叠等问题,对此感兴趣的小伙伴,可以查阅曾经分享过的文章:浮动清除的四大主要方式


总结

以上便是今天所介绍的 float 全部内容,分别从实现浮动布局和如何简单清除浮动效果介绍。希望本文能够对你有所帮助。


最后,如果您有更好的方法,欢迎在留言区中分享;或者实际操作中遇到什么问题均可留言或者私信我,感谢您的观看!
参考文献:
MDN Web Docs - float
深入理解 css 之 float

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俊小赞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值