Почему атрибут title <link> заставляет браузеры игнорировать мои стили?
Следующий html-документ (вместе с CSS) не может отображать стили в b.css
.
<!doctype html>
<html>
<head>
<link rel="stylesheet" media="screen" type="text/css" title="A" href="a.css" />
<link rel="stylesheet" media="screen" type="text/css" title="B" href="b.css" />
</head>
<body>
<div id="A">A</div>
<div id="B">B</div>
</body>
</html>
/* a.css */
div#A { color: blue; }
/* b.css */
div#B { color: red; }
Создание титров одинаково (например, оба <link ... title="A">
исправляют его, но я не вижу причины, почему это должно быть. Что здесь делает название, что делает это неправильным?
Ответы
Ответ 1
Спецификация HTML 4.0 гласит, что существует три типа таблиц стилей: постоянный, предпочтительный и альтернативный.
- Таблица стилей является "постоянной", если она связана с
rel="stylesheet"
и не имеет атрибута title
. Во время рендеринга используются все постоянные таблицы стилей.
- Таблица стилей "предпочтительна", если она связана с
rel="stylesheet"
и имеет атрибут title
; предпочтительные таблицы стилей с тем же title
сгруппированы вместе, но не должно быть более одной группы. Кажется, браузеры выберет только одну предпочтительную таблицу стилей для рендеринга, поскольку должен быть только один.
- Наконец, таблица стилей "чередуется", если она связана с
rel="alternate stylesheet"
и имеет title
. Предполагается, что эти таблицы стилей позволяют пользователю выбирать таблицы стилей, они группируются вместе title
и отображаются в селекторе стилей браузера, если он имеет один (вид → стиль страницы в Firefox). Каждая группа (по названию) является взаимоисключающей.
Поместив атрибуты title
в таблицы стилей, вы невольно вносите их в предпочтительные таблицы стилей, а не в ожидаемую постоянную таблицу стилей. Вот почему они работают, когда все они имеют один и тот же заголовок.
Ответ 2
В ответ на ответ Нила Уильямса:
Авторы могут указать несколько взаимоисключающих таблиц стилей, которые называются альтернативными таблицами стилей.... Пользовательские агенты должны разрешать пользователям выбирать из альтернативных таблиц стилей.
(выделено курсивом)
также:
Чтобы сделать предпочтительную таблицу стилей, установите атрибут rel в "stylesheet" и назовите таблицу стилей с атрибутом title.
Это от http://www.w3.org/TR/REC-html40/present/styles.html#h-14.3.1
Ответ 3
Прочтите следующее: http://blogs.telerik.com/dimodimov/posts/08-05-15/title_attributes_in_css_link_tags_prevent_styles_from_being_applied.aspx
Я знаю уже некоторое время эти атрибуты заголовка в CSS теги запускают проблемы и Стили CSS применяются к веб-страница. Сегодня я вложил пару часов, чтобы выяснить, что на самом деле происходит, и это то, что у нас есть.
Если у вас несколько тегов в и один из них имеет title, затем теги после того, как он должен атрибут title с тем же значением или нет атрибута title вообще, иначе стили в последних CSS файлах не будет применяться на странице.
Проблема может быть легко воспроизведена в различные версии Firefox, Opera и Сафари. Единственный браузер, который делает не проявлять неожиданное поведение Internet Explorer.
Действительно странно o.o
Ответ 4
Мне потребовалось около 3 часов, чтобы дойти до конца, так как я добавлял новую таблицу стилей. Я думал, что у меня были некоторые конфликты между существующими правилами CSS и теми, которые я добавлял.
После истечения разумных параметров я попытался удалить тег заголовка из ссылки. Я не очень много думал об этом, думал, что это бесполезные метаданные. Ну, оказалось, это было тем, что мешало анализировать CSS.
Оказывается, устаревший комитет стандартов CSS в области мозгов придумал это. Не могли бы они просто добавили новый атрибут, который яснее, для их предпочтительной и какой-то функциональности (какой бы черт он ни предполагал) вместо того, чтобы полагаться на присутствие или отсутствие атрибута title?
Я потерял все это время, которое нужно инвестировать в то, чтобы делать что-то продуктивное. Во время моего поиска я пообещал себе, что буду принимать меры, как только выясню происхождение этой проблемы.
Теперь остается решить вопрос о мерах.