Записка о моем ответе
Я написал этот пост после того, как понял, что он датируется 2008 годом
Поскольку у меня была похожая проблема, я подумал продолжить отвечать текущим ответом.
Мой фактический ответ
Как сказал Боби Джек, тег style
не допускается в теле. Я сам сделал то же самое, что и ты (Джошуа) по этому поводу. Но «прогрессивное улучшение» Джека сделало меня без неабстрактного решения, но потом я понял, что не нашел ответов в этой теме.
Все зависит от вашей структуры стиля.
Мое предложение состоит в том, чтобы просто использовать что-то вроде modernizr
в самом начале и использовать рекомендации Пола Ирриша HTML5Boilerplate.
Короче говоря
- HTML-тег имеет
class
атрибутов с no-js
- тег Head содержит первый модернизированный javascript в качестве первого
- CSS имеет элемент (
.hide-me
) с display:none
на своем месте
- Тогда
.no-js .hide-me { display:block }
Подробнее
Посмотрите HTML5boilerplate Пола Айриша и, если хотите, адаптируйте его к XHTML:)
1. Html имеет атрибуты класса с .no-js
<!doctype html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
цитата из html5boilerplate.com
2. Тег тега включает первый модернизирующий javascript в качестве первого
Выполнение Modernizr создаст html
атрибутов с тем, что поддерживается.
Построит что-то похожее на это:
<html class=" js flexbox canvas canvastext webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache svg inlinesvg smil svgclippaths" lang="en">
Примечание это из Google Chrome modernizr
тесты.
Первый - js
, но если Modernizr не запустится (без JavaScript), no-js
останется там.
3. CSS имеет элемент (.hide-me
) с display:none
на своем месте
... остальное ты знаешь :)