Содержание

CSS

Какие значения бывают у свойства display? В чём их особенность?

	none — полностью скрывает элемент со страницы, не удаляя его при этом из HTML-разметки.
	block — элемент ведёт себя как блочный.
	inline-block — элемент ведёт себя как строчный.
	inline-block — элемент ведёт себя снаружи как строчный, а внутри как блочный.
	flex — элемент становится флекс-контейнером, ведёт себя как блочный, а вложенные элементы становятся флекс-элементами. Подробнее в Гайде по flexbox.
	grid — элемент становится грид-контейнером. Снаружи грид-контейнер ведёт себя как блок. Дочерние элементы такого контейнера начинают подчиняться правилам грид-раскладки.
	

Примеры позиционирования элементов внутри родительского блока, а также вложенных элементов, в зависимости от значения display:


display: inline
display: inline
display: block
display: block
display: flex
display: flex
display: inline-block
display: inline-block
display: inline-flex
display: inline-flex
display: inline-flex
display: inline-flex

Что делает свойство margin? Какие есть особенности у отрицательных значений? Что такое margin collapsing?

Margin - это отступ от границы текущего элемента до внутренней границы (border) его родительского элемента

Отрицательные margin-left/top сдвигают элемент влево-вверх. Остальные элементы это учитывают, в отличие от сдвига через position . Отрицательные margin-right/bottom заставляют другие элементы думать, что блок меньше по размеру справа-внизу, чем он на самом деле:

margin-left: -10px;margin-top: -70px;
margin-left: 30px;margin-bottom: -30px;

Margin collapsing - схлопывание маржинов. У блочных элементов расположенных рядом друг с другом по вертикали наблюдается эффект схлопывания, когда отступы не суммируются, а объединяются между собой. Само схлопывание действует на два и более блока (один может быть вложен внутрь другого) с отступами сверху или снизу, при этом примыкающие отступы комбинируются в один. Для отступов слева и справа схлопывание никогда не применяется.

Примеры схлопывания маржинов и результирующего позиционирования элементов относительно родительского блока и друг друга. Все блоки имеют отступы margin-top и margin-bottom 60px. Другие свойства указаны в таблицах для каждого рассматриваемого случая. Высота внутренних блоков 60px (равна маржину для более легкого визуального восприятия)

1
Свойство Родительский блок (черный) Первый вложенный блок (оранжевый) Второй вложенный блок (сиреневый)
display display: block display: block display: block
padding нет нет нет
border нет нет нет
Схлопывание маржинов Между родителем и первым дочерним - да, между дочерними - да
2
Свойство Родительский блок (черный) Первый вложенный блок (оранжевый) Второй вложенный блок (сиреневый)
display display: block display: block display: block
padding padding-top: 1px нет нет
border нет нет нет
Схлопывание маржинов Между родителем и первым дочерним - нет, между дочерними - да
3
Свойство Родительский блок (черный) Первый вложенный блок (оранжевый) Второй вложенный блок (сиреневый)
display display: block display: block display: block
padding нет нет нет
border border: 5px solid red; нет нет
Схлопывание маржинов Между родителем и первым дочерним - нет, между дочерними - да
4
Свойство Родительский блок (черный) Первый вложенный блок (оранжевый) Второй вложенный блок (сиреневый)
display display: flex; flex-direction: column block block
padding нет нет нет
border нет нет нет
Схлопывание маржинов Между родителем и первым дочерним - нет, между дочерними - нет
5
Свойство Родительский блок (черный) Первый вложенный блок (оранжевый) Второй вложенный блок (сиреневый)
display display: block display: block display: block
padding нет нет нет
border нет нет нет
float float: left нет нет
Схлопывание маржинов Между родителем и первым дочерним - нет, между дочерними - да
6
Свойство Родительский блок (черный) Первый вложенный блок (оранжевый) Второй вложенный блок (сиреневый)
display display: block display: inline-block display: inline-block
padding нет нет нет
border нет нет нет
Схлопывание маржинов Между родителем и первым дочерним - нет, между дочерними - не применимо

Что делает свойство vertical-align? Какие у него есть значения?

Свойство для выравнивания строчного или строчно-блочного элемента по вертикали

vertical-align: baseline vertical-align: middle

vertical-align: top vertical-align: text-top

vertical-align: bottom vertical-align: text-bottom

vertical-align: sub vertical-align: super

vertical-align baseline middle vertical-align

vertical-align top text-top super vertical-align

vertical-align bottom sub text-bottom

