DevSkillRoad

Переходы в CSS

✨ transition: плавные изменения свойств

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

1. transition-property — какие свойства анимировать

Указывает, какие свойства CSS будут участвовать в переходе.

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

.button {
    transition-property: background-color, transform;
}

2. transition-duration — длительность перехода

Задаёт время, за которое произойдёт переход. Указывается в секундах (s) или миллисекундах (ms).

.button {
    transition-duration: 0.3s;  /* 300 миллисекунд */
}

3. transition-timing-function — функция ускорения

Определяет, как меняется скорость перехода во времени.

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

.button {
    transition-timing-function: ease-out;
}

4. transition-delay — задержка перед началом

Задаёт время ожидания перед началом перехода.

.button {
    transition-delay: 0.2s;  /* начнётся через 0.2 секунды */
}

5. Сокращённое свойство transition

Объединяет все свойства перехода в одной строке.

Синтаксис: transition: свойство длительность задержка функция-ускорения

.button {
    transition: background-color 0.3s ease 0.1s;
}

6. Примеры переходов

Пример 1: плавное изменение цвета фона при наведении

.btn {
    background-color: #530899;
    color: white;
    transition: background-color 0.3s ease;
}
.btn:hover {
    background-color: #14b8a6;
}

✅ При наведении фон плавно меняется с фиолетового на бирюзовый

Пример 2: плавное увеличение кнопки (transform + transition)

.btn {
    transition: transform 0.2s ease;
}
.btn:hover {
    transform: scale(1.1);
}

✅ При наведении кнопка плавно увеличивается

Пример 3: несколько свойств одновременно

.btn {
    transition: background-color 0.3s, transform 0.2s, box-shadow 0.2s;
}
.btn:hover {
    background-color: #14b8a6;
    transform: scale(1.05);
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}

✅ Меняется цвет, размер и тень — всё плавно

Пример 4: плавное появление с задержкой

.box {
    opacity: 0.3;
    transition: opacity 0.5s ease 0.2s;
}
.box:hover {
    opacity: 1;
}
Наведи на меня — появлюсь через 0.2 секунды

✅ При наведении блок становится полностью видимым с задержкой 0.2 секунды

7. scroll-behavior — плавная прокрутка

Определяет, как будет происходить прокрутка страницы при переходе по якорным ссылкам (например, <a href="#section">).

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

html {
    scroll-behavior: smooth;
}
📌 Достаточно добавить это правило один раз на весь сайт. При клике на ссылку типа <a href="#section"> страница будет плавно прокручиваться к нужному элементу. Значение auto — поведение по умолчанию (мгновенный переход), его можно не указывать.
📓 Из тетради: «Переходы делают интерфейс живым и отзывчивым. Не переусердствуйте: 0.2–0.3 секунды — оптимальная длительность для большинства переходов. Слишком долгие анимации раздражают, слишком быстрые — незаметны. И помните: не все свойства можно анимировать (например, `display: none` не анимируется, используйте `opacity` и `visibility`).