Spec-Zone.ru › CSS

cross-fade()

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.

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

Функция cross-fade() CSS функция позволяет смешивать два или более изображений с заданной прозрачностью. Она может быть использована для различных простых манипуляций с изображениями, таких как тонирование изображения твёрдым цветом или выделение определённой области страницы путём комбинации изображения с радиальным градиентом.

Синтаксис

Предупреждение: Спецификация и текущие реализации имеют различные синтаксисы. Сначала приведён синтаксис спецификации.

Синтаксис спецификации

Функция cross-fade() принимает список изображений с процентами, определяющими, какая часть каждого изображения сохраняется в плане непрозрачности при его смешении с другими изображениями. Значение процента должно быть указано без кавычек, содержать символ '%', и его значение должно находиться в диапазоне от 0% до 100%.

Функция может быть использована в CSS там, где может использоваться обычная ссылка на изображение.

Проценты перехода

Представьте процент как значение непрозрачности для каждого изображения. Это означает, что значение 0% означает полную прозрачность изображения, а значение 100% делает изображение полностью непрозрачным.

cross-fade(url(white.png) 0%, url(black.png) 100%); /* fully black */
cross-fade(url(white.png) 25%, url(black.png) 75%); /* 25% white, 75% black */
cross-fade(url(white.png) 50%, url(black.png) 50%); /* 50% white, 50% black */
cross-fade(url(white.png) 75%, url(black.png) 25%); /* 75% white, 25% black */
cross-fade(url(white.png) 100%, url(black.png) 0%); /* fully white */
cross-fade(url(green.png) 75%, url(red.png) 75%); /* both green and red at 75% */

Если какие-либо проценты опущены, все указанные проценты суммируются и вычитаются из 100%. Если результат больше 0%, то результат делится поровну между всеми изображениями с опущенными процентами.

В самом простом случае два изображения плавно переходят друг в друга. Для этого нужно указать процент только для одного изображения, второе будет плавно переходить соответственно. Например, значение 0% для первого изображения отображает только второе изображение, а 100% — только первое. Значение 25% отображает первое изображение с непрозрачностью 25%, а второе — 75%. Значение 75% — обратное, отображая первое изображение с непрозрачностью 75%, а второе — 25%.

Вышесказанное также можно было записать следующим образом:

cross-fade(url(white.png) 0%, url(black.png)); /* fully black */
cross-fade(url(white.png) 25%, url(black.png)); /* 25% white, 75% black */
cross-fade(url(white.png), url(black.png)); /* 50% white, 50% black */
cross-fade(url(white.png) 75%, url(black.png)); /* 75% white, 25% black */
cross-fade(url(white.png) 100%, url(black.png)); /* fully white */
cross-fade(url(green.png) 75%, url(red.png) 75%); /* both green and red at 75% */

Если проценты не указаны, оба изображения будут иметь непрозрачность 50%, при этом плавный переход будет представлять собой равномерное сочетание обоих изображений. В примере 50%/50% проценты указывать не обязательно, так как если значение процента опущено, указанные проценты суммируются и вычитаются из 100%. Результат, если он больше 0, затем делится поровну между всеми изображениями с опущенными процентами.

В последнем примере сумма обоих процентов не равна 100%, и поэтому оба изображения отображаются со своими значениями непрозрачности.

Если проценты не указаны и включено три изображения, каждое изображение будет иметь непрозрачность 33,33%. Две следующие строки практически идентичны:

cross-fade(url(red.png), url(yellow.png), url(blue.png)); /* all three will be 33.3333% opaque */
cross-fade(url(red.png) 33.33%, url(yellow.png) 33.33%, url(blue.png) 33.33%);

Старый, реализованный синтаксис

cross-fade( <image>, <image>, <percentage> )

Спецификация функции cross-fade() позволяет использовать несколько изображений и для каждого изображения устанавливать значения прозрачности независимо от других значений. Это не всегда было так. Исходный синтаксис, реализованный в некоторых браузерах, позволял использовать только два изображения, при этом сумма прозрачности этих двух изображений должна была быть ровно 100%. Исходный синтаксис поддерживается в Safari и поддерживается с префиксом -webkit- в Chrome, Opera и других браузерах на основе движка Blink.