Помимо ключевых слов можно использовать числовые значения. Если указать значение в любых доступных единицах измерения, то положительное значение сдвинет элемент вверх относительно базовой линии, а отрицательно — вниз. Если указать числовое значение в процентах, то за 0% берётся нижняя граница текста без выносных элементов. То есть аналогично baseline. Процент рассчитывается от line-height родительского элемента.

Что делает свойство float? Почему родитель элемента с float может схлопываться?

Это родитель элемента с float. Он схлопнулся
это блок ниже блока, содержащего картинку с float
Этот блок еще ниже
Это родитель элемента с float, и ему задано свойство display: flow-root
это блок ниже блока, содержащего картинку с float
Этот блок еще ниже
Это родитель элемента с float, и ему задано свойство overflow: hidden;
это блок ниже блока, содержащего картинку с float
Этот блок еще ниже

Что делает свойство position?

Свойство position задаёт способ позиционирования элемента в документе. Совместно со свойствами left, right, top, bottom элементу задаётся его местоположение на странице.

Какие элементы называют позиционированными?

Это элементы со значением свойства Position, отличным от Static

Относительно чего происходит позиционирование элементов при разных значениях свойства position?

Что делает свойство z-index?

Свойство z-index позволяет управлять порядком наложения элементов друг на друга.

Контекст наложения

Контекст наложения — это концепция трёхмерного расположения элементов по оси z относительно пользователя, смотрящего на экран.

Как влияет на расположение элементов с заданным значением z-index?

Родитель, задающий контекст наложения (position: relative;z-index: 0)
Позиционированный элемент, z-index: -1;
Элемент без контекста наложения с display: block
Позиционированный элемент, z-index: 0;
Позиционированный элемент, z-index: 1;
Элемент без контекста наложения с display: inline
Элемент без контекста наложения с opacity: 0.9
Элемент без контекста наложения с float: left

Какие свойства создают новый контекст наложения?

Flex контейнер
Контейнер с opacity
Контейнер с transform

Flex

Что такое flexbox?

CSS flexbox (Flexible Box Layout Module) — модуль макета гибкого контейнера — представляет собой способ компоновки элементов, в основе лежит идея оси. Flexbox состоит из гибкого контейнера (flex container) и гибких элементов (flex items). Гибкие элементы могут выстраиваться в строку или столбик, а оставшееся свободное пространство распределяется между ними различными способами.

Существует ли инлайновый flexbox?

Да, display: inline-flex

Что такое flex-container и flex-items?

Флекс-контейнер: элемент, к которому применяется свойство display: flex или display: inline-display: flex. Вложенные в него элементы подчиняются правилам раскладки флексов.

Флекс-элемент: элемент, вложенный во флекс-контейнер.

Как выравнивать элементы с помощью flexbox?

При помощи свойств flex-контейнера и flex-элементов

Принципы работы flex-grow, flex-shrink. Каким образом рассчитывается занимаемое и свободное пространство при использовании этих свойств?

flex-grow - задает пропорцию, в которой элемент занимает свободное пространство в flex-контейнере по сравнению с другими элементами. Положительное целое или дробное число, устанавливающее коэффициент роста flex-элемента. Значение по умолчанию 0 (не расширяется).

flex-shrink - задает пропорцию, в которой элемент сжимается (уступает свою ширину) по сравнению с другими элементами в flex-контейнере. Положительное целое или дробное число, устанавливающее коэффициент уменьшения flex-элемента. Значение по умолчанию 1(не сжимается)

Формула для расчета ширины, на которую уменьшается flex-элемент:


			разница между шириной                                                                    на сколько нужно 
			flex-контейнера и общей  *  flex-shrink  * ширина          /  ширина flex-контейнера =    уменьшить ширину 
			шириной flex-элементов      элемента       flex-элемента                                  flex-элемента

		

Рамки

Внешние рамки (outline)

В чем отличие от обычных рамок?

Тени

Что делает свойство text-shadow

Свойство text-shadow даёт возможность добавить тень буквам в тексте.

это текст с двумя тенями

Что делает свойство box-shadow? Как им пользоваться?

Как сделать так, чтобы у одного элемента было несколько теней?

Перечислить их через запятую в свойстве text-shadow или box-shadow

Есть ли возможность задавать параметры теней отдельно (например, задать отдельно цвет или размер тени)?

Нет

Фоны

background-image задаёт элементу фоновую картинку или градиент. Синтаксис: background-image: url("background.png") или background-image: linear-gradient(red, yellow, green);

