CSS Level 2
CSS Level 2 — это спецификация каскадных таблиц стилей (CSS), опубликованная Консорциумом Всемирной паутины (W3C) в качестве рекомендации в мае 1998 года. Она стала вторым поколением стандарта CSS, значительно расширив возможности предыдущей версии CSS1 за счёт добавления поддержки позиционирования элементов, типографики, псевдоэлементов и медиатипов. CSS2 заложила основу для современного веб-дизайна, позволив разработчикам отделять структуру документа (HTML) от его визуального представления более гибко и предсказуемо.
История
Предпосылки и разработка
После выхода CSS1 в декабре 1996 года веб-сообщество столкнулось с ограничениями: браузеры того времени (Netscape Navigator 4, Internet Explorer 4) реализовывали CSS неполно и с ошибками, а сама спецификация не охватывала такие важные задачи, как управление макетом страницы, работа с многостраничными носителями и точное позиционирование элементов. Работа над CSS2 началась в 1997 году под руководством Криса Лилли (Chris Lilley) и Берт Бос (Bert Bos). Целью было создание стабильного стандарта, который бы учитывал как потребности дизайнеров, так и технические ограничения браузеров.
Рекомендация и последующие исправления
Официальная рекомендация W3C (CSS2 Recommendation) была опубликована 12 мая 1998 года. Однако вскоре были обнаружены неточности и несоответствия, что привело к выпуску исправленной версии — CSS 2.1. Работа над CSS 2.1 затянулась на десятилетие: первая публичная версия вышла в 2002 году, а окончательная рекомендация — 7 июня 2011 года. CSS 2.1 фактически заменила CSS2, исправив ошибки и удалив неподдерживаемые браузерами возможности (например, свойства font-size-adjust и marker-offset). Несмотря на это, термин «CSS Level 2» часто используется для обозначения всей совокупности возможностей, впервые описанных в этой версии.
Ключевые нововведения
CSS2 ввела ряд фундаментальных концепций, которые отсутствовали в CSS1 и стали стандартом де-факто для веб-дизайна в 2000-е годы.
Позиционирование
Одним из главных нововведений стали типы позиционирования элементов:
- Статическое (static) — по умолчанию, элементы следуют нормальному потоку документа.
- Относительное (relative) — элемент смещается относительно своего исходного положения, не влияя на расположение соседних элементов.
- Абсолютное (absolute) — элемент изымается из потока и позиционируется относительно ближайшего предка с нестатическим позиционированием.
- Фиксированное (fixed) — элемент позиционируется относительно окна просмотра (viewport), оставаясь на месте при прокрутке страницы.
Эти механизмы позволили создавать многослойные макеты, выпадающие меню и элементы, «прилипающие» к краям экрана.
Типографика и шрифты
CSS2 расширила возможности управления шрифтами:
- Свойство
font-familyтеперь поддерживало универсальные семейства (serif, sans-serif, monospace, cursive, fantasy). - Добавлены
font-style(italic, oblique),font-variant(small-caps),font-weight(числовые значения от 100 до 900). - Введено свойство
@font-faceдля загрузки пользовательских шрифтов, хотя его реализация в браузерах того времени была крайне ограниченной (полноценная поддержка появилась только в CSS3).
Псевдоэлементы и псевдоклассы
CSS2 ввела псевдоэлементы ::before и ::after (изначально с одним двоеточием :before и :after), которые позволяют вставлять контент до или после содержимого элемента без изменения HTML-разметки. Также были добавлены псевдоклассы для ссылок (:link, :visited, :hover, :active, :focus), что сделало возможным создание интерактивных состояний кнопок и ссылок.
Медиатипы
В CSS2 появилась возможность применять разные стили в зависимости от типа носителя. Основные медиатипы:
screen— для экранов мониторов.print— для печати.handheld— для портативных устройств (позже вытеснен медиа-запросами).aural— для речевых браузеров.
Это позволило создавать отдельные таблицы стилей для печатной версии страницы, скрывая навигацию и меняя шрифты.
Таблицы стилей
CSS2 впервые стандартизировала работу с таблицами через CSS, описав свойства display: table, table-row, table-cell и другие. Это дало возможность создавать табличную вёрстку без использования HTML-тегов <table>, что было важно для семантической разметки.
Структура спецификации
Спецификация CSS2 состояла из 18 разделов (главы), охватывающих все аспекты языка. Основные разделы включали:
- Глава 1: Введение — обзор языка и его возможностей.
- Глава 2: Синтаксис и базовые типы данных — правила записи селекторов, значений и единиц измерения.
- Глава 3: Селекторы — описание всех типов селекторов (классы, ID, атрибуты, псевдоклассы).
- Глава 4: Назначение свойств — каскадирование, наследование, специфичность.
- Глава 5: Блочная модель — описание полей (margin), границ (border), отступов (padding) и содержимого.
- Глава 6: Позиционирование — все типы позиционирования.
- Глава 7: Визуальное форматирование — работа с плавающими элементами (float), переполнением (overflow) и видимостью.
- Глава 8: Свойства шрифтов — подробное описание всех типографических свойств.
- Глава 9: Свойства цвета и фона —
color,background-color,background-image. - Глава 10: Медиатипы — правила для разных носителей.
- Глава 11: Таблицы — CSS-модель для таблиц.
- Глава 12: Пользовательские интерфейсы — свойства для элементов форм (
cursor,outline). - Глава 13: Аудио — для речевых браузеров (позже исключена из CSS 2.1).
Проблемы реализации и критика
Несмотря на инновационность, CSS2 столкнулась с серьёзными проблемами на практике:
- Неполная поддержка браузерами. Internet Explorer 5 и 6, Netscape 6 и ранние версии Firefox реализовывали CSS2 с ошибками. Например, IE6 не поддерживал фиксированное позиционирование, а его реализация блочной модели (box model) отличалась от спецификации.
- Сложность и избыточность. Некоторые возможности, такие как
@font-faceи медиатипaural, были реализованы лишь частично и оставались невостребованными. - Конфликт с блочной моделью. Разница в интерпретации блочной модели между браузерами (особенно IE) привела к массовому использованию «хаков» и обходных путей, что усложнило разработку.
Эти проблемы стали причиной долгой работы над CSS 2.1, которая устранила неоднозначности и удалила неподдерживаемые функции. CSS 2.1 стала фактическим стандартом для веб-дизайна в 2010-х годах, пока её не вытеснили модули CSS3.
Наследие и влияние
CSS Level 2 сыграла ключевую роль в эволюции веб-дизайна. Она:
- Ввела концепцию позиционирования, что позволило создавать сложные макеты без использования таблиц и фреймов.
- Стандартизировала псевдоэлементы и псевдоклассы, которые стали основой для интерактивных интерфейсов.
- Заложила основы адаптивного дизайна через медиатипы (позже развитые в медиа-запросы CSS3).
- Определила блочную модель, которая остаётся центральной в CSS до сих пор.
Многие свойства и принципы, введённые в CSS2, остаются актуальными в современных спецификациях CSS3 и CSS4. Например, position: fixed используется для создания «липких» панелей навигации, а ::before и ::after — для декоративных элементов и иконок без дополнительной разметки.
Интересные факты
- Официальный логотип CSS2 представлял собой стилизованную букву «C» с цифрой «2» внутри, что символизировало преемственность от CSS1.
- В CSS2 впервые появилось свойство
z-index, управляющее порядком наложения слоёв, что стало важным для создания всплывающих окон и модальных диалогов. - Медиатип
handheldтак и не получил широкого распространения из-за отсутствия поддержки в мобильных браузерах того времени (например, Opera Mini и ранние версии iPhone OS). - Спецификация CSS2 содержала около 120 свойств, из которых более 30 были удалены или изменены в CSS 2.1.
Источники
- W3C. «Cascading Style Sheets, level 2: CSS2 Specification». Рекомендация W3C, 12 мая 1998.
- W3C. «Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification». Рекомендация W3C, 7 июня 2011.
- Крис Лилли, Берт Бос. «CSS2: The Definitive Guide». O'Reilly Media, 2004.
- Стивен Чампион. «CSS2: A Practical Guide to Cascading Style Sheets». New Riders, 1999.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →