-
Notifications
You must be signed in to change notification settings - Fork 0
2.2. CSS
-
Что такое CSS и для чего он используется? CSS (Cascading Style Sheets) — это язык таблиц стилей, который используется для описания внешнего вида и форматирования документа, написанного на HTML или XML. Он контролирует цвета, шрифты, макет, анимации и адаптивность веб-страниц, отделяя содержимое от его представления.
-
Какие существуют способы подключения CSS к HTML?
- Внешний файл:
<link rel="stylesheet" href="styles.css">. Рекомендуемый способ, позволяет переиспользовать стили на многих страницах. - Внутренние стили: Блок
<style>внутри<head>. Применяется к одной странице. - Инлайн-стили: Атрибут
styleу конкретного HTML-элемента. Имеет наивысший приоритет, но плох для поддержки.
-
Что такое CSS-правило? Из чего оно состоит? CSS-правило состоит из селектора (указывает, к какому элементу применить стили) и блока объявлений в фигурных скобках {}. Блок содержит одно или несколько свойств с их значениями, разделенными точкой с запятой. Например:
p { color: red; }. -
Что такое CSS-селекторы и какие они бывают? Селекторы — это шаблоны, используемые для выбора элементов для стилизации. Основные типы:
- Элемент:
p,div - Класс:
.my-class - ID:
#unique-id - Атрибут:
[type="text"] - Псевдокласс:
:hover,:nth-child() - Псевдоэлемент:
::before,::after - Комбинированные:
div p(все p внутри div),div > p(прямые потомки).
- Что такое специфичность (specificity) в CSS и как она рассчитывается? Это алгоритм, который определяет, какое правило применять, если несколько селекторов нацелены на один элемент. Вес рассчитывается как четырехзначное число:
- Инлайн-стили: 1,0,0,0 — наивысший приоритет.
- ID-селекторы: 0,1,0,0
- Классы, псевдоклассы, атрибуты: 0,0,1,0
- Элементы и псевдоэлементы: 0,0,0,1 Побеждает селектор с большим весом. Если вес равен, применяется последний объявленный.
-
Объясните концепцию каскада (Cascade) в CSS. Каскад — это механизм, который разрешает конфликты между несколькими правилами CSS. Он объединяет стили из разных источников (браузер по умолчанию, пользователь, автор) и применяет их на основе приоритета (важности, специфичности и порядка объявления).
-
Что такое наследование (inheritance) в CSS? Какие свойства наследуются? Наследование — это механизм, при котором некоторые свойства родительского элемента передаются его потомкам. В основном наследуются свойства, связанные с текстом (
color,font-family,text-align). Свойства макета (width,margin,padding) не наследуются.
- Что такое CSS-боксовая модель и из чего она состоит? Боксовая модель — это фундаментальная концепция, описывающая каждый HTML-элемент как прямоугольный блок. Она состоит из (изнутри наружу):
-
Content: Содержимое (текст, изображения). -
Padding: Прозрачная область вокруг содержимого. -
Border: Граница вокруг padding. -
Margin: Внешний отступ, создающий пространство между блокам
- В чем разница между
content-boxиborder-box?
-
content-box(по умолчанию): Свойстваwidth/heightзадают размер только содержимого. Добавлениеpaddingилиborderувеличивает общий размер блока. -
border-box: Свойстваwidth/heightвключают содержимое,paddingиborder. Это делает размеры блока более предсказуемыми и удобными для верстки. Это глобальное правило часто используют, чтобы упростить работу со всеми элементами.
-
В чем разница между
marginиpadding?margin— это внешний отступ, который создает пространство между текущим и соседними элементами.padding— это внутренний отступ, который создает пространство внутри элемента между его содержимым и границей. margin может быть отрицательным, а padding — нет. -
Что такое схлопывание (
collapse) внешних отступов? Это ситуация, когда вертикальные margin соседних блоков не складываются, а перекрываются, и результирующий отступ равен максимальному из них. Это поведение характерно для блочных элементов в обычном потоке документа.
- В чем разница между
block,inlineиinline-block?
-
block: Элемент занимает всю доступную ширину, начинается с новой строки и может содержать другие блоки. -
inline: Элемент занимает столько места, сколько необходимо для его содержимого, не переносит строку. На него нельзя применитьwidth/heightи вертикальные margin/padding. -
inline-block: Элемент ведет себя как строчный (находится на одной строке с другими), но при этом у него работают свойстваwidth/heightи вертикальные отступы.
- Опишите разницу между
relative,absolute,fixedиsticky.
-
relative: Позиционируется относительно своего нормального места. Другие элементы не сдвигаются, но вы можете использоватьtop,leftи т.д., чтобы сместить его. -
absolute: Элемент удаляется из потока документа и позиционируется относительно ближайшего родителя с позиционированием (неstatic). Если такого нет, то относительно окна браузера. -
fixed: Позиционируется относительно окна браузера (viewport). Даже при прокрутке страницы остается на месте. -
sticky: Это гибридrelativeиfixed. Элемент ведет себя какrelative, пока не достигнет заданного порога (top,leftи т.д.), после чего "прилипает" к окну.
-
Как работает свойство
z-indexи что такое контекст наложения?z-indexуправляет вертикальным порядком позиционированных элементов. Элемент с большимz-indexбудет перекрывать элемент с меньшим. Он работает только на позиционированных элементах. Контекст наложения — это иерархия, в которой элементы группируются;z-indexсравнивается только внутри одного контекста. -
Как можно центрировать элемент горизонтально и вертикально?
- Горизонтально:
margin: 0 auto; для блочного элемента с заданной шириной. - Вертикально и горизонтально (
Flexbox): Родительdisplay: flex;justify-content: center;align-items: center;. - Вертикально и горизонтально (
Grid): Родительdisplay: grid;place-items: center;. - Через абсолютное позиционирование:
position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);.
-
Как задать цвет фона и текста? Используются свойства
background-colorиcolor. Цвет можно указать с помощью названия (red),HEX (#FF0000),RGB (rgb(255,0,0))илиHSL (hsl(0, 100%, 50%)). -
Как задать размер и стиль шрифта? Используются свойства
font-family(тип шрифта),font-size(размер),font-weight(жирность),font-style(курсив). -
В чем разница между
emиremединицами измерения?
-
em— относительная единица, равная размеру шрифта родительского элемента. Может вызывать каскадный эффект ("снежный ком") во вложенных элементах. -
rem(root em) — относительная единица, равная размеру шрифта корневого элемента . Это делает размеры более предсказуемыми и управляемыми, поэтомуremпредпочтительнее для масштабирования.
- Как сделать текст жирным или курсивом?
- Жирный:
font-weight: bold;илиfont-weight: 700;. - Курсив:
font-style: italic;илиfont-style: oblique;.
- Что такое псевдоклассы и псевдоэлементы?
- Псевдокласс (
:) определяет состояние элемента. Например,:hover— при наведении мыши,:nth-child(2)— второй дочерний элемент. - Псевдоэлемент (
::) стилизует часть элемента. Например,::beforeи::afterсоздают виртуальные элементы внутри контейнера, а::first-line— первую строку текста.
- Как правильно задать градиентный фон?
Используйте функцию
linear-gradient()илиradial-gradient()для свойстваbackground-image. Например:
- В чем разница между
opacityиrgba()?
-
opacity: 0.5;делает полупрозрачным весь элемент вместе со всем его содержимым (текст, дочерние элементы). -
background-color: rgba(0,0,0,0.5);делает полупрозрачным только фон элемента, оставляя текст и дочерние элементы непрозрачными.
- Как задать тени для текста и элементов?
- Тень для текста:
text-shadow: 2px 2px 4px rgba(0,0,0,0.5); - Тень для блока:
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
-
Что такое
border-radiusи как сделать круг?border-radiusскругляет углы элемента. Чтобы сделать круг, нужно задатьborder-radius: 50%;для элемента с одинаковымиwidthиheight. -
Как создать плавный переход (transition)? Использовать свойство
transitionдля анимации изменения свойств:
-
Что такое
Flexboxи для чего он используется? CSS Flexible Box Layout (Flexbox) — это одномерная модель компоновки, предназначенная для распределения пространства вдоль одной оси (строки или колонки). Он упрощает выравнивание, распределение и масштабирование элементов внутри кон. -
Что такое
Gridи для чего он используется? CSS Grid Layout — это двумерная модель компоновки, позволяющая управлять как строками, так и колонками. Она идеально подходит для создания сложных макетов страниц, где элементы должны быть размещены в виде сетки. -
Когда использовать Flexbox, а когда Grid? Используйте Flexbox для одномерных макетов, где элементы располагаются по одной линии (например, навигационная панель, кнопки в строке). Используйте CSS Grid для двумерных макетов, где вы контролируете и строки, и колонки (например, общий каркас страницы, доска с карточками).
-
Как сделать макет адаптивным? Адаптивный дизайн строится на:
- Гибкой сетке: Использование относительных единиц (%, vw, vh).
- Гибких медиа:
max-width: 100%;для изображений. - CSS Media Queries:
@media (max-width: 768px) { ... }, чтобы применять разные стили в зависимости от ширины экрана. - Правильном viewport:
<meta name="viewport" content="width=device-width, initial-scale=1.0">.
- Как сделать изображение адаптивным?
- Самый простой способ:
img { max-width: 100%; height: auto; }. Изображение будет масштабироваться в пределах ширины родителя. - Для более продвинутого контроля используйте
srcsetи<picture>в HTML, чтобы браузер мог выбрать наиболее подходящее изображение по разрешению и размеру экрана.
- Как скрыть элемент, но чтобы он оставался доступным для скринридеров?
Не используйте
display: none;илиvisibility: hidden;, так как они полностью скрывают элемент от вспомогательных технологий. Используйте следующий CSS "визуального скрытия":
-
Что такое CSS-препроцессоры и для чего они нужны? Препроцессоры (Sass, LESS, Stylus) — это инструменты, которые расширяют возможности CSS. Они позволяют использовать переменные, вложенность, миксины (mixins), функции и т.д., делая код более чистым, поддерживаемым и масштабируемым. Затем они компилируются в обычный CSS.
-
В чем преимущества CSS-переменных (custom properties)? CSS-переменные (
--main-color: #3498db;) позволяют хранить значения и переиспользовать их по всему документу. Главные преимущества:
- Легкая смена темы: Можно переопределить переменные в медиа-запросе или при добавлении класса (например, для темной темы).
- Динамическое изменение через JS:
element.style.setProperty('--main-color', 'red').
-
Что такое CSS-методология БЭМ (BEM)? BEM (Block, Element, Modifier) — это популярная методология именования классов, которая делает код понятным и самодокументируемым. Имена строятся по схеме:
.block__element--modifier. Например,.button__icon--large. -
Как влияет CSS на производительность страницы? Хотя сам CSS не медленный, его неэффективное использование может замедлить рендеринг. "Тяжелые" селекторы, огромные файлы, особенно блокирующие рендеринг, и слишком много правил могут отсрочить отображение страницы.
- В чем разница между
transitionиanimation?
-
transition— для плавных переходов между двумя состояниями (например, при наведении). Требуется триггер (hover,click). -
animation— для более сложных последовательностей с ключевыми кадрами (@keyframes). Может запускаться автоматически и повторяться.
- Как использовать
@keyframes?@keyframesопределяет последовательность состояний анимации:
- Что такое
transformи какие трансформации бывают?transformпозволяет изменять визуальное представление элемента. Основные функции:
-
translate(x, y)— перемещение -
rotate(deg)— поворот -
scale(x)— масштабирование -
skew(deg)— наклон
- В чем разница между
transform: translate(-50%, -50%)и другими способами центрирования? Это мощный способ центрирования, особенно для абсолютно позиционированных элементов. Он сдвигает элемент на 50% от его собственной ширины и высоты, не требуя знания размеров родителя. Работает вместе сposition: absolute;top: 50%;left: 50%;.
- Что такое медиа-запросы (Media Queries) и как их использовать? Медиа-запросы позволяют применять CSS-стили только при определенных условиях (например, ширина экрана). Синтаксис:
- Какой самый частый брейкпоинт для мобильных устройств? Нет "правильного" единого брейкпоинта. Однако часто используются:
- Мобильные: до
768px - Планшеты:
768px-1024px - Десктоп: > `1024px
- Как использовать
min-widthиmax-widthв медиа-запросах?
- max-width применяет стили, если ширина экрана меньше или равна значению.
- min-width применяет стили, если ширина экрана больше или равна значению.
- Как проверить ориентацию экрана через CSS?
Используйте медиа-запрос
orientation:
-
Что такое CSS-спрайты (
sprites) и зачем они нужны? CSS-спрайты — это объединение множества мелких изображений (иконок) в одно большое. Это уменьшает количество HTTP-запросов к серверу, ускоряя загрузку страницы. Каждая иконка отображается с помощьюbackground-imageиbackground-position. -
Как сделать так, чтобы текст не выходил за границы контейнера? Использовать комбинацию свойств:
- Как сделать "адаптивный" шрифт, который меняется в зависимости от размера экрана? Используйте clamp(). Это задает минимальный, оптимальный и максимальный размер шрифта:
-
Что такое
will-changeи для чего он нужен?will-changeподсказывает браузеру, что свойство элемента будет меняться в будущем. Это позволяет браузеру оптимизировать рендеринг заранее. Используйте только для критических элементов, чтобы не расходовать ресурсы. -
Как исправить проблему с
100vhна мобильных устройствах? В мобильных браузерахvhне учитывает панели навигации браузера, что может вызвать проблемы. Решение — использоватьdvh(dynamic viewport height):
- Как сделать так, чтобы пользователи с ограниченными возможностями могли пользоваться сайтом? CSS помогает:
- Используйте достаточный контраст между текстом и фоном (минимум 4.5:1).
- Не полагайтесь только на цвет для передачи информации (используйте иконки, подписи).
- Сделайте фокус видимым (не убирайте
outline). - Используйте
prefers-reduced-motionдля людей с вестибулярными нарушениями.
- Как отключить анимацию для людей с вестибулярными нарушениями?
Использовать медиа-запрос
prefers-reduced-motion:
- Как проверить контрастность цветов? Использовать:
- Инструменты разработчика Chrome (вкладка "Стили" → "Accessibility").
- Онлайн-инструменты (
WebAIM Contrast Checker). - Плагины для VS Code (
Axe Accessibility Linter).
-
Что такое
CSS-модули(CSS Modules)?CSS Modules— это подход, при котором CSS-классы изолированы локально в рамках одного компонента. Имена классов генерируются автоматически, предотвращая конфликты имен. Популярны в React и Vue. -
Что такое
CSS-in-JS? Это подход, при котором стили пишутся прямо в JavaScript (например, в React с библиотекой styled-components). Стили инкапсулируются внутри компонента, что упрощает динамическую стилизацию.
3.Что такое критический CSS (Critical CSS)?
Критический CSS — это минимальный набор стилей, необходимых для отображения верхней части страницы (above-the-fold) при первой загрузке. Он встраивается прямо в HTML (<style>), чтобы избежать задержек при рендеринге. Остальной CSS загружается асинхронно.
- Что такое ресет CSS и нормализация?
-
Reset CSSсбрасывает все стили браузера по умолчанию (например,margin: 0для всех элементов). - `Normalize.css — более щадящий подход, который сохраняет полезные стили, но делает их единообразными во всех браузерах.
- Как предотвратить мерцание текста при загрузке веб-шрифтов?
Используйте свойство
font-display:
-
Как минифицировать CSS? Используйте инструменты сборки (
Webpack,Vite,Gulp) с плагинами для минификации (например,cssnano). Вручную можно использовать онлайн-инструменты (CSS Minifier). -
Что такое CSS-линтеры и зачем они нужны? Линтеры (Stylelint) анализируют CSS-код на наличие ошибок, нарушений правил и несоответствий стилю кодирования. Они помогают поддерживать качество и единообразие кода в команде.
-
Как отлаживать CSS в браузере?
- Используйте Chrome DevTools (F12) → вкладка "Elements" → "Styles" для просмотра и редактирования стилей в реальном времени.
- Можете добавлять
outline: 1px solid red;для визуализации границ блоков. - Используйте вкладку "Computed" для просмотра итоговых значений стилей.
- Что такое Chrome DevTools и как им пользоваться для CSS? Это встроенный инструмент в Google Chrome. Для CSS он позволяет:
- Просматривать и редактировать стили.
- Включать/выключать свойства.
- Смотреть специфичность и наследование.
- Имитировать устройства для проверки адаптивности.
- Профилировать производительность рендеринга.
- Что лучше:
px,em, илиrem?
-
px— для фиксированных размеров (границы, тени). -
rem— для масштабируемых размеров (шрифты, отступы). -
em— для размеров, зависящих от родительского шрифта (используйте осторожно, редко).
- В чем разница между
display: noneиvisibility: hidden?
-
display: none;полностью удаляет элемент из потока документа (он не занимает места, как будто его нет). -
visibility: hidden;скрывает элемент визуально, но он продолжает занимать место в макете.
-
Какой подход лучше для центрирования в 2026 году? Flexbox и Grid — это современные и мощные инструменты. Используйте
display: flex;justify-content: center;align-items: center;илиdisplay: grid;place-items: center;. Это более читаемо и надежно, чем старые хитрости. -
Что такое CSS-архитектуры? Это системы и методологии для организации CSS-кода в больших проектах. Основные: OOCSS, SMACSS, ITCSS, Atomic CSS. Все они направлены на улучшение переиспользуемости и поддержки кода.
-
Какая разница между
inline CSS,internal CSS, иexternal CSS?
-
Inline CSS: Применяется только к одному элементу, максимальный приоритет, но плохо для поддержки. -
Internal CSS: В секции<head>, действует на всю страницу. Подходит для одного документа. -
External CSS: В отдельном файле, подключается через<link>. Рекомендуемый способ для масштабируемых проектов.
-
Что такое
CSS Container Queries? Контейнерные запросы позволяют стилизовать элементы на основе размера их родительского контейнера, а не размера всего окна браузера. Это делает компоненты более переиспользуемыми и независимыми. -
Что такое CSS
:has()селектор? Псевдокласс:has()позволяет выбрать родительский элемент, который содержит определенный дочерний элемент. Например,div:has(p)выберет всеdiv, которые содержатp. Это мощный инструмент для создания сложных стилей без JavaScript. -
Что такое CSS-сетки с использованием
subgrid?subgridпозволяет элементу сетки наследовать настройки строк или колонок от родительской сетки, обеспечивая идеальное выравнивание вложенных элементов. Это упрощает создание сложных, идеально выровненных макетов. -
Что такое CSS Nesting? Вложенность позволяет писать CSS-правила иерархически, повторяя структуру HTML. Например:
Это делает код более компактным и читаемым, особенно если вы привыкли к Sass.
- Какие новые цвета появились в CSS?
-
color: color(display-p3 1 0.5 0);— цвет в пространстве Display P3 (более широкая гамма). -
color: oklch(70% 0.2 30);— более предсказуемый цветовой формат для смешивания. -
color: lab(50% 40 30);— цвет в пространстве Lab.