background-position управляет положением фоновой картинки внутри элемента. Синтаксис: background-position: 100% 100% или background-position: center bottom или background-position: 10px 150px. Для этого свойства проценты рассчитываются необычным для CSS образом: от разницы между размером элемента и размером самой фоновой картинки, т.е. от свободного места. Ключевые слова можно указывать в любом порядке. В остальных случаях первая величина — это позиция по горизонтали, а вторая, если есть — по вертикали. Значение по умолчанию — 0% 0% (левый верхний угол). Если указано только одно значение, то второе подставляется автоматически и равняется 50%. То есть значение 100% расположит картинку по центру правого края.

background-size - позволяет изменять размер фонового изображения. Синтаксис: background-size: 100% 100%

background-repeat - управляет тем, будет ли повторяться фоновое изображение. По умолчанию значение у этого свойства repeat. Значит фоновая картинка будет повторяться по вертикали и по горизонтали

background-origin - определяет какие области блока будет занимать фоновая картинка: все области, включая рамку, внутренний отступ и контент или только контент. Не влияет на background-color

background-clip - определяет, в каких областях будет находиться фоновая картинка и фоновый цвет блока.

background-attachment - определяет будет ли фон прокручиваться вместе со страницей или будет зафиксирован на одном месте. Часто используется для создания так называемого эффекта параллакса

background-color - для задания цвета фона элемента

Градиенты

Что делает функция linear-gradient? Как ей пользоваться?

Используется для задания фона в виде линейного градиента. Градиент — это плавный переход между цветами. Линейный градиент описывает изменение цвета вдоль прямой линии. В отличие от фоновых изображений градиент не может иметь конкретных размеров и его фактический размер совпадает с размером элемента.

	Синтаксис:
	background-image: linear-gradient(угол_поворота_оси, цвет точка_останова точка_останова, цвет точка_останова точка_останова (сколько угодно цветов))

	Угол поворота оси: если указан, тогда линия, вдоль которой строится градиент, повернётся на нужный угол.
	Единица измерения - deg или turn

	Точка останова:  в начальной точке заканчивается плавный переход из предыдущего цвета. 
	Конечная точка — это точка, с которой начинается плавный переход в следующий цвет.
	

background-image: linear-gradient(45deg, yellow, purple, white, black);

background-image: linear-gradient(yellow 10%, purple 30% 50%, green 50%, black);

background-image: repeating-linear-gradient(rgb(238, 238, 117) 10%, rgb(235, 155, 235) 20%, rgb(238, 238, 117) 30%);

Что делает функция radial-gradient? Как ей пользоваться?

Используется для задания фона в виде радиального (кругового, эллиптического) градиента. Радиальный градиент — это переход, который начинается в точке и расходится от неё подобно кругам на воде. Радиальный градиент не обязательно должен быть круговым. Форма по умолчанию — это эллипс, который заполняет всю площадь элемента.

	Синтаксис:
	background-image: radial-gradient(размер положение_центра, форма, цвет, цвет, (сколько угодно цветов) );

	Размер:
		closest-side — градиент имеет такую форму, что заканчивается у ближайшей к центру границы элемента;
		farthest-side — градиент заканчивается у дальней от центра границы элемента;
		closest-corner — форма градиента подбирается таким образом, чтобы его край проходил через ближайший к центру угол;
		farthest-corner — край градиента будет проходить через дальний от центра угол.
	Положение центра:
		at left
		at top
		at right
		at bottom
		at center
		at top left
		at 20% 50%
		at 130px 500px
		и т.д.
	Форма: circle, ellipse (по умолчанию). Размер и положение центра совместимы только с ellipse (они не работают, если одновременно указана форма градиента,
	т.е. работают только для значения формы по умолчанию)
	

background-image: radial-gradient(circle, yellow, purple, white, black);

background-image: radial-gradient(at 20% 40%, yellow, purple, white, black);

background-image: radial-gradient(at top, yellow, purple, white, black);

background-image: radial-gradient(closest-corner at 40% 20%, yellow, purple, white, black);

background-image: repeating-radial-gradient(closest-side at 40% 20%, yellow, purple);

Анимации

Что такое @keyframes? Зачем нужно? Как им пользоваться?

Первый этап создания CSS-анимации — это определение ключевых кадров. В ключевом кадре определяется вид той или иной сцены. Таких кадров может быть множество. Когда анимация воспроизводится, браузер двигается от одного ключевого кадра ко второму и прорисовывает промежуточные значения между ними. Яркий пример подобной прорисовки — анимация через transition, где вы предоставляете два ключевых кадра (начальный и конечный стили), а браузер берет на себя работу по просчету промежуточных фаз. Ключевые кадры позволяют создавать большее количество стилей, а не ограничиваться двумя.

