实用的 Flexbox 技术:对齐方式切换换行

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 提供适用于旅程各个阶段的云产品。立即开始使用 价值 200 美元的免费积分!

我最近遇到一个情况,标题被分成两个部分。主标题很大且加粗,像任何常规标题一样左对齐。但然后有一个副标题,右对齐,与主标题位于同一行。当有足够的空间时,这样很不错。但当然,文本总是在变化,您可用的空间也是可变的。让我们来看看。

当有足够空间时,这就是我们想要的效果

如果基于屏幕尺寸或长度问题没有足够空间,我们希望左对齐换行

当有空间时,有许多方法可以将右对齐的文本放置在右侧。

  • 我们可以将其绝对定位到右侧。但是,这样做的主要问题是,绝对定位的元素不在文档流中,因此它无法智能地决定何时相对于其他文本换行。在这种情况下,我们将不得不指定一些我们不希望使用的固定宽度。
  • 我们可以将其浮动到右侧。我们不需要设置宽度,文本仍然在文档流中,这很棒。但是,一旦需要换行,文本将保持紧贴右侧,不会像我们想要的那样整齐地左对齐。
  • 我们可以将其制作成表格,这样我们就可以毫无困难地将文本放置在右侧边缘。但表格单元格根本不会换行,因此我们无法获得我们想要的布局。

幸运的是,Flexbox 可以帮助我们!通过将标题设置为 flex 容器并使用display: flex;,并将标题本身设置为flex-grow: 1;,它可以将副标题推到最右侧。Flex 容器可以换行,因此我们将确保通过flex-wrap: wrap;进行换行。

这是一个视频,展示了所有不太好的方法以及 Flexbox 的获胜方法

还有一个实时演示

查看 CodePen 上 Chris Coyier 的示例 同一行标题的换行 (@chriscoyier) on CodePen.