Я пытаюсь создать отзывчивый путь клипа SVG, используя элемент <path>
SVG.Однако у меня возникли проблемы с тем, чтобы заставить его работать.
Я заставил его работать, используя более простые формы, такие как <circle>
, но не элемент <path>
.Я также заставил его работать с использованием статических размеров с элементом <path>
.
Я использовал инструкции здесь в качестве ссылки: https://www.smashingmagazine.com/2015/05/creating-responsive-shapes-with-clip-path/. Я также рассмотрел аналогичные вопросы по StackOverflow и другим примерам,но они в основном имеют дело с базовыми фигурами, а не с переменной пути.
Используемая мной фигура SVG - это форма капли, экспортированная из Adobe Illustrator.
Вот мой код:
HTML
<svg id="raindropSVG" viewBox="0 0 810 1012">
<defs>
<clipPath id="raindropClipPath" clipPathUnits="objectBoundingBox">
<path d="M0,604.4C0,523.7,30.7,408.8,97.5,320,217,160.9,409.2,0,409.2,0S597.2,167.8,717,331c63,85.7,93,196.4,93,274,0,224.5-181.3,407-405,407S0,829.5,0,604.4Z"/>
</clipPath>
</defs>
</svg>
<img src="clipped-image.jpg" alt="" class="clipped-img">
CSS
.clipped-img {
clip-path: url(#raindropClipPath);
width: 100%;
height: auto;
}
#raindropSVG {
width: 0;
height: 0;
}
Идея состоит в том, что изменение ширины (или высоты) .clipped-img
должен соответственно масштабировать форму капли.
Использование clipPathUnits="objectBoundingBox"
необходимо для того, чтобы clipPath
реагировал.Однако, как только я добавлю это, отсеченное изображение исчезнет.
Где я думаю, что я ошибаюсь
Я подозреваю, что путь, указанный элементом path,не в относительных единицах, однако я не знаю, как изменить единицы в относительные.
Заранее благодарим за все ответы!