Для записи ключевых кадров используется специальное правило @keyframes. В каждом ключевом кадре необходимо разместить те свойства, которые должны применяться к элементу в заданный момент времени.

Структура правила выглядит следующим образом:

 
	@keyframes animationName {
	from {
	/* Список CSS-свойств */
	}
	to {
	/* Список CSS-свойств */
	}
	}	

Сначала мы объявляем правило с помощью слова @keyframes, после чего указываем название анимации (имя может быть произвольным, но при этом желательно сделать его информативным). Следом, в фигурных скобках записываем ключевые кадры (минимум два). В нашем примере первый кадр начинается ключевым словом from, а второй — словом to. После этого ставятся фигурные скобки, в которых записываются необходимые CSS-свойства в привычном нам формате. Другими словами, каждый ключевой кадр имеет вид обычного стиля CSS, состоящего из набора свойств.

Представим, что мы хотим создать примитивную двухкадровую анимацию, в которой один цвет фона (красный) меняется на другой (зеленый). Мы запишем правило в таком виде:

	
	@keyframes changeBackgroundColor {
	from {
	background-color: red;
	}
	to {
	background-color: green;
	}
	}

Но это самый простой пример. Как мы уже говорили, можно создавать более двух ключевых кадров, что гораздо более интересно. Давайте модифицируем наш пример, добавив еще один ключевой кадр в середину анимации, чтобы фоновый цвет сначала менялся с красного на желтый, а затем с желтого на зеленый:


	@keyframes changeBackgroundColor {
	from {
	background-color: red;
	}
	50% {
	background-color: yellow;
	}
	to {
	background-color: green;
	}
	}

Запись 50% означает, что фон станет желтым ровно в середине анимации. По такому принципу можно добавлять сколько угодно ключевых кадров — просто используйте необходимое число в процентах (30%, 60%, 75% и так далее). Позже, когда будет задана длительность анимации, станет понятно, сколько времени пройдет до появления желтого цвета. К примеру, если вы установите длительность в размере 6 секунд, то желтый цвет фона появится через 3 секунды после старта анимации.

Разумеется, можно указывать в одном кадре несколько CSS-свойств. Например, чтобы сместить наш элемент вниз на 50 пикселей к середине анимации, и еще на 50 пикселей — к концу анимации, следует записать:

	
	@keyframes changeBackgroundColor {
	from {
	background-color: red;
	}
	50% {
	background-color: yellow;
	transform: translateY(50px);
	}
	to {
	background-color: green;
	transform: translateY(100px);
	}
	}

Еще более интересно то, что можно создавать паузы в анимации, записывая один набор свойств для нескольких ключевых кадров сразу. Например, чтобы красный цвет сменился на желтый к 33% от длительности анимации, а переход от желтого к зеленому начался после 66%, запишите следующее:


	@keyframes changeBackgroundColor {
	from {
	background-color: red;
	}
	33%, 66% {
	background-color: yellow;
	transform: translateY(50px);
	}
	to {
	background-color: green;
	transform: translateY(100px);
	}
	}

Таким образом мы создадим эффект паузы на временном отрезке с 33% до 66%.

Ключевые слова from и to равнозначны процентным записям 0% и 100% соответственно. Вам не обязательно начинать анимацию с 0% и заканчивать на 100%. Ее можно запускать позже и завершать раньше, при этом добиваясь интересных эффектов.

Можно ли задать несколько анимаций для элемента?

Можно, через запятую:

		animation:
		circle-to-square 10s infinite alternate ease-out 1s,
		color-change 5s alternate linear infinite;
	

Animation
Transition

Трансформации

Что делает свойство transform? Какие значения ему можно задавать?

Свойство transform используем, когда нам нужно применить к элементу какие-либо трансформации: смещение, масштабирование, искажение, поворот. Нельзя трансформировать строчные и табличные элементы.

transform: translateX(10px)
transform: translateY(10px)
transform: translate(10px, 10px)
transform: scaleX(0.5)
transform: scaleY(0.5)
transform: scale(0.5, 0.5)
transform: skewX(30deg)
transform: skewY(30deg)
transform: rotateX(30deg)
transform: rotateY(30deg)
transform: rotateZ(30deg)

Можно ли задать несколько трансформаций для элемента?

