媒体对象,多种实现方式

Avatar of Chris Coyier
Chris Coyier

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

媒体对象模式是:左侧为图像元素,右侧为标题和文本。

这就是 Nicole Sullivan 所称,并且 名称沿用至今。这是一个非常简单的模式,但就像所有网页设计一样,它可以有多种实现方式。

Bootstrap 的版本,在 v3 中使用表格布局,在 v4 中使用 flexbox。

让我们尝试一下很多方法。在这些演示中,我并没有特别关注命名约定、语义或浏览器支持。只是可能性。

使用浮动

当然,我们可以将图像浮动到左侧!

查看 CodePen 上 Chris Coyier 的示例 媒体块 #1 (@chriscoyier) 。

但是仅仅浮动会导致文本换行。换行可能是完全可以的,或者你可能不希望它发生。

我想说,在典型的媒体对象模式中,没有换行。

为了解决这个问题,我们可以确保所有文本都包装在一个元素中,然后确保该元素的左侧填充等于图像的宽度以及它们之间的任何空白。

查看 CodePen 上 Chris Coyier 的示例 媒体块 #2 (@chriscoyier) 。

或者,你可以两侧都浮动

查看 CodePen 上 Chris Coyier 的示例 媒体块 #3 (@chriscoyier) 。

使用 Flexbox

Flexbox 使其变得非常简单!

查看 CodePen 上 Chris Coyier 的示例 媒体块 #4 (@chriscoyier) 。

请注意,我们允许<img> 成为 flex 项目。我们使用align-items: flex-start; 来确保它不会拉伸到与文本相同的高度。

使用表格

媒体对象可以是表格的一行两列。

查看 CodePen 上 Chris Coyier 的示例 媒体块 #5 (@chriscoyier) 。

如果要保留非<table> 标记,仍然可以通过display: table; 使其表现得像表格。

查看 CodePen 上 Chris Coyier 的示例 媒体块 #6 (@chriscoyier) 。

使用 Grid

网格布局允许我们定义一组列。非常容易设置第一列为我们想要的固定宽度,第二列占用剩余的空间。

查看 CodePen 上 Chris Coyier 的示例 媒体块 #7 (@chriscoyier) 。

与 flexbox 一样,我们可以通过使用align-self: start; 将图像对齐到顶部来避免图像自身拉伸。


我相信你们还能找到大约十几种方法来实现它!