Кратко
СкопированоКогда нам нужно сделать плавное изменение какого-то CSS-свойства, то браузеру нужно понимать, какое время займёт этот переход. Это время указывается в свойстве transition
.
Пример
Скопировано.box { transition-property: color; transition-duration: 0.3s;}
.box { transition-property: color; transition-duration: 0.3s; }
Как пишется
СкопированоВ качестве значения указывается одно или несколько значений времени в секундах или миллисекундах.
Время в секундах:
.selector { transition-duration: 6s;}
.selector { transition-duration: 6s; }
Время в миллисекундах:
.selector { transition-duration: 120ms;}
.selector { transition-duration: 120ms; }
Несколько времён в секундах:
.selector { transition-duration: 0.1s, 15s;}
.selector { transition-duration: 0.1s, 15s; }
Несколько времён в секундах и миллисекундах:
.selector { transition-duration: 10s, 30s, 230ms;}
.selector { transition-duration: 10s, 30s, 230ms; }
Как понять
СкопированоБраузер анимирует изменения свойств при выполнении двух условий:
- перечислены свойства, которые нужно анимировать (
transition
);- property - перечислены времена анимации для этих свойств (
transition
).- duration
В общем случае количество свойств и количество времён должны совпадать и браузер сопоставляет каждое время каждому свойству из списка в transition
.
.box { transition-property: color, font-size; | | transition-duration: .3s, .5s;}
.box { transition-property: color, font-size; | | transition-duration: .3s, .5s; }
Если количество свойств не совпадает с количеством времён, то браузер в качестве основного списка использует перечень свойств из transition
и каждому свойству подставляет соответствующее время. Если времён больше, лишние отбрасываются. Если меньше — список времён повторяется.
Времён больше. Лишние отбрасываются:
.box { transition-property: color, font-size; | | transition-duration: .3s, .5s, 1s, 2s;}
.box { transition-property: color, font-size; | | transition-duration: .3s, .5s, 1s, 2s; }
Времён меньше. Список повторяется с начала:
.box { transition-property: color, font-size, padding, transform; | | | | transition-duration: .3s, .5s; /* .3s .5s */}
.box { transition-property: color, font-size, padding, transform; | | | | transition-duration: .3s, .5s; /* .3s .5s */ }
Подсказки
Скопировано💡 Если время пишется в секундах и оно меньше одной секунды (например, 0
), то ноль можно отбрасывать: transition
.
На практике
Скопированосоветует Скопировано
🛠 Лучше не экономить символы, и всегда делать количество времён равным количеству свойств. Но если все свойства должны меняться за одно и то же время, то можно и сэкономить 😈:
.box { transition-property: opacity, visibility, transform; transition-duration: 0.3s;}
.box { transition-property: opacity, visibility, transform; transition-duration: 0.3s; }