Можно, через пробел, без запятой: transform: rotateZ(30deg) translateX(50px);

transform: rotateZ(30deg) translateX(50px)

Изменяется ли положение координатной плоскости при трансформациях?

Нет

Единицы измерения

Как рассчитываются width и height заданные в процентах?

Width: ширина в процентах рассчитывается от ширины родительского элемента. Если родительский элемент ограничен по ширине, к примеру, 450 пикселями, то у вложенного элемента ширина в 100% будет равна 450 пикселям. То есть 100% от родительского элемента. Если при этом у родителя будут также указаны внутренние отступы (padding), то 100% ширины для ребёнка будут равны 450px минус боковые отступы.

Height: процент рассчитывается относительно высоты родительского блока. Если высота родительского блока не указана явно (то есть зависит от высоты содержимого) и этот элемент не является абсолютно позиционированным, значение вычисляется как auto. Для абсолютно позиционированных элементов процент вычисляется с учетом высоты области отступов padding содержащего блока.

Как рассчитываются padding и margin заданные в процентах?

% от ширины блока. Верхние и нижние поля тоже вычисляются относительно ширины элемента

Как рассчитывается line-height заданный в процентах?

это процент, умноженный на вычисленный размер шрифта элемента

Как пользоваться vh, vw, vmin, vmax

		vh
		Размер указывается в процентах от высоты вьюпорта (viewport height). 100vh соответствует полной высоте вьюпорта. 1vh = 1% высоты вьюпорта.

		vw
		Размер в процентах от ширины вьюпорта (viewport width). 100vw соответствует полной ширине вьюпорта. 1vw = 1% ширины вьюпорта.
		
		vmin
		Размер в процентах от меньшей размерности вьюпорта. Если высота меньше ширины (например, горизонтальная ориентация телефона), то расчёт будет вестись относительно высоты.

		vmax
		Размер в процентах от большей размерности вьюпорта. Если высота больше ширины (например, нормальная ориентация телефона), то расчёт будет вестись относительно высоты.
		

Что делает свойство object-fit

Свойство, которое позволяет управлять тем, как картинка <img> или видео <video> будет подстраиваться под заданные размеры. По своему поведению очень похоже на свойство background-size для фоновых изображений. Работает только если картинке задан хотя бы один размер: ширина или высота. Иначе браузер не понимает в какую область нужно вписать картинку.

Возможные значения:

		fill — картинка полностью вписывается в указанные размеры без соблюдения собственных пропорций. Часто это приводит к ощутимым деформациям.
		contain — картинка подстроится под заданные размеры так, чтобы поместиться внутри целиком без нарушения пропорций.
		cover — картинка без нарушения пропорций заполнит всю доступную область, обрезая всё ненужное.
		none — значение по умолчанию, картинка отображается без изменения пропорций или размеров.
		scale-down — браузер сравнивает размеры картинки со значением none и со значением contain и выбирает одно из этих значений, деформируя картинку соответствующим образом.
		

Object-fit хорошо комбинируется с Object-position, которое, в свою очередь, без Object-fit не работает. Свойство Object-position спозиционирует изображение относительно размера, заданного в разметке. По применению и доступным значениям свойство похоже на background-position. Оно может принимать как значения в единицах измерения (пикселях, процентах и т. д.), так и с указанием расположения относительно границы элемента — bottom, top, center, left или right. Кроме того, как и в background-position, мы можем указать значения отдельно по вертикали и по горизонтали — первое значение обозначает ось x, второе — ось y. По умолчанию свойство позиционирует контент по центру элемента.

Как стилизовать чекбокс?


			// HTML

		// все заворачиваем в label
		<label class="checklist__cat">
		
			// чекбокс, который будет скрыт
			<input class="checklist__cat-checkbox" type="checkbox">

			// span, который выполняет роль стилизованного чекбокса	
			<span class="checklist__cat-checkmark"></span>

		// подпись
			Можно курить
		</label>


			// CSS

		// скрываем чекбокс
		.checklist__cat-checkbox {
			position: absolute;
			clip: rect(0 0 0 0);
			width: 1px;
			height: 1px;
			margin: -1px;
		}
		
		// стилизуем span
		.checklist__cat-checkmark {
			border: 1px solid gray;
			width: 18px;
			height: 18px;
			border-radius: 5px;
			display: inline-block;
			background-color: white;
			box-sizing: border-box;
		}
		
		//стили для span при состоянии checked чекбокса 
		.checklist__cat-checkbox:checked + .checklist__cat-checkmark,
		.checklist__cat-checkbox:checked:focus + .checklist__cat-checkmark {
			border: 2px solid rgb(148, 110, 238);
			background-image: url("tip.svg");
			background-position-y: 42%;
			background-position-x: 40%;
			background-repeat: no-repeat;
		}
		

