Открыть сервис

CSS

CSS (от англ. Cascading Style Sheets — каскадные таблицы стилей) — это формальный язык описания внешнего вида документа, написанного с использованием языка разметки (например, HTML или XML). CSS используется веб-разработчиками для определения цветов, шрифтов, расположения отдельных элементов и целых блоков, а также для создания адаптивного дизайна, анимации и визуальных эффектов на веб-страницах. Основная цель CSS — разделение содержания (контента) документа и его представления (оформления), что упрощает разработку, поддержку и изменение дизайна сайтов.

История

Предпосылки создания

В начале 1990-х годов, с появлением первых веб-страниц, их оформление задавалось исключительно средствами HTML. Разработчики использовали теги вроде <font>, <center> и атрибуты bgcolor, align. Это приводило к тому, что код страниц становился громоздким, а изменение дизайна всего сайта требовало правки каждого HTML-файла. Назрела необходимость в создании механизма, который бы отделил структуру документа от его визуального представления.

Разработка и стандартизация

Идея каскадных таблиц стилей была впервые предложена норвежским программистом Хоконом Виум Ли (Håkon Wium Lie) в 1994 году. В 1995 году он совместно с Бертом Босом (Bert Bos) представил проект спецификации CSS. В декабре 1996 года Консорциум Всемирной паутины (World Wide Web Consortium, W3C) опубликовал первую рекомендацию — CSS Level 1 (CSS1). Она включала базовые возможности: шрифты, цвета, отступы, границы и выравнивание текста.

В мае 1998 года вышла CSS Level 2 (CSS2), которая значительно расширила функционал, добавив позиционирование элементов (абсолютное, относительное, фиксированное), поддержку медиатипов (например, для печати или экрана), а также стили для таблиц. Позднее, в 2002—2011 годах, спецификация была уточнена и переработана в CSS 2.1, которая стала стабильным стандартом на долгое время.

Современный этап (CSS3 и далее)

С начала 2000-х годов W3C отказался от монолитной нумерации версий и перешёл к модульной структуре. CSS3 (а впоследствии и CSS4 как условное обозначение) представляет собой набор отдельных модулей, каждый из которых развивается независимо. Наиболее значимые модули CSS3 включают:

  • Flexbox (2012) — модуль для создания гибких одномерных макетов.
  • Grid Layout (2017) — мощная система двумерной вёрстки на основе сеток.
  • Анимации и переходы (CSS Animations, CSS Transitions) — для создания плавных изменений свойств.
  • Медиа-запросы (Media Queries) — ключевая технология для адаптивного веб-дизайна.
  • Переменные CSS (Custom Properties) — для повторного использования значений в коде.

На сегодняшний день CSS является живым стандартом, который постоянно дополняется новыми возможностями (например, субгриды, контейнерные запросы, стилизация скошенных углов и новые функции цвета).

Синтаксис и структура

CSS-код состоит из правил (правил стиля). Каждое правило включает селектор и блок объявлений.

Правило

