<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
Почему валидатор ( http://validator.w3.org/ ) отклоняет это? Какой атрибут является «обязательным», о котором я не знаю?
Ошибка:
Строка ошибки 408, столбец 142: в ссылке на элемент отсутствует обязательное свойство атрибута. … / Modules / 14ce1e21 / peadig-eucookie.css 'type =' text / css 'media =' all '/> Атрибуты для ссылки на элемент: Глобальные атрибуты href crossorigin rel media hreflang type sizes Кроме того, атрибут title имеет особую семантику для этого элемент.
<link rel='stylesheet' id='someId' href='folder/file.css' type='text/css' media='all' property='' />
.. Работает во всех браузерах, и подтверждает это все об атрибутеproperty
.Ответы:
Совет от @stevelove, по-видимому, является практическим решением, но вот теоретический ответ на вопрос «почему»:
Хотя
link
элемент безусловно недопустим вbody
старых спецификациях HTML, HTML5 имеет более разрешительные правила. Согласно HTML 5.1 Nightly (что более или менее то, за чем пытается не отставать валидатор),link
элемент также разрешен в теле документа (везде, где разрешено фразовое содержание), при условии, что у него естьitemprop
атрибут. Это, кажется, делает сообщение об ошибке еще более загадочным. Частично это объясняется тем, что валидатор фактически проверяет соответствие HTML5 + RDFa, а RDFa определяетproperty
атрибут. Проблема по-прежнему заключается в том, какое именно определение RDFa проверяет валидатор, поскольку определение также потребует переопределения правил для HTML.В любом случае информация в сообщении об ошибке устарела. Сообщения об ошибках, по-видимому, обновляются не так быстро, как базовые функции валидатора.
источник
Добавить
property='stylesheet'
если вы не хотите перемещать ссылку на
<head>
документ.<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
источник
Ты
<link>
внутри<body>
? Если да, попробуйте поместить его<head>
вверху документа.источник
<style>
верхней части документа, а остальные - внизу. Это лучший способ открыть страницу быстрее. Вы можете найти документацию по этому поводу в Интернете, НО не всегда это возможно (и часто эффективность бизнес-кода> производительность).Сопровождение валидатора W3C HTML5 здесь. Как указано в другом ответе, помимо проверки требований в самой спецификации HTML5, валидатор также проверяет соответствие требованиям спецификации HTML + RDFa 1.1:
http://www.w3.org/TR/html-rdfa/
И хотя сама спецификация HTML говорит,
link
что обычно не разрешается в теле *, спецификация RDFa говорит, что еслиlink
элемент имеетproperty
атрибут, он разрешен в теле.Таким образом, это сообщение валидатора в основном говорит: 「
link
Элемент разрешен здесь, только если у него естьproperty
атрибут. Но у этого конкретногоlink
элемента нетproperty
атрибута. 」* В самой спецификации HTML также говорится, что
link
элемент разрешен в теле, если у него естьitemprop
атрибут, но только еслиlink
элемент не имеетrel
значения. (itemprop
это атрибут «Микроданные», назначение которого в основном такое же, как уproperty
атрибута RDFa ).Таким образом, у нас есть два разных атрибута, каждый из которых независимо влияет на то, где в документе
link
разрешено появляться элементу, и это усложняет логику проверки в валидаторе таким образом, что в этом случае сложно создать более полезное сообщение об ошибке.источник
На всякий случай вот мой комментарий:
На странице w3c есть следующий комментарий:
Таким образом, ошибку можно решить, изменив
rel
наitemprop
, потому чтоrel
это должно использоваться в голове иitemprop
может использоваться в теле.Надеюсь, это кому-то поможет.
источник
<link rel='stylesheet' property='stylesheet' href='custom.css' type='text/css' media='screen' />
Он хочет, чтобы это было у вас в голове. Однако, если CSS не слишком важен для загрузки сразу, вы получите инструмент Google Pagespeed, предлагающий поместить его в нижнюю часть тела.
В качестве примера я использую одну из тем jquery (редмонд) для стилизации автозаполнения. Не нужно помещать это в начало страницы, так как это просто замедлит все остальное.
Так что не беспокойтесь об идеальной проверке w3c.
источник