Можно ли использовать элемент noscript
в селекторах CSS?
noscript p {
font-weight: bold;
}
Можно ли использовать элемент noscript
в селекторах CSS?
noscript p {
font-weight: bold;
}
Да! Вы можете это сделать.
Фактически, многие (all?) браузеры поддерживают таргетинг на любой произвольный тег с помощью CSS. "Официальные" теги в спецификации HTML определяют только то, что браузер должен делать с ними. Но CSS - это язык, который нацелен на любой вкус XML, поэтому вы можете сказать foo {font-weight:bold;}
, и в большинстве браузеров <foo> hello world </foo>
выделяется жирным шрифтом.
Как Darko Z разъясняет, что IE6/7 не добавляет к исходному файлу произвольные (нестандартные) элементы в DOM; они должны быть программно добавлены.
У меня есть ошибка IE, чтобы иметь в виду. Если, например, OP, вы просто хотите стилизовать текст внутри тега noscript, а не сам тег noscript, пожалуйста, не обращайте на него внимания.
Предположим, что вы хотите, чтобы фон тега noscript был красным. В IE8 он будет отображаться с включенным JS. Только поле, а не текст внутри.
Итак, эта комбинация не очень хороша:
CSS
noscript {
background-color: red;
}
HTML
<noscript>Turn on your damned JavaScript! What is this, 1999?</noscript>
Но это обходное решение отлично работает:
CSS
noscript div {
background-color: red;
}
HTML
<noscript><div>Turn on your damned JavaScript! What is this, 1999?</div></noscript>
Как ни странно, я вижу это только в IE8, а не в IE7. И кто знает о 6..
В дополнение к ответ Rex M - IE 6/7 (6 def, 7, может быть?) не будет создавать для вас произвольный тег. Но вам повезло, так как с all у многих проблем IE есть обходной путь.
Предположим, вы хотите стилизовать элемент с именем foo
. Чтобы IE распознал его как стильный элемент, вам нужно включить эту строку где-нибудь в свой JS:
document.createElement('foo');
Вам не нужно добавлять его, просто создайте его.
Это приведет к тому, что IE будет стилизовать этот элемент для вас с помощью правила CSS:
foo { font-weight:bold; }