试一试
float: none;
float: left;
float: right;
float: inline-start;
float: inline-end;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">Float me</div>
As much mud in the streets as if the waters had but newly retired from the
face of the earth, and it would not be wonderful to meet a Megalosaurus,
forty feet long or so, waddling like an elephantine lizard up Holborn Hill.
</div>
</section>
.example-container {
border: 1px solid #c5c5c5;
padding: 0.75em;
text-align: left;
width: 80%;
line-height: normal;
}
#example-element {
border: solid 10px #efac09;
background-color: #040d46;
color: white;
padding: 1em;
width: 40%;
}
浮动元素是指 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”)。
语法
/* 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-
元素必须浮动在其包含块的左侧。
right-
元素必须浮动在其包含块的右侧。
none-
元素不得浮动。
inline-start-
元素必须浮动在其包含块的起始侧。对于
ltr脚本是左侧,对于rtl脚本是右侧。 inline-end-
元素必须浮动在其包含块的结束侧。对于
ltr脚本是右侧,对于rtl脚本是左侧。
正式定义
正式语法
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
<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
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 # propdef-float |
| CSS 逻辑属性和值第 1 级 # float-clear |
浏览器兼容性
加载中…