Замаскируйте круглое изображение, окружающее другое изображение в CSS

Мне нужно сделать эффект с помощью HTML и CSS только с круговым изображением, окружающим другое изображение.

Вот чего я пытаюсь достичь:

Замаскируйте круглое изображение, окружающее другое изображение в CSS

В этом примере круг — это изображение SVG. Центральное изображение представляет собой PNG с border-radius.

Я думаю, что лучшим способом было бы использовать верхнюю половину основного изображения в качестве маски для изображения круга. Я искал свойства mask и clip-path, но безуспешно.

Вот мой код:

<div class = "main-image">
    <div class = "image-container">
        <img src = "uploads/main_image.png">
    </div>
    <div class = "outline-circle"></div>
</div>
.image-container {
  position: relative;
  border-radius: 9999px;
  overflow: hidden;

  img {
    width: 30vw;
    max-width: 500px;
  }
}

.outline-circle {
  position: absolute;
  top: 0;
  left: 0;
  background-image: url(../img/circle_1.svg);
  height: 100%;
  width: 600px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

Но с помощью этого кода круг просто позиционируется поверх изображения:

Замаскируйте круглое изображение, окружающее другое изображение в CSS

Спасибо за вашу помощь,

Пожалуйста, поделитесь кодом того, что вы уже пробовали.

Sean 16.03.2022 18:42

Спасибо за ваш ответ @Sean, я обновил свой вопрос.

Martin Marx 16.03.2022 18:49
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
2
2
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете попробовать, как показано ниже:

.box {
  display: inline-block;
  position: relative;
  margin: 10px 50px;
  transform-style: preserve-3d; /* this is important */
}

.box:before {
  content: "";
  position: absolute;
  inset: auto -40px;
  aspect-ratio: 1;
  border-radius: 50%;
  border: 5px solid;
  border-color: blue green red blue;
  transform: rotate(16deg) rotateX(41deg); /* play with this */
}

img {
  border-radius: 999px;
}
<div class = "box">
  <img src = "https://picsum.photos/id/1069/200/300">
</div>

Большое спасибо, это работает как шарм!

Martin Marx 17.03.2022 10:55

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