cross-fade(url(white.png), url(black.png), 0%);   /* fully black */
cross-fade(url(white.png), url(black.png), 25%);  /* 25% white, 75% black */
cross-fade(url(white.png), url(black.png), 50%);  /* 50% white, 50% black */
cross-fade(url(white.png), url(black.png), 75%);  /* 75% white, 25% black */
cross-fade(url(white.png), url(black.png), 100%); /* fully white */

В реализованном синтаксисе сначала объявляются два изображения через запятую, за которыми следует запятая и обязательное значение процента. Пропуск запятой или процента делает значение недействительным. Процент — это непрозрачность первого объявленного изображения. Указанный процент вычитается из 100%, а разница является непрозрачностью второго изображения.

Пример с зелёным/красным цветом (с процентами, суммирующимися до 150%) и пример с жёлтым/красным/синим цветом (с тремя изображениями) из раздела синтаксиса спецификации невозможны в этой реализации.

Доступность

Браузеры не предоставляют никакой специальной информации о фоновых изображениях для средств вспомогательных технологий. Это важно в первую очередь для программ чтения с экрана, так как программа чтения с экрана не объявляет о своём присутствии и, следовательно, не передаёт никакой информации своим пользователям. Если изображение содержит информацию, критическую для понимания общей цели страницы, лучше описать её семантически в документе. При использовании фоновых изображений убедитесь, что контраст цветов достаточно велик, чтобы любой текст был читаем поверх изображения, а также если изображения отсутствуют.

  • MDN Понимание WCAG, объяснения к руководству 1.1
  • Понимание критерия успеха 1.1.1 | W3C Понимание WCAG 2.0

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

<cross-fade()> = 
cross-fade( <cf-image># )

<cf-image> =
[ <image> | <color> ] &&
<percentage [0,100]>?

<image> =
<url> |
<gradient>

<url> =
<url()> |
<src()>

<url()> =
url( <string> <url-modifier>* ) |
<url-token>

<src()> =
src( <string> <url-modifier>* )

Примеры

Старый синтаксис для cross-fade

HTML

<div class="crossfade"></div>

CSS

.crossfade {
  width: 300px;
  height: 300px;
  background-image: -webkit-cross-fade(url("br.png"), url("tr.png"), 75%);
  background-image: cross-fade(url("br.png"), url("tr.png"), 75%);
}

Результат

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

Спецификация
CSS Images Module Level 4
# cross-fade-function

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

Десктопные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
cross-fade
17["Поддерживает исходную реализацию с двумя изображениями и процентами.", "См. ошибку 40470742 для поддержки функции cross-fade() без префикса."]
79["Поддерживает исходную реализацию с двумя изображениями и процентами.", "См. ошибку 40470742 для поддержки функции cross-fade() без префикса."]
Нет
15["Поддерживает исходную реализацию с двумя изображениями и процентами.", "См. ошибку 40470742 для поддержки функции cross-fade() без префикса."]
10Поддерживает исходную реализацию с двумя изображениями и процентами.
5.1Поддерживает исходную реализацию с двумя изображениями и процентами.
18["Поддерживает исходную реализацию с двумя изображениями и процентами.", "См. ошибку 40470742 для поддержки функции cross-fade() без префикса."]
Нет
14["Поддерживает исходную реализацию с двумя изображениями и процентами.", "См. ошибку 40470742 для поддержки функции cross-fade() без префикса."]
9.3Поддержка исходной реализации с двумя изображениями и процентами.
5Поддержка исходной реализации с двумя изображениями и процентами.
1.0["Поддерживает исходную реализацию с двумя изображениями и процентами.", "См. ошибку 40470742 для поддержки функции cross-fade() без префикса."]
4.4["Поддерживает исходную реализацию с двумя изображениями и процентами.", "См. ошибку 40470742 для поддержки функции cross-fade() без префикса."]

См. также

  • <image>
  • <url>
  • image()
  • image-set()
  • element()
  • Использование CSS градиентов
  • Функции градиента: linear-gradient(), radial-gradient(), repeating-linear-gradient(), repeating-radial-gradient(), conic-gradient(), repeating-conic-gradient()

© 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/cross-fade

Spec-Zone.ru

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