Действительны ли URI данных без кавычек в CSS?

#something {
    background: url(data:image/png;base64,ABCDEF);
}

Этот фрагмент работает во всех браузерах, которые поддерживают URI данных (очевидно, с чем-то другим, кроме ABCDEF).

Кроме того, он действителен согласно спецификации CSS 2.1:

... необязательный символ одинарной кавычки (') или двойной кавычки ("), за которым следует сам URI ...

Но валидатор не примет его без кавычек:

Ошибка значения: фоновый URL-адрес (данные: image / png; base64, ABCDEF) является неправильным URL-адресом

Если вы заключите URI в одинарные или двойные кавычки, он будет подтвержден.

Я что-то упускаю? Это ошибка валидатора? ИЗМЕНИТЬ: было!


person MM.    schedule 18.03.2013    source источник
comment
Вам следует обновить свой вопрос: это была ошибка в валидаторе, которая теперь исправлена. Ср. обсуждение на github.com/w3c/css-validator/issues/42   -  person Clément    schedule 17.03.2017


Ответы (1)


Пока сам URI никоим образом не нарушает синтаксис url() (например, ( и ) должны быть либо экранированы, либо закодированы в кодировке URI, чтобы они не завершали преждевременно токен функции, также упомянутый в спецификации), он должен быть действительным. даже если не цитируется.

Вероятно, это ошибка валидатора. В частности, похоже, что он не обрабатывает URI данных без кавычек в какой-либо форме, потому что, когда я просто меняю data на http (хотя он, очевидно, не похож на типичный адрес HTTP):

#something {
    background: url(http:image/png;base64,ABCDEF);
}

... затем он волшебным образом проходит проверку.

person BoltClock    schedule 18.03.2013
comment
Согласованный. Если спецификация определяет его как необязательный, то, если что-то еще не говорит, что он должен быть другим для схемы данных, тогда проблема заключается в валидаторе, если он не дает вашей разметки из-за их отсутствия. - person PhonicUK; 18.03.2013
comment
Я открыл проблему в github. - person Clément; 11.11.2015