好的,我会增加一些更详细的说明。
在 web 开发的过程中,"浮动" 是 CSS 中可以使元素向左或向右移动,直到他们碰到其父元素边缘或者另一个浮动元素的属性。虽然它很有用,但是如果不正确地处理,它可能会导致一些意想不到的页面布局问题。
**清除浮动的方法**:
1. **使用 clear 属性**:
HTML 元素的 `clear` 属性可以停止元素被前面的浮动元素影响。你可以给这个属性设置为 `left`、`right`、`none` 或者 `both`。 对应的含义是,停止被左边、右边、不停止或者任意一边的浮动元素影响。
```html
<div style="float: left;">I'm a float</div>
<div style="clear: both;">I'm not affected by the float</div>
```
这个也可以在父元素上添加
.clearfix::after {
content: ""; /*创建一个空的内容*/
display:block; /*让它有布局,这样就可以对它应用 clear 属性*/
clear: both; /*清除浮动*/
}
2. **使用伪元素来清除浮动**:
这也叫做 "clearfix hack",是一种流行且广泛使用的方法。
```css
.clearfix::after {
content: ""; /*创建一个空的内容*/
display: table; /*让它有布局,这样就可以对它应用 clear 属性*/
clear: both; /*清除浮动*/
}
```
然后将这个类添加到需要清除浮动的元素上:
```html
<div class="clearfix">
<div style="float: left;">I'm a float</div>
</div>
```
3. **使用 overflow 属性**:
给包含浮动元素的父元素设置 `overflow` 属性为 `auto` 或 `hidden` 可以清除浮动。这是因为当你改变了元素的 `overflow` 属性,浏览器会创建一个新的块格式化上下文(BFC),这个新的 BFC 是不会受到外面元素的影响。
```css
.parent {
overflow: auto;
}
```
然后将这个类添加到需要清除浮动的元素上:
```html
<div class="parent">
<div style="float: left;">I'm a float</div>
</div>
```
每种方法都有自己的适用场合。比如使用 `clear` 属性需要添加额外的元素,在 HTML 结构较复杂的时候可能会引入问题;使用 clearfix hack 或者 overflow 属性不需要添加额外元素,但是他们对于某些特殊的 CSS 属性,如可见性和外边距,可能会有一些不期望的副作用。因此在实际应用中,需要根据具体情况选择合适的方法。
标签:浮动,清除,clear,元素,overflow,css,属性 From: https://www.cnblogs.com/coodeshark/p/18029850