float

float CSS 属性将元素放置在其容器的左侧或右侧,允许文本和内联元素环绕它。虽然元素从页面正常流中移除,但它仍然是流的一部分(与绝对定位相反)。

试一试

浮动元素是指其 float 属性的计算值为非 none 的元素。

由于 float 暗示使用块级布局,因此在某些情况下它会修改display值的计算值。

指定值 计算值
inline block
inline-block block
inline-table table
table-row block
table-row-group block
table-column block
table-column-group block
table-cell block
table-caption block
table-header-group block
table-footer-group block
inline-flex flex
inline-grid grid
其他 不变

注意:当通过 HTMLElement.style 对象在 JavaScript 中访问 CSS 属性时,单字属性名按原样使用。尽管 float 是 JavaScript 中的保留关键字,但在现代浏览器中,CSS float 属性以 float 的形式访问。在旧版浏览器中,必须使用 cssFloat 来访问 float 属性。(这类似于如何将“class”属性作为“className”访问,以及如何将 <label> 元素的“for”属性作为“htmlFor”访问。)

语法

css
/* Keyword values */
float: left;
float: right;
float: none;
float: inline-start;
float: inline-end;

/* Global values */
float: inherit;
float: initial;
float: revert;
float: revert-layer;
float: unset;

float 属性指定为单个关键字,从下面的值列表中选择。

left

元素必须浮在其包含块的左侧。

元素必须浮在其包含块的右侧。

none

元素不能浮动。

inline-start

元素必须浮在其包含块的起始侧。对于 ltr 脚本,这是左侧,对于 rtl 脚本,这是右侧。

inline-end

元素必须浮在其包含块的结束侧。对于 ltr 脚本,这是右侧,对于 rtl 脚本,这是左侧。

正式定义

初始值none
应用于所有元素,但如果 display 的值为 none,则无效。
继承
计算值如指定
动画类型离散

正式语法

float = 
block-start |
block-end |
inline-start |
inline-end |
snap-block |
<snap-block()> |
snap-inline |
<snap-inline()> |
left |
right |
top |
bottom |
none |
footnote

<snap-block()> =
snap-block( <length> , [ start | end | near ]? )

<snap-inline()> =
snap-inline( <length> , [ left | right | near ]? )

示例

浮动元素如何定位

如上所述,当元素浮动时,它会从文档的正常流中移除(但仍然是其中的一部分)。它会向左或向右移动,直到接触其包含框的边缘,或另一个浮动元素

在此示例中,有三个彩色正方形。两个浮动到左侧,一个浮动到右侧。请注意,第二个“左侧”正方形放置在第一个正方形的右侧。其他正方形将继续堆叠到右侧,直到它们填满包含框,然后它们将换行到下一行。

浮动元素至少与其最高的嵌套浮动子元素一样高。我们为父元素设置了 width: 100% 并将其浮动以确保它足够高以包含其浮动子元素,并确保它占用父元素的宽度,这样我们就不必清除其相邻同级元素。

HTML

html
<section>
  <div class="left">1</div>
  <div class="left">2</div>
  <div class="right">3</div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tristique
    sapien ac erat tincidunt, sit amet dignissim lectus vulputate. Donec id
    iaculis velit. Aliquam vel malesuada erat. Praesent non magna ac massa
    aliquet tincidunt vel in massa. Phasellus feugiat est vel leo finibus
    congue.
  </p>
</section>

CSS

css
section {
  box-sizing: border-box;
  border: 1px solid blue;
  width: 100%;
  float: left;
}

div {
  margin: 5px;
  width: 50px;
  height: 150px;
}

.left {
  float: left;
  background: pink;
}

.right {
  float: right;
  background: cyan;
}

结果

清除浮动

有时您可能希望强制某个项目移动到任何浮动元素下方。例如,您可能希望段落保持与浮动元素相邻,但强制标题位于其自己的行上。有关示例,请参阅 clear

规范

规范
层叠样式表级别 2 修订版 2 (CSS 2.2) 规范
# propdef-float
CSS 逻辑属性和值级别 1
# float-clear

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