
В этом разделе вы попрактикуетесь в использовании псевдоклассов состояний CSS: `:hover`, `:active`, `:focus` и `:visited`. Эти псевдоклассы позволяют применять стили к элементам в зависимости от их текущего состояния, например, при наведении курсора, активации (клике), получении фокуса или после того, как ссылка была посещена. Задания помогут вам закрепить навыки динамического изменения внешнего вида элементов для улучшения пользовательского взаимодействия.
- Модуль 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-арта.
Эффект при наведении на кнопку
Сделайте так, чтобы при наведении курсора мыши на кнопку её фон становился темнее. Это базовый способ показать пользователю, что элемент интерактивен.
.interactive-button {
padding: 10px 20px;
border: none;
background-color: #5cacee;
color: white;
cursor: pointer;
transition: background-color 0.3s ease;
}
.interactive-buttoninput1 {
background-color: #3b8cc4;
}
<button class="interactive-button">Наведи на меня</button>
Активное состояние кнопки
Добавьте стиль для кнопки в момент нажатия (активации). Пусть фон кнопки становится еще темнее, чем при наведении, чтобы пользователь видел явный отклик на клик.
.action-button {
padding: 10px 20px;
border: 1px solid #ccc;
background-color: #f0f0f0;
cursor: pointer;
transition: background-color 0.1s ease;
}
.action-button:hover {
background-color: #e0e0e0;
}
.action-buttoninput1 {
background-color: #d0d0d0;
border-color: #bbb;
}
<button class="action-button">Нажми меня</button>
Фокус на поле ввода
Измените стиль поля ввода `input`, когда оно получает фокус (когда пользователь кликает в него или переходит с помощью Tab). Сделайте так, чтобы рамка поля становилась синей.
.focusable-input {
padding: 8px;
border: 1px solid #ccc;
transition: border-color 0.3s ease;
outline: none; /* Убираем стандартный контур браузера */
}
.focusable-inputinput1 {
border-color: #5cacee;
}
<label for="username">Имя:</label>
<input type="text" id="username" class="focusable-input">
Стиль посещенной ссылки
Измените цвет текста ссылки после того, как пользователь перешел по ней (посетил). Пусть посещенные ссылки становятся серыми.
.history-link {
color: #007bff;
text-decoration: none;
}
.history-link:hover {
text-decoration: underline;
}
.history-linkinput1 {
color: #6c757d;
}
<a href="#" class="history-link">Это ссылка</a>
<p><small>(Для проверки кликните по ссылке)</small></p>
Подчеркивание ссылки при наведении
Добавьте эффект подчеркивания для ссылки только тогда, когда на нее наведен курсор мыши. Изначально ссылка не должна быть подчеркнута.
.hover-link {
color: #dc3545;
input1: none; /* Убираем подчеркивание по умолчанию */
}
.hover-link:hover {
input1: underline;
}
<a href="#" class="hover-link">Ссылка для наведения</a>
Общий стиль для Hover и Focus
Примените одинаковый стиль к кнопке как при наведении курсора, так и при получении фокуса. Пусть в обоих случаях у кнопки появляется тонкая синяя рамка.
.styled-button {
padding: 10px 15px;
background-color: #28a745;
color: white;
border: 1px solid transparent;
cursor: pointer;
transition: border-color 0.3s ease;
outline: none;
}
input1,
input2 {
border-color: #007bff;
}
<button class="styled-button">Кнопка</button>
Изменение прозрачности изображения при наведении
Сделайте так, чтобы изображение становилось полупрозрачным при наведении на него курсора мыши.
.hover-image {
display: block; /* Чтобы избежать лишних отступов */
transition: opacity 0.3s ease;
input1: 1; /* Полная непрозрачность по умолчанию */
}
.hover-imageinput2 {
input1: 0.7;
}
<img src="https://naytikurs.ru/img/1.png" alt="Пример" class="hover-image" width="150">
Стилизация дочернего элемента при наведении на родителя
Сделайте так, чтобы при наведении курсора на контейнер (`div` с классом `parent-box`), текст внутри него (`p`) менял цвет на красный.
.parent-box {
padding: 20px;
border: 1px solid #eee;
background-color: #f9f9f9;
cursor: pointer;
}
.parent-box p {
margin: 0;
color: #333;
transition: color 0.3s ease;
}
input1 p {
color: #dc3545;
}
<div class="parent-box">
<p>Наведите на блок</p>
</div>
Комплексные стили состояний для кнопки
Задайте разные стили для кнопки: при наведении курсора фон должен стать светлее, при нажатии (активации) — темнее и добавляться небольшая внутренняя тень, а при получении фокуса — появляться внешняя рамка.
.complex-button {
padding: 12px 25px;
background-color: #007bff;
color: white;
border: 2px solid transparent;
cursor: pointer;
transition: all 0.2s ease;
outline: none;
}
.complex-buttoninput1 { /* Наведение */
background-color: #3395ff;
}
.complex-buttoninput2 { /* Активация */
background-color: #0056b3;
box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
}
.complex-buttoninput3 { /* Фокус */
border-color: #0056b3;
}
<button class="complex-button">Кнопка</button>
Убрать стандартный контур фокуса и добавить свой
Для элемента `input` сначала уберите стандартный контур обводки, который браузер добавляет при фокусе, а затем добавьте свой собственный стиль фокуса: тень синего цвета.
.custom-focus-input {
padding: 8px;
border: 1px solid #ccc;
input1: none; /* Убираем стандартный outline */
}
.custom-focus-inputinput2 {
border-color: #aaa; /* Немного изменим границу для наглядности */
input3: 0 0 5px rgba(0, 123, 255, 0.5);
}
<input type="text" class="custom-focus-input" placeholder="Введите текст">
Эффект 'подъема' кнопки при наведении
Добавьте кнопке эффект легкого 'подъема' при наведении курсора. Это можно сделать, немного сместив кнопку вверх и добавив тень.
.lift-button {
padding: 10px 20px;
border: none;
background-color: #ffc107;
color: #333;
cursor: pointer;
border-radius: 4px;
transition: transform 0.2s ease, box-shadow 0.2s ease;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
.lift-buttoninput1 {
input2: translateY(-3px);
box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
<button class="lift-button">Поднимающаяся кнопка</button>
Интерактивная карточка с изображением
Создайте карточку с изображением и текстом. При наведении на всю карточку, изображение должно немного увеличиваться, а текст под ним менять цвет.
.card {
border: 1px solid #ddd;
padding: 15px;
text-align: center;
overflow: hidden; /* Чтобы увеличенное изображение не вылезало */
cursor: pointer;
}
.card img {
display: block;
margin: 0 auto 10px;
transition: transform 0.3s ease;
}
.card p {
margin: 0;
color: #555;
transition: color 0.3s ease;
}
input1 img {
transform: scale(1.1);
}
input1 p {
color: #007bff;
}
<div class="card">
<img src="https://naytikurs.ru/img/4.png" alt="Картинка" width="150">
<p>Наведите на карточку</p>
</div>