По моему мнению, элементы :: after и :: before являются неудобным способом обслуживания многоугольника.
Если вы хотите, чтобы это был HTML-элемент, такой как div, я предлагаю следующее: используйте clipping вместе с calc css функцией.
без отсечения - это всегда будет прямоугольник (прямой или повернутый), он никогда не будет хорошо растягиваться / адаптироваться при изменении области просмотра.
Если вы хотите, чтобы какая-то часть была неэластичной, просто используйте единицы 'px' в соответствующих координатах.
пример:
#my-polygon {
min-height:100px;
clip-path: polygon(0px 15%, 50% 0px, 100% 15%, 100% calc(100% - 20px), 50% 100%, 0px calc(100% - 20px));
background-color:red;
}
<div id="my-polygon"></div>