Spec-Zone.ru › CSS

transition

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Свойство transition CSS является сокращенным свойством для transition-property, transition-duration, transition-timing-function, transition-delay и transition-behavior.

Попробовать

Переходы позволяют определять переход между двумя состояниями элемента. Различные состояния могут быть определены с помощью псевдоклассов, таких как псевдоклассы, например :hover или :active, или динамически заданы с помощью JavaScript.

Составляющие свойства

Это свойство является сокращением для следующих свойств CSS:

  • transition-behavior
  • transition-delay
  • transition-duration
  • transition-property
  • transition-timing-function

Синтаксис

/* Apply to 1 property */
/* property name | duration */
transition: margin-right 4s;

/* property name | duration | delay */
transition: margin-right 4s 1s;

/* property name | duration | easing function */
transition: margin-right 4s ease-in-out;

/* property name | duration | easing function | delay */
transition: margin-right 4s ease-in-out 1s;

/* property name | duration | behavior */
transition: display 4s allow-discrete;

/* Apply to 2 properties */
transition:
  margin-right 4s,
  color 1s;

/* Apply to all changed properties */
transition: all 0.5s ease-out allow-discrete;
transition: 200ms linear 50ms;

/* Global values */
transition: inherit;
transition: initial;
transition: revert;
transition: revert-layer;
transition: unset;

Значение свойства transition задается одним из следующих способов:

  • Специальное значение none, которое указывает, что для этого элемента переходы не будут выполняться. Это значение по умолчанию.
  • Один или несколько переходов для отдельных свойств, разделенных запятыми.

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

  • Ноль или одно значение, представляющее свойство или свойства, к которым должен быть применен переход. Это может быть задано как:
    • Идентификатор <custom-ident>, представляющий отдельное свойство.
    • Специальное значение all, которое указывает, что переход будет применен ко всем свойствам, которые меняются при изменении состояния элемента.
    • Отсутствие значения, в этом случае предполагается значение all, и указанный переход все равно будет применен ко всем изменяющимся свойствам.
  • Ноль или одно значение <easing-function>, представляющее функцию плавного изменения.
  • Ноль, одно или два значения <time>. Первое значение, которое может быть распарсено как время, присваивается transition-duration, а второе значение, которое может быть распарсено как время, присваивается transition-delay.
  • Ноль или одно значение, указывающее, нужно ли запускать переходы для свойств, поведение анимации которых дискретно. Если значение присутствует, оно является либо ключевым словом allow-discrete, либо ключевым словом normal.

Если вы задаете all в качестве свойства перехода для одного перехода по одному свойству, но затем указываете последующие переходы по одному свойству со значениями <custom-ident>, эти последующие переходы перепишут первый. Например:

transition:
  all 200ms,
  opacity 400ms;

В этом случае все свойства, которые изменяются при изменении состояния элемента, будут переходить с продолжительностью 200 мс, за исключением opacity, для которого переход займет 400 мс.

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

Формальное определение

Начальное значение как каждое из свойств сокращенного свойства:
  • transition-delay: 0s
  • transition-duration: 0s
  • transition-property: all
  • transition-timing-function: ease
  • transition-behavior: normal
Применяется к всем элементам, ::before и ::after псевдоэлементам
Наследуется нет
Вычисленное значение как каждое из свойств сокращенного свойства:
  • transition-delay: как указано
  • transition-duration: как указано
  • transition-property: как указано
  • transition-timing-function: как указано
  • transition-behavior: как указано
Тип анимации Не анимируемо

Формальный синтаксис

transition = 
<single-transition>#

<single-transition> =
[ none | <single-transition-property> ] ||
<time> ||
<easing-function> ||
<time>

<single-transition-property> =
all |
<custom-ident>

<easing-function> =
<linear-easing-function> |
<cubic-bezier-easing-function> |
<step-easing-function>

<linear-easing-function> =
linear |
<linear()>

<cubic-bezier-easing-function> =
ease |
ease-in |
ease-out |
ease-in-out |
<cubic-bezier()>

<step-easing-function> =
step-start |
step-end |
<steps()>

<linear()> =
linear( [ <number> && <percentage>{0,2} ]# )

<cubic-bezier()> =
cubic-bezier( [ <number [0,1]> , <number> ]#{2} )

<steps()> =
steps( <integer> , <step-position>? )

<step-position> =
jump-start |
jump-end |
jump-none |
jump-both |
start |
end

Примеры

Базовый пример

В этом примере, когда пользователь наводит указатель мыши на элемент, происходит задержка в полсекунды (500ms) перед переходом с продолжительностью две секунды background-color.

HTML

<a class="target">Hover over me</a>

CSS

Мы включаем два значения <time>. В сокращенном свойстве transition первое <time> значение — это transition-duration. Второе значение времени — это transition-delay. Оба по умолчанию равны 0s в случае отсутствия.

.target {
  font-size: 2rem;
  background-color: palegoldenrod;
  transition: background-color 2s 500ms;
}

.target:hover {
  background-color: darkorange;
}

Спецификации

Спецификация
CSS Transitions
# transition-shorthand-property

Совместимость браузеров

Рабочий стол Мобильное устройство
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
transition 261 1212
16["Перед Firefox 57, переходы не работали при переходе от text-shadow со значением цвета к text-shadow без значения цвета (см. ошибку 726550).", "Перед Firefox 57, отмена анимации заполнения (например, с установленным animation-fill-mode: forwards ) могла вызывать переход, установленный на том же элементе, хотя и только один раз (см. ошибку 1192592 и эти тестовые примеры для получения дополнительной информации).", "Перед Firefox 57 свойство background-position не может переходить между двумя значениями, содержащими разное количество значений <position>, например, background-position: 10px 10px; и background-position: 20px 20px, 30px 30px; (см. ошибку 1390446)."]
494–preview
12.11510.1–15 93.1 2618
16["Перед Firefox 57, переходы не работали при переходе от text-shadow со значением цвета к text-shadow без значения цвета (см. ошибку 726550).", "Перед Firefox 57, отмена анимации заполнения (например, с установленным animation-fill-mode: forwards ) могла вызывать переход, установленный на том же элементе, хотя и только один раз (см. ошибку 1192592 и эти тестовые примеры для получения дополнительной информации).", "Перед Firefox 57, свойство background-position не может переходить между двумя значениями, содержащими разное количество значений <position>, например, background-position: 10px 10px; и background-position: 20px 20px, 30px 30px; (см. ошибку 1390446)."]
494
12.11410.1–14 92 1.51.0 4.42
gradients_can_animate Нет 12–79 Нет Нет preview Нет Нет Нет Нет Нет Нет
transition-behavior 117 117 129 103 17.4 117 129 78 17.4 24.0 117

См. также

  • Модуль CSS transitions
  • Использование CSS transitions
  • TransitionEvent

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/transition

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API