Способ 1: CSS Flexbox

Оборачиваем всю страницу в блок, делаем его флекс-контейнером, внутрь вкладываем хэдер, мейн и футер. Родителю задаём flex-direction: column чтобы блоки встали друг под другом, а не в ряд, и min-height: 100vh, чтобы он занимал как минимум всю высоту экрана. Мейну задаём flex-grow: 1, и вуаля! Центральный блок страницы будет всегда растягиваться на всё доступное свободное пространство. Из-за этого футер всегда будет прижиматься к нижнему краю страницы. При этом, если контента в мейне будет больше чем на один экран, то он растянется и подстроится, ничего не сломается.

Способ 2: Grid Layout

Тег <body> содержит три элемента: шапку, область контента и подвал. Стили требуются только для <body>:


body {
	min-height: 100vh; 
	display: grid; 
	grid-template-rows: auto 1fr auto; 
	box-sizing: border-box; 
	margin: 0;
}
Т.е. <body> устанавливаем минимальное отображение высотой в один экран, отображаем элементы внутри контейнера как сетку, задаём параметры ширины у элементов внутри контейнера. Всё, это весь основной код. Дополнительно сбрасываем стандартный маржин и устанавливаем box-sizing: border-box - это позволит избежать появления вертикального скролла, когда элементам заданы бордеры (хотя бы при этом высота содержимого помещается на экране и необходимости в вертикальном скролле нет) Посмотреть демо

Как отцентровать элемент по горизонтали (назвать хотя бы три способа)?

Способ 1

Способ 2

Ограничив ширину блочного элемента, можно очень просто выровнять его по центру экрана. Для этого пропишем внешний отступ (margin) со значениями 0 auto, где 0 отвечает за отступы сверху и снизу, а ключевое слово auto — за боковые отступы. Именно таким образом принято выравнивать контент сайта по центру окна браузера.

Способ 3

Fuga, voluptatum dolores a tenetur, fugiat dignissimos ex, nihil libero sit assumenda debitis reiciendis nobis

Как отцентровать элемент по вертикали (назвать хотя бы три способа)?

Способ 1

Способ 2

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptatum dolores a tenetur, fugiat dignissimos ex, nihil libero sit assumenda debitis reiciendis nobis saepe delectus totam rerum animi temporibus harum.Lorem, ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptatum dolores a tenetur, fugiat dignissimos ex, nihil libero sit assumenda debitis reiciendis nobis saepe delectus totam rerum animi temporibus harum.Lorem, ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptatum dolores a tenetur, fugiat dignissimos ex, nihil libero sit assumenda debitis reiciendis nobis saepe delectus totam rerum animi temporibus harum.Lorem, ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptatum dolores a tenetur, fugiat dignissimos ex, nihil libero sit assumenda debitis reiciendis nobis

Способ 3

Fuga, voluptatum dolores a tenetur, fugiat dignissimos ex, nihil libero sit assumenda debitis reiciendis nobis

Что такое media-queries

Директива, которая помогает применять разные стили для разных параметров экрана — ширины, высоты, ориентации и даже типа устройства.

Чем отличаются responsive, adaptive, liquid

Responsive: характеризуется наличием определенных макетов для различных разрешений. Внутри каждого макета дизайн является плавным и меняет ширину элементов относительно изменяющегося размера окна. Вы можете думать о Responsive как о серии макетов Liquid.

Adaptive: характерно наличие определенных макетов для разных разрешений. В каждом макете изменение размера окна не приводит к изменению макета. Вы можете думать об Adaptive как о серии Static макетов.

Liquid: характеризуется масштабированием ширины частей дизайна относительно окна. Он имеет тенденцию выходить из строя, когда окно намного меньше или намного больше, чем оно было изначально спроектировано.

Static: это традиционный веб-сайт: один дизайн находится в центре страницы и требует горизонтальной прокрутки, если окно слишком маленькое для него. Сайты M dot являются традиционным ответом на это, предоставляя полностью отдельный сайт для более низкого разрешения - и всю работу по созданию отдельного сайта.

Какие есть типы селекторов (по тегу, по классу и далее)?

Как работают приоритеты селекторов? Какие есть 4 вида возможных отношений?

Ключевое слово !important отменяет правила приоритета