我见过div个标记使用clearfix类,而它的子类divs使用float属性.clearfix类如下所示:

.clearfix:after {
    clear: both;
    content: ".";
    display: block;
    height: 0;
    visibility: hidden;
}
.clearfix {
    display: inline-block;
}
.clearfix {
    display: block;
}

我发现,如果我在使用bottom-border属性时不使用clearfix,那么边框将显示在子divs的上方.有人能解释一下clearfix类是做什么的吗?另外,为什么会有两处display处房产呢?这对我来说似乎很奇怪.我特别好奇content:'.'是什么意思.

谢谢,G

推荐答案

How floats work

当页面上存在浮动元素时,非浮动元素wrap around为浮动元素,类似于文本如何围绕报纸中的图片.从文档的Angular (HTML的original purpose)来看,这就是浮动的工作方式.

float vs display:inline

display:inline-block发明之前,网站使用float来将元素放在一起.floatdisplay:inline更好,因为使用display:inline,您不能设置元素的尺寸(宽度和高度)以及垂直填充(顶部和底部)-这是浮动元素可以做的,因为它们被视为挡路元素.

Float problems

主要问题是我们使用了float,这违背了它的预期目的.

另一个是,虽然float%允许并排使用挡路级别的元素,但floats do not impart shape to its container%.它类似于position:absolute,其中元素被"从布局中移除".例如,当一个空的容器包含一个浮动的floatpx x floatpx <div>时,<div>将不会赋予该容器floatpx的高度.

position:absolute不同的是,它会影响其周围的内容.浮动元素之后的内容将"环绕"该元素.它首先在它旁边渲染,然后在它下面渲染,就像报纸文本如何围绕图像流动一样.

Clearfix to the rescue

clearfix所做的是强制内容在浮点之后或包含浮点的容器渲染到其下方.Clear-fix有很多版本,但它的名字来源于常用的版本-使用CSS属性clear的版本.

Examples

Here are several ways to do clearfix,具体取决于浏览器和用例.你只需要知道如何在CSS中使用clear属性,以及浮动如何在每个浏览器中渲染,就可以实现完美的跨浏览器清晰修复.

What you have

您提供的样式是一种具有向后兼容性的清晰修复形式.大约I found an article美元,这是一个清晰的解决方案.事实证明,这是一个旧的清晰修复-仍然迎合旧的浏览器.在这篇文章中也有一个更新、更干净的版本.以下是细目:

  • 第一个clearfix在目标元素和下一个元素之间附加了一个不可见的伪元素,样式为clear:both.这将强制伪元素在目标下方渲染,并强制下一个元素在伪元素下方渲染.

  • 第二个附加了早期浏览器不支持的样式display:inline-block.内联-挡路类似于内联,但提供了一些挡路元素的属性,比如宽度、高度和垂直填充.这是针对IE-MAC的.

  • 由于上面的IE-MAC规则,这是display:block的重新apply.此规则对IE-MAC"隐藏".

总而言之,这3条规则让.clearfix个可以跨浏览器工作的人牢记旧浏览器.

Css相关问答推荐

如何将bslib::card()中的扩展按钮移到右上方,其中full_screen = TRUE?

当鼠标悬停在元素的::第一行时,如何应用样式?

Mat-Form-字段占用更多区域,导致其他控件远离它

如何通过重复的网格区域来简化网格布局?

Angular Material - 将 matsnackbar 置于所有对话框之上

带插值的 Sass 数学函数

悬停时如何更改 navbarPage 链接的文本 colored颜色 (在shiny 的应用程序中)?

CSS 仅过渡背景 colored颜色

如何在 TypeScript 文件中导入 CSS 模块?

包含tailwind 中固定纵横比框的内容

不能在带有 SCSS 的过滤器灰度内使用 CSS 变量

如何使用rvest中的 node 和类提取网页数据

如何在每一行周围放置不同大小的阴影?

当我在几个月之间更改时,有什么方法可以在react-dates-range上添加淡入淡出或幻灯片效果?

Bootstrap:在列之间添加边距/填充空间

最大宽度与最小宽度

如何强制显示垂直滚动条?

使用 CSS 垂直居中旋转文本

如何知道哪个 HTML 元素导致了垂直滚动条

在 CSS 中使用多个 @font-face 规则