Медиавозможность CSS `prefers-reduced-motion`
Базовая поддержка Широко доступно
Эта возможность хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с января 2020 года.
Предупреждение: Встроенный пример внизу этой страницы содержит масштабирование, которое может вызывать дискомфорт у некоторых читателей. Читателям с вестибулярными расстройствами движения рекомендуется включить функцию уменьшения движения на устройстве перед просмотром анимации.
prefers-reduced-motion CSS медиавозможность используется для определения того, включил ли пользователь на устройстве настройку, уменьшающую количество необязательных движений. Эта настройка сообщает браузеру на устройстве, что пользователь предпочитает интерфейс, в котором анимация на основе движения удалена, уменьшена или заменена.
Такая анимация может вызывать дискомфорт у людей с вестибулярными расстройствами движения. Масштабирование или панорамирование крупных объектов может провоцировать вестибулярные реакции.
Синтаксис
-
no-preference - Указывает, что пользователь не указал предпочтения на устройстве. Это ключевое значение вычисляется как false.
-
reduce - Указывает, что пользователь включил на устройстве настройку уменьшения движения. Ключевое значение
reduceвычисляется как true; следовательно,@media (prefers-reduced-motion)эквивалентно@media (prefers-reduced-motion: reduce).
Настройки пользователя
Используйте следующие настройки, чтобы учитывать запрос reduce:
- В GTK/GNOME: Настройки > Специальные возможности > Зрение > включите «Уменьшить анимацию».
- В старых версиях GNOME: GNOME Tweaks > вкладка General (или Appearance — в зависимости от версии) > отключите Animations.
- Также можно добавить
gtk-enable-animations = falseв блок[Settings]файла конфигурации GTK 3. - Кроме того, попробуйте выполнить
gsettings set org.gnome.desktop.interface enable-animations false, чтобы Firefox (и другие программы, использующие GTK версии 4) учитывал настройкуreduce.
- В Plasma/KDE: Системные настройки > Поведение рабочей среды > Общее поведение > установите для параметра «Скорость анимации» значение «Мгновенно».
- Также можно добавить
AnimationDurationFactor=0в блок[KDE]файла~/.config/kdeglobals. - Или просто выполните
kwriteconfig6 --key AnimationDurationFactor 0в терминале.
- Также можно добавить
- В Windows 10: Параметры > Специальные возможности > Дисплей > Показывать анимацию в Windows.
- В Windows 11: Параметры > Специальные возможности > Визуальные эффекты > Эффекты анимации.
- В macOS до версии 15 (Sequoia): Системные настройки > Универсальный доступ > Дисплей > Уменьшить движение.
- В macOS начиная с версии 25 (Tahoe): Системные настройки > Универсальный доступ > Движение > Уменьшить движение.
- В iOS: Настройки > Универсальный доступ > Движение.
- В Android 9+: Настройки > Специальные возможности > Удалить анимацию.
- В Firefox
about:config: добавьте числовой параметр с именемui.prefersReducedMotionи задайте ему значение0для полной анимации или1, чтобы указать предпочтение уменьшенного движения. Изменения этого параметра вступают в силу немедленно.
Примеры
В этом примере используется анимация масштабирования, чтобы продемонстрировать prefers-reduced-motion. Если включить настройку уменьшения движения в параметрах специальных возможностей устройства, медиазапрос prefers-reduced-motion обнаружит ваше предпочтение, и правила CSS для уменьшенного движения с такой же специфичностью, но расположенные ниже в порядке следования правил CSS, получат приоритет. В результате анимация блока станет менее интенсивной: она сменится на анимацию dissolve, которая менее заметна и не провоцирует вестибулярные реакции.
Уменьшение интенсивности масштабирования в анимации
HTML
<div class="animation">animated box</div>
CSS
.animation {
animation: pulse 1s linear infinite both;
background-color: purple;
}
/* Tone down the animation to avoid vestibular motion triggers. */
@media (prefers-reduced-motion: reduce) {
.animation {
animation: dissolve 4s linear infinite both;
background-color: green;
text-decoration: overline;
}
}
.animation {
color: white;
font: 1.2em sans-serif;
width: 10em;
padding: 1em;
border-radius: 1em;
text-align: center;
}
@keyframes pulse {
0% {
transform: scale(1);
}
25% {
transform: scale(0.9);
}
50% {
transform: scale(1);
}
75% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
@keyframes dissolve {
0% {
opacity: 1;
}
50% {
opacity: 0.3;
}
100% {
opacity: 1;
}
}
Результат
Можно включить настройку уменьшения движения на своем устройстве, чтобы увидеть, как меняется масштабирование в анимации. В этом примере цвет фона и линия поверх текста визуально показывают, когда ключевая анимация переключается в ответ на включение или отключение настройки.
Спецификации
| Спецификация |
|---|
| Media Queries Level 5 # prefers-reduced-motion |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
prefers-reduced-motion |
74 |
79 |
63 |
62 |
10.1 |
74 |
64 |
53 |
10.3 |
11.0 |
74 |
10.3 |
См. также
-
Заголовок HTTP
Sec-CH-Prefers-Reduced-Motion— подсказка клиента User Agent - Введение в медиазапрос для уменьшенного движения на CSS-Tricks (2019)
- Адаптивный дизайн с учетом движения в блоге WebKit (2017)
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/prefers-reduced-motion