CSS 中的 JSON

Avatar of Chris Coyier
Chris Coyier

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

Jonathan Neal 在几天前发布了一个非常棒的 CSS 技巧,将 JSON 放入 CSS 中,并用 JavaScript 提取它。 自定义属性的有效值 非常宽松!因此,这会查找 CSS 规则(例如,一个完整的块,如 #x { y: z; },其中 cssText-- 开头(这不是一个有效的选择器,但谁在乎呢——如果需要,您可以将其更改为 thisIsJson 或其他内容),然后切出一个 JSON.parse() 可以处理的字符串。

我在这里重新键入了他的示例

这有用吗?

嗯。

可能不是,比如,每天都会使用。但请记住,JSONP 仍然存在,因为 CORS 也存在。我认为将一些 JSON 放入 CSS 中是绕过 CORS 的另一种方式。我有点怀疑它会流行起来,但这是可能的。还记得不久前我们还在讨论 使用 CSS 作为字面数据的 API 吗?另一个值得怀疑的想法。;)

我认为“在自定义属性中放置奇怪的东西”是新的“在 CSS 内容中放置奇怪的东西”。

例如,您知道 JavaScript 中有媒体查询,类似于 matchMedia 吗?当然,CSS 中也有媒体查询。曾经有一段时间(我不确定它是否已经过去),在多个地方只定义一次这些媒体查询感觉像是一个好主意,因此我们不会在多个地方维护媒体查询。为了使它们“保持同步”,一个想法是在 CSS 中定义它们,并让它们交换一些 CSS content 的值(例如 @media (max-width: 500px) { body::after { content: "max500"; display: none; } }),然后用 JavaScript 观察 content 的变化——您就会知道该媒体查询处于活动状态。 真的! 不是开玩笑!

说到 CSS 中的 JSON,您也可以直接在其中放入 JavaScript。这不像 Jonathan 的提取那样聪明,因为它只是提取值并对其进行 eval 操作。

Caleb Williams 用 CSS 创建了一个 Web Worker