Необычные украшения изображений: контуры и сложная анимация. Разведка данных PlatoBlockchain. Вертикальный поиск. Ай.

Причудливые украшения изображений: контуры и сложные анимации

В последних двух статьях этой серии из трех частей мы играли с градиентами, чтобы сделать действительно аккуратное украшение изображения, используя только элемент. В этой третьей и последней части мы собираемся изучить больше методов с использованием CSS. outline имущество. Это может показаться странным, потому что мы обычно используем outline нарисовать простую линию вокруг элемента — вроде как border но он может рисовать только все четыре стороны одновременно и не является частью блочной модели.

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

Серия Необычные имиджевые украшения

Начнем с нашего первого примера — оверлея, который исчезает при наведении с классной анимацией:

Мы могли бы добиться этого, добавив дополнительный элемент поверх изображения, но это то, что мы бросаем себе вызов. не делать в этой серии. Вместо этого мы можем обратиться к CSS outline свойство и рычаг, что он может иметь отрицательное смещение и может перекрывать свой элемент.

img {
  --s: 250px; /* the size of the image */
  --b: 8px;   /* the border thickness*/
  --g: 14px;  /* the gap */
  --c: #4ECDC4;

  width: var(--s);
  aspect-ratio: 1;
  outline: calc(var(--s) / 2) solid #0009;
  outline-offset: calc(var(--s) / -2);
  cursor: pointer;
  transition: 0.3s;
}
img:hover {
  outline: var(--b) solid var(--c);
  outline-offset: var(--g);
}

Уловка состоит в том, чтобы создать outline толщиной, равной половине размера изображения, затем сместите его на половину размера изображения с отрицательным значением. Добавьте немного полупрозрачности с цветом, и у нас есть наложение!

Причудливые украшения изображений: контуры и сложные анимации

Остальное то, что происходит на :hover. Мы обновляем outline и переход между обоими контурами создает крутой эффект наведения. Та же техника может быть использована для создания эффекта затухания, когда мы не перемещаем outline но сделать его прозрачным.

Вместо того, чтобы использовать половину размера изображения в этом, я использую очень большой outline значение толщины (100vmax) при применении маски CSS. При этом больше не нужно знать размер изображения — этот трюк работает для всех размеров!

Диаграмма, показывающая, как добавление маски обрезает лишний контур вокруг изображения.
Причудливые украшения изображений: контуры и сложные анимации

Вы можете столкнуться с проблемами при использовании 100vmax как большое значение в Safari. Если это так, рассмотрите предыдущий трюк, где вы заменяете 100vmax с половиной размера изображения.

Мы можем пойти еще дальше! Например, вместо того, чтобы просто обрезать лишнее outline, мы можем создавать формы и применять причудливую анимацию раскрытия.

Круто, да? outline это то, что создает желтое наложение. clip-path обрезает лишнее outline чтобы получить форму звезды. Затем при наведении мы делаем цвет прозрачным.

О, ты хочешь сердечки вместо этого? Мы точно можем это сделать!

Представьте себе все возможные комбинации, которые мы можем создать. Все, что нам нужно сделать, это нарисовать фигуру с маской CSS и/или clip-path и объедините его с outline обманывать. Одно решение, безграничные возможности!

И, да, мы определенно можем анимировать и это. Не будем забывать, что clip-path можно анимировать и mask опирается на градиенты — то, что мы очень подробно рассмотрели в первых двух статьях этой серии.

Я знаю, анимация немного глючит. Это скорее демонстрация для иллюстрации идеи, а не «конечный продукт», который будет использоваться на производственной площадке. Мы бы хотели оптимизировать вещи для более естественного перехода.

Вот демонстрация, которая использует mask вместо. Это тот, которым я дразнил тебя в конце последняя статья:

Знаете ли вы, что outline свойство было способно на столько удивительности? Добавьте его в свой набор инструментов для причудливых украшений изображений!

Соедините все вещи!

Теперь, когда мы изучили множество трюков с использованием градиентов, масок, обрезки и контура, пришло время для грандиозного финала. Давайте завершим эту серию, объединив все, что мы узнали за последние несколько недель, чтобы продемонстрировать не только методы, но и продемонстрировать, насколько гибкими и модульными являются эти подходы.

Если вы впервые видите эти демонстрации, вы можете предположить, что для их реализации используется куча дополнительных оболочек div и псевдоэлементов. Но все происходит прямо на элемент. Это единственный селектор, который нам нужен, чтобы получить эти продвинутые формы и эффекты!

Подведение итогов

Ну, господи, спасибо, что тусовались со мной в этой серии из трех частей последние несколько недель. Мы изучили множество различных техник, которые превращают простые изображения в нечто привлекательное и интерактивное. Будете ли вы использовать все, что мы рассмотрели? Конечно нет! Но я надеюсь, что это было хорошим упражнением для вас, чтобы изучить расширенные возможности использования функций CSS, таких как градиенты, mask, clip-pathи outline.

И мы сделали все только с одним элемент! Никаких лишних div-оберток и псевдоэлементов. Конечно, это ограничение, которое мы наложили на себя, но оно также подтолкнуло нас к изучению CSS и попыткам найти инновационные решения для распространенных вариантов использования. Итак, прежде чем добавлять дополнительную разметку в ваш HTML, подумайте, способен ли CSS справиться с этой задачей.

Серия Необычные имиджевые украшения

Отметка времени:

Больше от CSS хитрости