JSON in CSS

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Jonathan Neal hat kürzlich einen verblüffenden kleinen CSS-Trick getwittert, bei dem JSON in CSS eingefügt und mit JavaScript ausgelesen wird. Gültige Werte für benutzerdefinierte Eigenschaften sind ziemlich liberal! Dies sucht nach einer CSS-Regel (z. B. einem ganzen Block, wie #x { y: z; }, dessen cssText mit -- beginnt (was kein gültiger Selektor ist, aber wen kümmert's – Sie könnten ihn ändern, wenn Sie wollen, in thisIsJson oder etwas Ähnliches) und schneidet dann einen String aus, mit dem JSON.parse() funktioniert.

Ich habe sein Beispiel hier abgetippt

Ist das nützlich?

NUN.

Wahrscheinlich nicht, so im täglichen Gebrauch. Aber denken Sie daran, dass JSONP immer noch existiert, weil CORS existiert. Etwas JSON in CSS zu packen, wäre meiner Meinung nach eine weitere Möglichkeit, CORS zu umgehen. Ich bezweifle, dass es sich durchsetzen wird, aber es ist möglich. Erinnern Sie sich, vor nicht allzu langer Zeit sprachen wir darüber, CSS als API für Literaldaten zu verwenden. Eine weitere fragwürdige Idee. ;)

Ich denke, "seltsame Dinge in benutzerdefinierte Eigenschaften einfügen" ist das neue "seltsame Dinge in CSS-Inhalt einfügen".

Zum Beispiel, Sie wissen, wie es Media Queries in JavaScript gibt, à la matchMedia? Und natürlich gibt es auch Media Queries in CSS. Es gab eine Zeit (und ich bin mir nicht sicher, ob sie vorbei ist), da schien es eine gute Idee zu sein, diese Media Queries nur einmal zu definieren, damit wir Media Queries nicht an mehreren Stellen pflegen müssten. Um sie "synchron" zu halten, war eine Idee, sie in CSS zu definieren und sie den Wert eines bestimmten CSS-content ändern zu lassen (z. B. @media (max-width: 500px) { body::after { content: "max500"; display: none; } }), und dann buchstäblich zu beobachten, wie sich dieser content mit JavaScript ändert – und Sie wüssten, dass diese Media Query aktiv ist. Wirklich! Kein Scherz!

Und wo wir gerade von JSON in CSS sprechen, Sie können auch direkt JavaScript hineinpacken. Das ist nicht so clever wie Jonathans Extraktion, weil es einfach nur den Wert ausliest und ihn evaluiert.

Caleb Williams hat einen Web Worker mit CSS erstellt.