容器查询:重返战场

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 提供适合您旅程各个阶段的云产品。 立即开始使用 $200 免费信用额度!

我想,计划是停止使用“元素查询”,并开始思考和将它们称为“容器查询”。 我们一直在 关注这个故事 一段时间了。 元素查询有一个严重的缺陷:无限循环。

.our-element:media(min-width: 500px) {
  width: 499px;
}

正如响应式问题社区组成员 Mat Marquis 所说

好吧,由于查询不再匹配,因此不再应用新宽度。 由于从未应用过新宽度,因此元素查询将再次匹配,因此将应用新宽度,因此查询将不再匹配,因此不会应用新宽度,依此类推,无限循环。 我们仅仅用几行 CSS 就实现了 TARDIS 级别的悖论,而且浏览器没有可预测的方式来处理它。

Jon Neal 实际上有一些关于 浏览器如何处理这个问题 的想法

无限循环将在出错的块处冻结。 虽然无限循环更有可能发生在元素媒体查询中,但这个问题自 :hover 以来就一直存在。 因此,一个明确的规范将是双倍有用的。

但唉,也许将查询强制到父元素上会有所帮助

… 我们需要重新构建我们谈论潜在解决方案的方式。 由于解决方案不能允许元素自行重新设置样式,因此我们可以将此约束构建到规范中:附加到元素的查询只能影响该元素的子元素的样式。

我认为它并没有完全解决无限循环问题,但以某种方式更容易处理?

直接链接 →