Класс no-js
используется библиотекой обнаружения функций Modernizr . Когда Modernizr загружается, он заменяет no-js
на js
. Если JavaScript отключен, класс остается. Это позволяет вам писать CSS, который легко нацеливается на любое условие.
С Аннотированный источник Модернизаторов (больше не поддерживается) :
Удалить класс "no-js" из элемента, если он существует:
docElement.className=docElement.className.replace(/\bno-js\b/,'') + ' js';
Вот запись в блоге Пола Айриша, описывающая этот подход:
http://www.paulirish.com/2009/avoiding-the-fouc-v3/
Мне нравится делать то же самое, но без Modernizr.
Я поставил следующее <script>
в <head>
, чтобы изменить класс на js
, если JavaScript включен. Я предпочитаю использовать .replace("no-js","js")
по сравнению с версией регулярного выражения, потому что она немного менее загадочна и соответствует моим потребностям.
<script>
document.documentElement.className =
document.documentElement.className.replace("no-js","js");
</script>
До этой техники я обычно просто применял бы js-зависимые стили напрямую с JavaScript. Например:
$('#someSelector').hide();
$('.otherStuff').css({'color' : 'blue'});
С помощью трюка no-js
теперь это можно сделать с помощью css
:
.js #someSelector {display: none;}
.otherStuff { color: blue; }
.no-js .otherStuff { color: green }
Это предпочтительнее, потому что:
- Он загружается быстрее, без FOUC (флэш-содержимое без стиля)
- Разделение интересов и т.д ...