
В этой серии заданий вы попрактикуетесь в использовании `position: fixed`. Фиксированное позиционирование изымает элемент из обычного потока документа и размещает его относительно окна браузера (viewport). Это означает, что элемент останется на одном и том же месте экрана, даже если страница прокручивается. Вы будете заполнять пропуски в CSS коде, чтобы зафиксировать элементы в различных частях экрана, управлять их положением с помощью свойств смещения (`top`, `right`, `bottom`, `left`) и разбираться со слоями с помощью `z-index`. Задания построены от простого закрепления элемента до создания фиксированных панелей и управления их взаимодействием с остальным контентом.
- Модуль 1: Основы CSS
- Селекторы элементов.
- Селекторы классов и идентификаторов.
- Цвет текста и фона.
- Размеры и единицы измерения в CSS.
- Семейство шрифта и базовые свойства текста.
- Стилизация текста (жирный, курсив, подчеркивание).
- Выравнивание и интервалы текста.
- Комбинированные селекторы.
- Псевдоклассы для ссылок.
- Приоритеты стилей и каскадность.
- Наследование в CSS.
- Модуль 2: Блочная модель и позиционирование
- Блочная модель CSS (box model).
- Внутренние отступы (padding).
- Внешние отступы (margin).
- Границы элементов (border).
- Сокращенная запись свойств границ.
- Радиус скругления углов (border-radius).
- Свойство display и его значения.
- Блочные элементы (display: block).
- Строчные элементы (display: inline).
- Строчно-блочные элементы (display: inline-block).
- Скрытие элементов (display: none, visibility: hidden).
- Статичное позиционирование (position: static).
- Относительное позиционирование (position: relative).
- Абсолютное позиционирование (position: absolute).
- Фиксированное позиционирование (position: fixed).
- Липкое позиционирование (position: sticky).
- Свойство z-index и порядок наложения элементов.
- Свойство float и его применение.
- Свойство clear для обтекания.
- Центрирование элементов различными способами.
- Модуль 3: Селекторы CSS продвинутый уровень
- Групповые селекторы.
- Селекторы потомков (descendant selectors).
- Дочерние селекторы (child selectors).
- Соседние селекторы (adjacent sibling selectors).
- Общие сиблинги (general sibling selectors).
- Селекторы атрибутов: точное совпадение.
- Селекторы атрибутов: частичное совпадение.
- Псевдоклассы состояний (:hover, :active, :focus, :visited).
- Псевдоклассы для форм (:checked, :disabled, :required).
- Структурные псевдоклассы (:first-child, :last-child).
- Псевдоклассы :nth-child() и :nth-of-type().
- Псевдоклассы :not() и :empty.
- Псевдоэлементы ::before и ::after.
- Псевдоэлементы ::first-letter и ::first-line.
- Псевдоэлемент ::selection.
- Псевдоэлемент ::placeholder.
- Комбинирование псевдоклассов и псевдоэлементов.
- Создание декоративных элементов с помощью псевдоэлементов.
- Модуль 4: Работа с фоном и визуальными эффектами
- Фоновый цвет (background-color).
- Фоновое изображение (background-image).
- Повторение фона (background-repeat).
- Позиционирование фона (background-position).
- Размер фона (background-size).
- Фиксация фона (background-attachment).
- Сокращенная запись свойств фона.
- Множественные фоновые изображения.
- Линейные градиенты (linear-gradient).
- Радиальные градиенты (radial-gradient).
- Конические градиенты (conic-gradient).
- Тень блока (box-shadow).
- Тень текста (text-shadow).
- Прозрачность (opacity).
- Фильтры (filter: blur, grayscale, etc.).
- Режимы смешивания (mix-blend-mode, background-blend-mode).
- Маски с mask-image.
- Формы с clip-path.
- Модуль 5: Типографика продвинутый уровень
- Межстрочное расстояние (line-height).
- Интервалы между буквами (letter-spacing).
- Интервалы между словами (word-spacing).
- Трансформация текста (text-transform).
- Декорирование текста (text-decoration).
- Перенос слов (word-break, overflow-wrap).
- Управление пробелами (white-space).
- Многоколоночный текст (columns).
- Обрезка текста (text-overflow, ellipsis).
- Вертикальное выравнивание текста (vertical-align).
- Направление текста (direction, writing-mode).
- Веб-шрифты и @font-face.
- Модуль 6: Flexbox
- Введение в Flexbox.
- Включение Flexbox (display: flex).
- Flex-контейнер и flex-direction.
- Выравнивание с justify-content.
- Выравнивание с align-items.
- Выравнивание с align-content.
- Свойство align-self для отдельных элементов.
- Свойство flex-wrap.
- Свойство flex-flow (сокращение для direction и wrap).
- Свойство flex-grow.
- Свойство flex-shrink.
- Свойство flex-basis.
- Сокращенное свойство flex.
- Порядок элементов с order.
- Сложные макеты на Flexbox.
- Вложенные flex-контейнеры.
- Создание адаптивной навигационной панели с Flexbox.
- Модуль 7: CSS Grid Layout
- Введение в Grid Layout.
- Включение Grid Layout (display: grid).
- Создание сетки: grid-template-columns.
- Создание сетки: grid-template-rows.
- Единица измерения fr.
- Функция repeat().
- Промежутки с gap, row-gap, column-gap.
- Размещение элементов: grid-column.
- Размещение элементов: grid-row.
- Сокращенная запись grid-area.
- Именованные линии и области.
- Свойство grid-template-areas.
- Автоматическое размещение элементов.
- Автоматические треки (grid-auto-rows, grid-auto-columns).
- Управление потоком элементов (grid-auto-flow).
- Выравнивание в Grid: justify-items и align-items.
- Выравнивание в Grid: justify-content и align-content.
- Выравнивание отдельного элемента (justify-self, align-self).
- Сложные макеты на Grid.
- Комбинирование Grid и Flexbox.
- Модуль 8: Трансформации и переходы
- Трансформации: translate.
- Трансформации: scale.
- Трансформации: rotate.
- Трансформации: skew.
- Комбинирование трансформаций.
- Точка трансформации с transform-origin.
- 3D-трансформации и перспектива.
- Переходы с transition-property.
- Длительность перехода с transition-duration.
- Функции плавности с transition-timing-function.
- Задержка с transition-delay.
- Сокращенное свойство transition.
- Переходы для нескольких свойств.
- Создание интерактивных элементов с переходами.
- Производительность трансформаций и переходов.
- Модуль 9: Анимации
- Создание keyframes.
- Свойство animation-name.
- Свойство animation-duration.
- Свойство animation-timing-function.
- Свойство animation-delay.
- Свойство animation-iteration-count.
- Свойство animation-direction.
- Свойство animation-fill-mode.
- Свойство animation-play-state.
- Сокращенное свойство animation.
- Множественные анимации.
- Создание сложных анимаций.
- Анимации с использованием переменных.
- Оптимизация производительности анимаций.
- Анимации и доступность.
- Модуль 10: Адаптивный дизайн
- Относительные единицы измерения (%, em, rem).
- Единицы vh и vw.
- Медиа-запросы: основы.
- Медиа-запросы: max-width и min-width.
- Медиа-запросы: ориентация устройства.
- Медиа-запросы: типы устройств и медиа-функции.
- Mobile-first подход.
- Адаптивные изображения.
- Элемент picture и атрибуты srcset/sizes.
- Адаптивная типографика.
- Адаптивная навигация.
- Адаптивные таблицы.
- Адаптивные формы.
- Отзывчивые медиа (видео, iframe).
- Тестирование адаптивности.
- Модуль 11: Формы и CSS
- Базовая стилизация input и button.
- Стилизация textarea.
- Стилизация состояний форм (:focus, :valid, :invalid).
- Стилизация placeholder.
- Кастомизация radio и checkbox с помощью CSS.
- Стилизация select и option.
- Создание кастомных выпадающих списков.
- Стилизация range input.
- Стилизация file input.
- Валидация форм и стилизация сообщений об ошибках.
- Модуль 12: Современные возможности CSS
- Переменные CSS (Custom Properties).
- Область видимости переменных.
- Функция calc().
- Свойство object-fit для изображений.
- Свойство object-position.
- Scroll Snap.
- Контейнерные запросы (Container Queries).
- Подсеточные элементы (Subgrid).
- Логические свойства (logical properties).
- CSS Houdini (введение).
- Feature Queries (@supports).
- Новые селекторы CSS (is(), where(), has()).
- Модуль 13: Практические проекты
- Создание адаптивной навигационной панели.
- Создание карточек товаров.
- Создание слайдера изображений на CSS.
- Создание табов.
- Создание дропдаун-меню.
- Создание галереи изображений с фильтрами.
- Создание анимированных иконок.
- Создание адаптивного лендинга.
- Создание тёмной темы с CSS-переменными.
- Создание анимированных кнопок.
- Создание анимированных форм.
- Создание сетки изображений с hover-эффектами.
- Создание адаптивного футера.
- Создание макета блога на CSS Grid.
- Создание адаптивного дашборда.
- Создание интерактивной формы с анимациями.
- Создание CSS-арта.
Простое фиксирование элемента
Ваша задача - сделать так, чтобы синий блок оставался неподвижным в верхнем левом углу экрана при прокрутке страницы. Для этого нужно применить правильное значение позиционирования.
.fixed-box {
background-color: #3498db;
color: white;
padding: 15px;
width: 150px;
height: 100px;
/* --- Задание --- */
input1: fixed;
top: 10px;
left: 10px;
}
<div class="fixed-box">
Фиксированный блок
</div>
<p>Прокрутите страницу вниз, чтобы увидеть эффект.</p>
<p>Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
Фиксирование в правом нижнем углу
Теперь зафиксируйте зеленый блок в правом нижнем углу экрана. Вам нужно использовать свойства позиционирования и указать правильные свойства смещения.
.fixed-box-bottom-right {
background-color: #2ecc71;
color: white;
padding: 10px;
width: 100px;
height: 50px;
/* --- Задание --- */
position: input1;
input2: 15px;
input3: 15px;
}
<div class="fixed-box-bottom-right">
Внизу справа
</div>
<p>Прокрутите страницу, чтобы убедиться, что блок остается на месте.</p>
<p> Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
Фиксированная шапка (Header)
Создайте фиксированную шапку страницы. Она должна быть прикреплена к верху экрана и растягиваться на всю его ширину.
header {
background-color: #9b59b6;
color: white;
padding: 10px 0;
text-align: center;
/* --- Задание --- */
input1: fixed;
input2: 0;
input3: 0;
input4: 0;
/* Добавим z-index, чтобы шапка была поверх контента */
z-index: 100;
}
body {
/* Добавим отступ сверху, чтобы контент не залезал под шапку */
padding-top: 50px;
}
<header>
Фиксированная шапка
</header>
<main>
<p>Прокрутите страницу вниз.</p>
<p> Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
</main>
Фиксированный подвал (Footer)
Создайте фиксированный подвал страницы. Он должен быть прикреплен к низу экрана и растягиваться на всю его ширину.
Управление наложением: z-index
У вас есть два фиксированных блока. Один должен быть всегда поверх другого. Используйте свойство `z-index`, чтобы управлять порядком их наложения.
.box {
width: 120px;
height: 120px;
color: white;
display: flex;
align-items: center;
justify-content: center;
position: fixed; /* Оба блока фиксированы */
}
.box-1 {
background-color: #e74c3c;
top: 20px;
left: 20px;
/* --- Задание: Сделать этот блок нижним --- */
input1: 1;
}
.box-2 {
background-color: #f1c40f;
top: 70px;
left: 70px;
/* --- Задание: Сделать этот блок верхним --- */
input2: 2;
}
<div class="box box-1">
Блок 1 (Нижний)
</div>
<div class="box box-2">
Блок 2 (Верхний)
</div>
<p>Прокрутите страницу, если нужно.</p>
<p>Lorem ipsum dolor sit amet...</p>
<p>Consectetur adipiscing elit...</p>
<p>Sed do eiusmod tempor...</p>
<p>Incididunt ut labore et dolore...</p>
<p>Magna aliqua...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p>
Фиксированная кнопка 'Наверх'
Создайте круглую кнопку с иконкой стрелки вверх, которая будет зафиксирована в правом нижнем углу экрана. Используйте подходящие свойства для позиционирования.
.back-to-top {
background-color: #1abc9c;
color: white;
width: 50px;
height: 50px;
border-radius: 50%; /* Делает кнопку круглой */
display: flex;
align-items: center;
justify-content: center;
text-decoration: none;
font-size: 24px;
/* --- Задание --- */
input1: fixed;
input2: 20px;
input3: 20px;
z-index: 100; /* Чтобы кнопка была поверх */
}
body {
min-height: 150vh; /* Просто чтобы была прокрутка */
}
<a href="#" class="back-to-top">
↑ <!-- Стрелка вверх -->
</a>
<p>Прокрутите страницу вниз, чтобы увидеть кнопку.</p>
<p> Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
Фиксированное уведомление сверху
Создайте полосу уведомления, которая фиксируется у верхнего края экрана. Она должна быть видна поверх остального контента.
.notification-bar {
background-color: #e67e22;
color: white;
padding: 8px 15px;
text-align: center;
/* --- Задание --- */
input1: fixed;
input2: 0;
input3: 0;
input4: 0;
input5: 101; /* Больше, чем у шапки, если она есть */
}
body {
padding-top: 40px; /* Отступ для контента */
}
<div class="notification-bar">
Это важное уведомление!
</div>
<main>
<p>Прокрутите страницу.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<p>Ut enim ad minim veniam.</p>
<p>Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
</main>
Фиксированная боковая панель (Sidebar)
Создайте простую фиксированную боковую панель слева. Она должна занимать всю высоту экрана.
.sidebar {
background-color: #bdc3c7;
width: 100px; /* Ширина панели */
padding: 20px;
color: #2c3e50;
/* --- Задание --- */
input1: fixed;
input2: 0;
input3: 0;
input4: 0;
z-index: 50;
}
.main-content {
/* Добавим отступ слева, чтобы контент не залезал под панель */
margin-left: 140px; /* Ширина панели + отступ */
padding: 10px;
}
<div class="sidebar">
Боковая панель
<ul>
<li>Меню 1</li>
<li>Меню 2</li>
<li>Меню 3</li>
</ul>
</div>
<div class="main-content">
<p>Прокрутите страницу.</p>
<p> Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
</div>
Фиксированный элемент с изображением
Зафиксируйте блок с изображением в левом верхнем углу. Изображение уже добавлено в HTML.
.fixed-image-container {
background-color: rgba(255, 255, 255, 0.8);
padding: 5px;
border: 1px solid #ccc;
/* --- Задание --- */
input1: fixed;
input2: 5px;
input3: 5px;
z-index: 10;
}
.fixed-image-container img {
display: block; /* Убирает лишний отступ под изображением */
width: 80px; /* Уменьшим размер для примера */
height: auto;
}
<div class="fixed-image-container">
<img src="https://naytikurs.ru/img/7.png" alt="Fixed Image">
</div>
<p>Прокрутите страницу.</p>
<p> Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект. Прокрутите страницу вниз, чтобы увидеть эффект.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
Предотвращение наложения контента под шапку
У вас есть фиксированная шапка, но основной контент страницы начинается под ней. Добавьте необходимое свойство к `body` или основному контейнеру, чтобы контент начинался ниже шапки.
header {
position: fixed; /* Шапка уже фиксирована */
top: 0;
left: 0;
right: 0;
height: 60px; /* Высота шапки */
background-color: #3498db;
color: white;
padding: 0 15px;
line-height: 60px; /* Выравнивание текста по вертикали */
z-index: 100;
}
body {
/* --- Задание: Добавить отступ сверху --- */
input1: 60px;
}
<header>
Фиксированная шапка (60px)
</header>
<main>
<h1>Начало контента</h1>
<p>Этот текст не должен быть под шапкой.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>
</main>
Фиксированная шапка и подвал одновременно
Сделайте так, чтобы и шапка, и подвал были фиксированными. Шапка сверху, подвал снизу. Не забудьте добавить отступы для основного контента, чтобы он не перекрывался.
Фиксированный блок по центру экрана
Сделайте так, чтобы блок был зафиксирован точно по центру экрана, как по горизонтали, так и по вертикали. Это может быть полезно для модальных окон или уведомлений.
.centered-box {
background-color: #16a085;
color: white;
padding: 30px;
width: 200px;
/* --- Задание --- */
input1: fixed;
input2: 50%;
input3: 50%;
transform: translate(-50%, -50%); /* Этот трюк центрирует элемент */
z-index: 200;
}
<div class="centered-box">
Я всегда по центру!
</div>
<p>Прокрутите страницу.</p>
<p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>...</p><p>Конец контента.</p>