Хотя вы можете изучить рендеринг изображения из SVG, однако есть гораздо более простое решение для достижения того же эффекта.
Вероятно, лучше использовать этот подход:
Регулярно визуализируйте изображение как элемент <img>
или background-image
для <div>
.Расположите его так, как вы хотите, внутри контейнера.
Поместите фигуру на верхнюю часть изображения, сбоку, которая соответствует фону вашей страницы (или родительского элемента).Эта форма может быть <svg>
, особенно если вам нужны изогнутые линии и сложные формы краев, но для ваших нужд вы можете просто сделать это с цветным <div>
, повернутым на 5 градусов.Гораздо более производительный.
Таким образом, изображение может управляться и загружаться в обычном режиме, а не быть захваченным внутри SVG.Выполнение фактических масок / отсечения элементов и изображений возможно, но вам придется бороться с ошибками браузера и проблемами совместимости.
Codepen
.container {
width: 600px;
height: 200px;
overflow: hidden;
position: relative;
background-color: #000000;
margin-bottom: 2em;
color: #ffffff;
}
.container_inner {
padding: 2em;
}
#side-shape {
height: 400%;
background-color: #ffffff;
position: absolute;
width: 200px;
right: -10%;
top: -200%;
z-index: 1;
transform: rotate(5deg);
}
#side-shape2 {
fill: #ffffff;
height: 100%;
position: absolute;
width: 200px;
right: 0%;
top: 0%;
z-index: 1;
}
<div class="container">
<div class="container_inner">
MY IMAGE
<p>Either an <img> element,</p>
<p> or a background-image for the container.
<p>The side slash is just a white <div> rotated 5 degrees.</p>
</div>
<div id="side-shape"></div>
</div>
<div class="container">
<div class="container_inner">
SAME AS ABOVE
<p>Same as above, except The side slash is a white <svg> triangle.</p>
<svg id="side-shape2" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<polygon points="100 0, 100 100, 90 100"/>
</svg>
</div>