История
Из сорока с небольшим тегов HTML версии 1.2 (датированной июнем 1993 г.) всего три, да к тому же не рекомендованных к использованию, тега осмеливались намекать на физические параметры представления документа. Вся разметка была чисто логической, и лишь в описательной части стандарта, сопровождающей формальное определение тегов, можно было прочесть что-нибудь вроде «в графических браузерах действие этого тега может передаваться курсивным начертанием».
Дмитрий Кирсанов «Web-дизайн»

История

HTML был создан как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. Изначально ни о каком дизайне HTML-документов речи просто не шло. HTML служил только для разметки структуры: тегами можно было обозначить заголовки, абзацы, списки, ссылки, другие логические части документа.

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

Понятно, что дизайнеров не устраивало отсутствие средств для управления внешним видом гипертекстовых страниц, и HTML стал под их напором стремительно расширяться за счёт введения тегов и атрибутов, отвечающих за визуальное представление элементов на экране. Таким образом, содержание и внешний вид были «уложены в одну постель», и первоначальная идея HTML, как языка для разметки структуры, была проигнорирована в практике сайтостроения.

Разработчики браузеров активно откликнулись на веяние времени и стали, соревнуясь друг с другом, добавлять в HTML визуальные теги и атрибуты, которые поддерживались только их браузером.

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

Организация W3C, отвечавшая за разработку стандартов пришла в ужас и предложила в 1995 году язык CSS, который должен был работать совместно с HTML (начиная с версии 3).

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

Однако, визуальные теги и атрибуты в HTML 3 остались, как и в последней версии HTML 4.01. Их уже невозможно было удалить из языка, так как в Сети прочно обосновались миллионы страниц, в которых они использовались.

Но в описаниях языка четвёртых версий, W3C явно разделила элементы и атрибуты на логические и визуальные. Последние были объявлены «не рекомендованными».

В ответ на рекомендации W3C разработчики новых версий популярных браузеров Netscape Navigator и Microsoft Internet Explorer реализовали в своих продуктах поддержку CSS лишь частично. Причём эти части мало пересекались. Свойства CSS, реализованные в Netscape, не поддерживались Microsoft, и наоборот. А то, что поддерживалось в обоих браузерах, часто поддерживалось по-разному, и не соответствовало стандарту.

Понятно, что такое положение вещей не добавляло оптимизма разработчикам сайтов, и они почти не использовали CSS в своих кодах. По крайней мере, о полном разделении содержания и его представления речи не шло.

Ситуация стала меняться только в 2001 году. Вышел браузер Netscape 6. Этот браузер не был модификацией ранних версий, он был написан с нуля специально для поддержки стандартов. CSS1 браузер Netscape 6 поддерживал полностью, а также большинство возможностей CSS2. Однако, версия Netscape 6.0 не прижилась: она содержала много ошибок, была медленной и неуклюжей.

На базе того же движка Gecko (на котором был построен браузер Netscape 6), в 2002 году был выпущен браузер Mozilla 1.0

Современный браузер Mozilla Firefox 2 был выпущен в 2006 году. Он полностью поддерживает CSS1 и практически полностью CSS2, третья версия этого браузера планируется к выпуску в 2008 году.

Современный браузер Opera 9 (выпуск 2007 года) полностью поддерживает CSS1 и CSS2.

Современные браузеры Internet Explorer 6 и 7 поддерживают большинство свойств CSS1 и частично CSS2.

Таким образом, ситуация с браузерами поменялась кардинально: если раньше браузеры воевали за рынок, не обращая внимания на стандарты, то теперь они соревнуются за наиболее полное соответствие стандартам.

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

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

Структура содержания страницы описывается в HTML-файле, и таких файлов на сайте может быть сотни. А визуальное представление — в одном единственном файле CSS.

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