Пусть наложение div станет видимым через переход/анимацию круга клип-пути

У меня есть два <div>, которые занимают всю страницу. Первый элемент div (синий) отображается изначально, а второй (желтый) скрыт (display:none). Если я нажму на синий div, я хочу показать желтый наложенный div. Затем, если я нажму на желтый элемент div, я хочу, чтобы он исчез.

Пока это работает, если я просто переключаюсь между display:block и display:none с помощью jQuery. Затем я могу переключаться между двумя div.

Как можно добавить эффект перехода для ситуации при переключении с display:none на display:block (и, в лучшем случае, наоборот)?

Мне бы хотелось открытия/закрытия круга!

Я не знаю, возможно ли это с помощью простого CSS, JavaScript и jQuery. Если это возможно, я думаю, это может вращаться вокруг clip-path и transition? Если возможно, я бы хотел избежать использования тяжелой сторонней библиотеки только для этого эффекта анимации.

Пожалуйста, посмотрите мой эскиз:

Большое спасибо за ваш совет!

Вам необходимо показать нам свой HTML и соответствующий CSS, желательно в виде исполняемого фрагмента. См. stackoverflow.com/help/minimal-reproducible-example

A Haworth 21.05.2024 08:04

Вы не можете анимировать отображение, но можете анимировать круг обтравочного контура. Вы пробовали это?

A Haworth 21.05.2024 08:18
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете анимировать свойство clip-path. Вам просто нужно обязательно использовать circle в обоих случаях (или, по крайней мере, одинаково для обоих состояний). Я использовал 75vmax в качестве окончательного размера круга, но это просто бросается в глаза. Чтобы быть на 100% уверенным, что весь экран покрыт, вам, вероятно, следует использовать расчет в зависимости от размера вашего экрана или области, которую вы хотите покрыть кругом. Вы можете легко найти математические вычисления в Интернете.

let card = document.querySelector('.card');
card.addEventListener('click', e => card.classList.toggle('card--overlay'));
.card {
  position: relative;
  width: 100vw;
  height: 100vh;
  background-color: blue;
}
.card.card--overlay .overlay {
  clip-path: circle(75vmax at 50% 50%);
}

.overlay {
  position: absolute;
  inset: 0;
  background-color: yellow;
  clip-path: circle(0% at 25% 75%);
  transition: clip-path 1s ease;
}
<div class = "card">
  <div class = "overlay"></div>
</div>

Другие вопросы по теме