Заметки по практике HTML, CSS, JS
November 8

WebKit :  возможности фильтров, картинок и анимаций в CSS

WebKit : расширенные возможности по фильтрам и обработкам, а так же анимации в CSS

WebKit предоставляет расширенные возможности по анимации, фильтрам и обработке графики, некоторые из которых поддерживаются только в WebKit-браузерах (например, Safari). Вот несколько примеров и возможностей, которые могут быть доступны только в WebKit:

1. Расширенные CSS-фильтры

В WebKit есть дополнительные фильтры, которые могут быть недоступны в других движках. Некоторые интересные фильтры, используемые в WebKit:

  • backdrop-filter: Применяет фильтр к фону элемента (например, размывает или затемняет только фон, как в iOS интерфейсах). Используется для создания полупрозрачных оверлеев с эффектом размытия.
css

backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px); /* Для поддержки в WebKit */
  • Custom Filters (программуемые фильтры): Позволяют создавать собственные фильтры, используя шейдеры, написанные на GLSL (например, через CSS -webkit-filter: custom(...)). Это более сложная техника, которая позволяет создавать уникальные эффекты (например, смещения, свечение, цветокоррекцию).

2. CSS Masks и Clipping

WebKit поддерживает сложные маски, которые позволяют создавать эффекты, похожие на маски Photoshop, используя CSS. Например:

  • -webkit-mask-image: Позволяет задать маску для элемента, используя изображение.
css

-webkit-mask-image: url(mask.png);
mask-image: url(mask.png); /* Стандартный вариант */
  • mask-composite и -webkit-mask-composite: Позволяет объединять несколько масок с помощью режимов наложения.

3. Расширенные CSS-анимации и переходы

WebKit поддерживает многие расширенные функции анимаций, такие как:

  • Steps Timing Function: Позволяет создавать анимации с дискретными шагами, которые часто используются для спрайтов.
css

animation: bounce 1s steps(5) infinite;
  • Cubic Bezier Timing Function Editor: WebKit поддерживает сложные анимационные кривые (cubic-bezier), которые можно настраивать для более точного управления скоростью анимации.

4. Псевдоклассы для анимаций

В WebKit можно использовать расширенные псевдоклассы и события для управления анимациями:

  • ,,: Используются для активации анимаций при наведении, фокусе и нажатии.
  • -webkit-animation и -webkit-transition: Специфические префиксы, которые ранее использовались для обеспечения кросс-браузерной совместимости с анимациями и переходами. Сейчас эти префиксы обычно не требуются.

5. 3D-анимации

WebKit поддерживает CSS 3D-анимации и трансформации, включая перспективу, повороты и скейлинг в трёхмерном пространстве:

css

transform: rotate3d(1, 1, 0, 45deg);
-webkit-transform: rotate3d(1, 1, 0, 45deg); /* Для старых WebKit */
  • perspective и -webkit-perspective: Определяют перспективу для 3D-анимаций.
  • perspective-origin и transform-style: preserve-3d — позволяют создавать 3D-сцены с вложенными элементами.

6. Web Animations API и CSS Paint API

WebKit частично поддерживает Web Animations API, который позволяет создавать сложные анимации через JavaScript с более высокой производительностью по сравнению с CSS-анимациями.

CSS Paint API (aka Houdini) позволяет создавать настраиваемые свойства и рисовать кастомные графические объекты для фона, границ и т.д. Поддержка этой технологии в WebKit еще частичная.

7. SVG-фильтры и градиенты

SVG-фильтры поддерживаются во всех браузерах, включая WebKit, но Safari часто реализует их с улучшенной производительностью:

  • Можно использовать SVG для создания сложных эффектов, таких как текстура, сложное размытие и нестандартные градиенты.
  • feGaussianBlur, feColorMatrix и feBlend — некоторые SVG-фильтры, которые можно применять к HTML-элементам для создания нестандартных эффектов.

Пример комбинирования возможностей WebKit:

css

.home-screen {
    backdrop-filter: blur(20px) saturate(1.5);
    -webkit-backdrop-filter: blur(20px) saturate(1.5);
    -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,1), rgba(0,0,0,0));
    animation: fadeIn 1s ease-in-out;
    transform: scale(1);
    transition: transform 0.3s ease;
}
.home-screen:hover {
    transform: scale(0.98); /* Эффект нажатия */
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

Итого

WebKit обладает богатым набором инструментов для стилизации и анимации, который можно использовать для создания интерфейсов с продвинутыми визуальными эффектами. Особое внимание уделяется поддержке фильтров, масок, 3D и дополнительных CSS-параметров, которые помогают делать сложные, кросс-браузерные анимации.