fliebel
by Fleuv
HTML
<div class="button">
Button
</div>
<div class="button left">
Button
</div>
CSS
:root {
--arrow-size: 50px;
--border-width: 50px;
--border-radius: 10px;
--border-color: red;
}
.button {
width: 150px;
border: var(--border-width) solid var(--border-color);
display: inline-block;
line-height: 500px;
text-align: center;
border-radius: var(--border-radius);
position: relative;
border-right-width: 0;
padding-right: var(--border-width);
margin-right: var(--arrow-size);
background:
linear-gradient(
-45deg,
var(--border-color) 0,
var(--border-color) calc((100% - var(--arrow-size))/2),
transparent calc((100% - var(--arrow-size))/2),
transparent 100%
) 100% 0 / var(--border-width) 100% no-repeat,
linear-gradient(
45deg,
transparent 0,
transparent calc((100% + var(--arrow-size))/2),
var(--border-color) calc((100% + var(--arrow-size))/2),
var(--border-color) 100%
) 100% 0 / var(--border-width) 100% no-repeat;
}
.button:after {
content: '';
display: inline-block;
width: var(--arrow-size);
height: var(--arrow-size);
border-color: var(--border-color) var(--border-color) transparent transparent;
border-style: solid;
border-width: var(--border-width);
border-radius: var(--border-radius);
position: absolute;
pointer-events: none;
top: calc(50% - ((var(--arrow-size) / 2) + var(--border-width)));
right: calc((var(--arrow-size) / 2) * -1);
transform: rotate(45deg);
}
.left {
transform: scaleX(-1);
}