Вы можете использовать svg
для этого. Из-за свойства clip-path границы будут вырезаны из области просмотра.
На мой взгляд, есть три решения:
- Вы можете использовать svg
- Нарисуйте прямоугольник с контуром клипа, а затем с левой и правой стороны создайте два псевдоэлемента, которые будут нарисованы в виде треугольников (прозрачных с рамкой)
- Вместо этого используйте изображение (я предлагаю формат .gif, так как его цвет одинаковый)
.forshadow {
filter: drop-shadow(0 0 0.45rem #ac04cb);
width: 800px; /* the container width - adjust */
height: 50px; /* the container height - adjust */
}
.mybar {
width: 100%; /* 100% of the container - will always adapt to the container */
height: 100%; /* 100% of the container - will always adapt to the container */
fill: #000000; /* background */
stroke: hotpink; /* border color */
stroke-width: 2; /* border size */
}
<div class="forshadow">
<svg class="mybar" viewbox="0 0 100 100" preserveAspectRatio="none">
<polygon points="0,0 100,0 95,50 5,50" vector-effect="non-scaling-stroke"/>
</svg>
</div>
Я предлагаю svg-решение. Это сделано, чтобы быть масштабируемым. Вы можете просто отредактировать параметры и поиграть с ним.
Надеюсь, это то, что вы искали.
РЕДАКТИРОВАТЬ:
Вы можете сохранить SVG в виде файла (. SVG). А затем добавьте его как background-image
в контейнер.
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.navbar {
filter: drop-shadow(0 0 0.45rem #ac04cb);
width: 800px; /* the container width - adjust */
height: 50px; /* the container height - adjust */
color: white;
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Ym94PSIwIDAgMTAwIDUwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4KCTxwb2x5Z29uIGNsYXNzPSJteWJhciIgcG9pbnRzPSIwLDAgMTAwLDAgOTUsNTAgNSw1MCIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIi8+Cjwvc3ZnPg==");
/* alternative, non-base-64: background-image: url("your-file.svg");*/
background-size: 100% 100%;
}
/* this will style the <polygon> element inside the svg */
.mybar {
width: 100%; /* 100% of the container - will always adapt to the container */
height: 100%; /* 100% of the container - will always adapt to the container */
fill: #000000; /* background */
stroke: hotpink; /* border color */
stroke-width: 2; /* border size */
}
</style>
</head>
<body>
<nav class="navbar">
<div>The svg is just a background image - we can write on it.</div>
</nav>
</body>
</html>
svg-файл, который я использовал и расшифровал:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 100 50" width="100" height="50" preserveAspectRatio="none">
<polygon class="mybar" points="0,0 100,0 95,50 5,50" vector-effect="non-scaling-stroke"/>
</svg>