2013-08-08 3 views
-2

Я всегда думал, что вы не можете добавить в линию :hover{..} стилей к элементу, однако я наткнулся this страницу не так давно, когда я вижу вещи, как это.Инлайн CSS Псевдо-классы

<a href="http://www.w3.org/" 
      style="{color: #900} 
      :link {background: #ff0} 
      :visited {background: #fff} 
      :hover {outline: thin red solid} 
      :active {background: #00f}">...</a> 

мне не нравится в линии стилей вообще, но мое текущее приложение основано на рядном стили/сценарий так, что это будет отличной возможностью для меня.

Есть одна проблема: не работает.

Кто-нибудь знает, почему это не работает? Chrome не реализовал это или что-то еще?

Demo

Демо-код из w3.org

+2

Возможный дубликат [CSS Псевдо-классы со встроенными стилями] (http://stackoverflow.com/questions/5293280/css-pseudo-classes-with-inline-styles) –

+0

Ответы некорректные @PWKad – iConnor

+0

As он ясно указывает на w3.org, что вы можете – iConnor

ответ

7

В самом деле, the same document was referenced in another question here. Это то, что я должен был сказать об этом:

Этот документ вам ссылку на это 10-летний проект.

Сейчас 11 лет, но дело не в этом (хотя это и говорит о весьма вероятной причине, почему приведенный вами пример не работает). Дело в том, что приведенный пример не указан в latest revision той же спецификации. Таким образом, предположительно, внедрение селекторов в атрибутах стиля считалось нежизнеспособным и отбрасывалось в результате.

Мой ответ the question linked in the comments предполагает, почему такая особенность была сочтена не жизнеспособны - это просто не совместимы с текущим состоянием CSS как языка:

Обратите внимание, что встроенные стили участвуют в том же каскаде, как селекторы в наборы правил и принимать наивысший приоритет в каскаде (!important). Поэтому они имеют приоритет даже над псевдоклассовыми состояниями. Разрешение псевдоклассов или любых других селекторов в встроенных стилях могло бы ввести новый каскадный уровень, а вместе с ним и новый набор осложнений.

Конечно, я не претендую на то, чтобы говорить за людей, которые фактически приняли решения и/или написали спецификацию, но если бы я был одним из них, то я бы и дал за то, что не поддержал особенность.

Это также объясняет, почему ни один браузер не реализовал такую ​​возможность (или, скорее, отсутствие реализации в числе факторов, вызывающих его пересмотреть, а затем в конце концов упал, давая поставщикам даже больше причин не чтобы начать реализовывать его сейчас, когда спецификация достигла статуса CR).

Урок здесь состоит в том, чтобы никогда не ссылаться на старые версии технических документов W3C в качестве канона. Всегда помните, чтобы просмотреть последние спецификации; вы должны найти ссылку в заголовке документа.

+0

Спасибо за информацию :) – iConnor

Смежные вопросы