``css селектор { свойство: значение; свойство: значение; } ``

  • Селектор — указывает, к каким элементам HTML применяется правило (например, h1, .class, #id, *).
  • Блок объявлений — заключён в фигурные скобки {} и содержит одно или несколько объявлений, разделённых точкой с запятой.
  • Объявление — пара «свойство: значение». Свойство — это название атрибута стиля (например, color, font-size), а значение — конкретный параметр (например, red, 16px).

Комментарии

Комментарии в CSS записываются так: ``css / Это комментарий / ``

Способы подключения CSS

Существует три основных способа подключения стилей к HTML-документу:

  1. Внешняя таблица стилей — самый распространённый и рекомендуемый способ. CSS-код хранится в отдельном файле с расширением .css, который подключается в HTML через тег <link> в секции <head>:

``html <link rel="stylesheet" href="styles.css"> `` Преимущество: один файл стилей можно использовать для множества страниц сайта.

  1. Внутренняя таблица стилей — CSS-правила размещаются внутри тега <style> в секции <head> HTML-документа. Применяется для стилизации одной конкретной страницы.
  1. Встроенные (инлайн) стили — стили задаются непосредственно в HTML-элементе через атрибут style. Этот способ считается устаревшим и не рекомендуется к использованию, так как нарушает принцип разделения контента и оформления.

Каскадирование и специфичность

Ключевое понятие в CSS — каскад (cascade). Оно определяет, какое правило будет применено к элементу, если несколько правил конфликтуют. Каскад работает на основе трёх принципов:

  1. Важность и происхождение — стили автора (разработчика) имеют приоритет над стилями пользователя (например, настройками браузера), а те — над стилями браузера по умолчанию. Исключение — правила с !important, которые имеют высший приоритет.
  2. Специфичность — вычисляется на основе селекторов. Правило с более специфичным селектором переопределяет менее специфичное. Порядок специфичности (от низшей к высшей):
  • Селекторы элементов (например, p, h1).
  • Классы, атрибуты и псевдоклассы (например, .class, [type="text"], :hover).
  • Идентификаторы (например, #unique).
  • Инлайн-стили (имеют наивысший вес).
  1. Порядок исходного кода — если специфичность одинакова, применяется последнее по порядку правило.

Основные свойства и возможности

Шрифты и текст

  • font-family — задаёт гарнитуру шрифта (например, Arial, Georgia, sans-serif).
  • font-size — размер шрифта (в пикселях, процентах, em, rem).
  • font-weight — насыщенность (нормальная, полужирная).
  • color — цвет текста.
  • text-align — выравнивание текста (left, right, center, justify).
  • line-height — межстрочный интервал.

Блочная модель (Box Model)

Каждый HTML-элемент в CSS рассматривается как прямоугольный блок, состоящий из:

  1. Content (содержимое) — область, где находится текст или вложенные элементы.
  2. Padding (внутренний отступ) — пространство между содержимым и границей блока.
  3. Border (граница) — линия вокруг блока.
  4. Margin (внешний отступ) — пространство между границей блока и соседними элементами.

Свойства width и height по умолчанию задают размеры только области содержимого. Для управления размерами блока с учётом padding и border используется свойство box-sizing (значение border-box).

Позиционирование

CSS позволяет управлять расположением элементов на странице:

  • position: static — положение по умолчанию, элемент следует нормальному потоку.
  • position: relative — элемент смещается относительно своего нормального положения.
  • position: absolute — элемент удаляется из потока и позиционируется относительно ближайшего позиционированного предка.
  • position: fixed — элемент фиксируется относительно окна браузера.
  • position: sticky — элемент ведёт себя как relative до достижения определённой прокрутки, после чего «прилипает» к экрану.

Макеты (Layout)

Для создания сложных макетов используются модули:

  • Flexbox — предназначен для одномерной раскладки (в строку или в столбец). Позволяет легко выравнивать элементы, распределять пространство и менять порядок.
  • Grid Layout — мощный инструмент для двумерной раскладки. Позволяет создавать сетки с произвольным количеством строк и столбцов, задавать области и управлять наложением элементов.

Адаптивный дизайн

Адаптивность достигается с помощью медиа-запросов (media queries). Они позволяют применять разные стили в зависимости от характеристик устройства, таких как ширина экрана, разрешение, ориентация: ``css @media (max-width: 768px) { body { font-size: 14px; } } ``

Анимация и переходы

  • CSS Transitions — позволяют плавно изменять значения свойств при наступлении события (например, при наведении курсора).
  • CSS Animations — дают возможность создавать сложные, повторяющиеся или одноразовые анимации с помощью ключевых кадров (@keyframes).

Инструменты и препроцессоры

Для упрощения работы с CSS были созданы препроцессоры — надстройки, расширяющие возможности языка:

  • Sass/SCSS — добавляет переменные, вложенность, миксины, функции и наследование.
  • Less — аналогичный инструмент с похожим синтаксисом.
  • Stylus — более гибкий и лаконичный синтаксис.

Также широко используются CSS-фреймворки (например, Bootstrap, Tailwind CSS), которые предоставляют готовые классы и компоненты для быстрой вёрстки.

Критика и ограничения

Несмотря на широкую распространённость, CSS имеет ряд недостатков:

  • Отсутствие переменных в изначальной спецификации — до появления Custom Properties (CSS-переменных) разработчики были вынуждены использовать препроцессоры.
  • Сложность поддержки больших проектов — каскад и глобальная область видимости правил могут приводить к непредсказуемым конфликтам. Для решения этой проблемы применяются методологии (например, БЭМ, OOCSS, SMACSS) и модульные подходы.
  • Неполная поддержка старыми браузерами — некоторые современные возможности (например, Grid, субгриды) требуют полифилов или fallback-стилей для устаревших версий Internet Explorer.
  • Отсутствие возможности вычислений на уровне стилей — до появления calc() и min()/max() было сложно выполнять арифметические операции с единицами измерения.

Будущее CSS

Развитие CSS продолжается. Среди перспективных направлений:

  • Container Queries — позволяют адаптировать стили элемента на основе размеров его родительского контейнера, а не всего окна браузера.
  • Cascade Layers (@layer) — дают возможность явно управлять порядком каскада, группируя стили по слоям.
  • Новые функции цвета (например, color-mix(), hwb(), lch()) — для более точной и гибкой работы с цветом.
  • Стилизация скошенных углов и сложных форм — с помощью свойств clip-path и shape-outside.

CSS остаётся неотъемлемой частью веб-разработки, обеспечивая гибкость и контроль над визуальным представлением веб-контента.

Источники

  • Спецификация CSS 2.1 (W3C Recommendation)
  • Спецификация CSS Grid Layout (W3C)
  • Спецификация CSS Flexible Box Layout (W3C)
  • Документация MDN Web Docs (Mozilla Developer Network)
  • «CSS: The Definitive Guide» by Eric A. Meyer and Estelle Weyl (O'Reilly Media)
  • Материалы консорциума W3C (www.w3.org/Style/CSS/)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →