在段落中间浮动元素

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。开始使用 200 美元的免费积分!

假设您希望将图像(或任何其他元素)视觉上向左浮动到一段文本中。但就像……在段落的中间,而不是在顶部。这是可行的,但它肯定属于 CSS 技巧的范畴!

您可以做的一件事是将图像直接放在段落的中间

<p>
  Lorem ipsum dolor sit amet consectetur, adipisicing 
  <img src="tree.jpg" alt="An oak tree." />
  elit. Similique quibusdam aliquam provident suscipit 
  corporis minima? Voluptatem temporibus nulla
</p>

但这非常尴尬。请注意 alt 文本。我们不能在句子的中间使用随机的 alt 文本。从语义上讲,它很糟糕,并且对于使用辅助技术的使用者来说,它确实令人困惑。

所以我们必须做的就是将图像放在段落之前。

<img src="tree.jpg" alt="An oak tree." />

<p>
  Lorem ipsum dolor sit amet consectetur, adipisicing 
  elit. Similique quibusdam aliquam provident suscipit 
  corporis minima? Voluptatem temporibus nulla
</p>

但是当我们这样做时,我们并不完全是在将图像浮动到段落的中间。它就在顶部。没有 margin-top 或垂直平移或任何东西可以在这里拯救我们。margin 将只是扩展浮动区域的高度,而 translate 将会将图像推入文本中。

诀窍,至少我发现的一个诀窍,是利用 shape-outsidepolygon() 来重新塑造围绕您想要放置位置的浮动区域。您可以跳过左上角部分。使用 Clippy 是开始使用 多边形 的一个好方法

但不要使用 Clippy 默认提供的 clip-path,而是将该值应用于 shape-outside

如果您只是将一个框放置在该位置,这应该就足够了。但是,如果它实际上是一个图像或需要背景颜色,您可能也需要应用 clip-path,并可能将内容转换到位。这就是我通过一些调整最终得到的结果。

查看 CodePen 上的示例
段落中间的浮动剪裁。
,作者为 Chris Coyier (@chriscoyier)
CodePen 上。