Почему атрибут «Link>» заставляет браузеры игнорировать мои стили?

StackOverflow https://stackoverflow.com/questions/1959959

  •  21-09-2019
  •  | 
  •  

Вопрос

Следующий 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"> Исправляет это, но я не вижу причины, почему это должно. Что делает заголовок, это делает это неправильно?

Это было полезно?

Решение

Спецификация HTML 4.0 гласит, что есть три вида таблиц стилей: Постоянный, предпочтительный и альтернативный.

  • Таблица стиля "настойчива", если она связана с rel="stylesheet" и нет title атрибут. Все постоянные таблицы стилей используются при рендеринге.
  • Таблица стилей «предпочтительна», если она связана с rel="stylesheet" и имеет title атрибут; предпочтительные таблицы стилей с тем же title сгруппированы вместе, но не должно быть более одной группы. Похоже, что браузеры выберут только одну предпочтительную таблицу стилей для рендеринга, так как должен быть только один.
  • Наконец, таблица стилей «альтернативна», если она связана с rel="alternate stylesheet" и имеет title. Анкет Эти таблицы стилей должны позволить пользователю выбирать таблицы стилей, они сгруппированы вместе title и отображаться в селекторе таблицы таблицы браузера, если он имеет один (View >> Стиль страницы в Firefox). Каждая группа (по названию) является взаимоисключающей.

Поместив title Атрибуты на ваших таблицах стилей, вы невольно превращаете их в предпочтительные таблицы стилей, а не на ожидаемую стойкую таблицу стилей. Вот почему они работают, когда у них есть одинаковое название.

Другие советы

После ответа Нила Уильямса:

Авторы могут указать ряд взаимоисключающий Стильские листы, называемые альтернативными листами в стиле .... Агенты пользователей должны позволить пользователям выбирать из альтернативных листов в стиле.

(Акцент добавлен)

Также:

Чтобы сделать лист стиля предпочтительным, установите атрибут REL на «Стили -лист» и назовите лист стиля с атрибутом заголовка.

Это от http://www.w3.org/tr/rec-html40/present/styles.html#h-14.3.1

Прочитайте это: http://blogs.telerik.com/dimodimov/posts/08-05-15/title_attributes_in_css_link_tags_prevent_styles_from_being_applied.aspx

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

Если у вас есть несколько тегов на странице, и у одного из них есть атрибут заголовка, то теги, поступающие после того, как он должен иметь атрибут заголовка с одним и тем же значением, либо вообще без атрибута заголовка, в противном случае стили в последних CSS -файлах. не применяться на странице.

Проблема может быть легко воспроизведена в различных версиях Firefox, Opera и Safari. Единственный браузер, который не демонстрирует неожиданного поведения, - это интернет -исследователь.

Действительно странно

Мне потребовалось около 3 часов, чтобы добраться до конца, так как я добавлял новую таблицу стиля. Я думал, что у меня были некоторые конфликты между нынешними правилами CSS и теми, которые я добавлял. После того, как я заканчивался с использованием Sane Options, я попытался удалить тег заголовка со ссылки. Я не думал об этом, думал, что это были некоторые бесполезные метаданные. Ну, оказалось, что это было то, что мешало анализе CSS. Оказывается, придумал несвежий комитет стандартов Brainfart CSS. Разве они не могли просто добавить новый атрибут, который является более четким, за их предпочтительную функциональность и еще что -то (что бы он ни делал) вместо того, чтобы полагаться на присутствие или отсутствие атрибута заголовка? Я потерял все это время, которое должно быть инвестировано в то, чтобы сделать что -то продуктивное. Во время поиска я пообещал себе, что примет меры, как только найду происхождение этой проблемы. Теперь остается принять решение о мерах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top