Разъяснения относительно правильности использования data-URI в CSS url () - PullRequest
3 голосов
/ 16 апреля 2020

Я пишу компонент предварительной обработки (в PHP), который в определенных контекстах перезаписывает запросы файлов внешнего изображения в CSS, например:

background-image: url('/my-folder/my-image.png');

как CSS - встроенный URI данных , например:

background-image: url('data:image/png;base64,[Base-64 Encoding Here]');

Я только что (с некоторым удивлением) прочитал на MDN :

В CSS Уровень 1 , функциональная запись url() описывает только истинные URL. В CSS Level 2 определение url() было расширено для описания любого URI, такого как data-uri. CSS Значения и единицы Уровень 3 возвращается к более узкому первоначальному определению. Теперь url() обозначает только истину <url> с.

Источник: https://developer.mozilla.org/en-US/docs/Web/CSS/url ()

Действительно? Казалось бы, можно предположить, что Data-URI составляют недопустимое значение для url() в CSS Таблица стилей (?)

Но я ничего не могу найти в:

, подтверждающий это.

У меня сложилось впечатление, что Data-URI является полностью допустимое значение для url() в CSS таблицах стилей.

Может кто-нибудь уточнить (в идеале с авторитетной ссылкой), пожалуйста?


NB Тег ниже гласит w3c-validation - я понимаю, что, вероятно, следует читать what-wg-validation.

1 Ответ

3 голосов
/ 17 апреля 2020

data: URI на самом деле являются действительными URL-адресами согласно RF C 2397 , не волнуйтесь, они по-прежнему разрешены.

Не уверен, что эта статья MDN пыталась подразумевать, когда она говорит "например, data-uri" , но я действительно отредактировал ее до URN, поскольку на самом деле что произошло в CSS 2 :

Спецификации действительно расширили нотацию на все URI, позволив унифицированным именам ресурсов также быть частью этого ... Я не могу сказать, почему они сделали это изменение, но это кажется очень странным, если не сказать больше, поскольку я не понимаю, как URN может быть полезным в таблице стилей ... Согласно формулировке спецификаций, кажется, что ее авторы еще не совсем знал, что это будет.

URL (унифицированные указатели ресурсов, см. [RFC1738] и [RFC1808]) предоставляют адрес ресурса в Интернете. Ожидаемый новый способ идентификации ресурсов называется URN (Uniform Resource Name). Вместе они называются URI (универсальные идентификаторы ресурсов, см. [URI]). В этой спецификации используется термин URI.


Ps: спецификации определяют его как "data: URLs" из API выборки .

...