Вместо использования clip-path: url()
вы можете использовать clip-path:polygon()
Я использовал ваши очки, умноженные на 10 и смещенные на 15 на x
и 5 на y
.Также я масштабирую кнопку, так как "граница" была едва видна.
document.getElementById("button").addEventListener("click", function(){alert("foo"); return false;});
div {
width: 8rem;
height: 6.6rem;
position: relative;
background-color: #ccc;
-webkit-clip-path:polygon(40px 5px, 90px 5px, 115px 55px, 90px 105px,40px 105px, 15px 55px);
clip-path:polygon(40px 5px, 90px 5px, 115px 55px, 90px 105px,40px 105px, 15px 55px);
}
button {
position: absolute;
cursor: pointer;
text-align:center;
width: 8rem;
height: 6.6rem;
-webkit-clip-path:polygon(40px 5px, 90px 5px, 115px 55px, 90px 105px,40px 105px, 15px 55px);
clip-path:polygon(40px 5px, 90px 5px, 115px 55px, 90px 105px,40px 105px, 15px 55px);
background-color: #fff;
border:none;
transform:scale(.97);
}
<div id="div">
<button id="button">The button</button>
</div>
Еще один вариант - использовать элемент svg вместо кнопки.Опять же - для шестиугольника я использую ваши очки, умноженные на 10. Я лично предпочитаю эту опцию.
document.getElementById("button").addEventListener("click", function(){alert("foo"); return false;});
#button{cursor:pointer}
<svg viewBox="-1 -1 102 102" width="6rem" role="button">
<polygon id="button" points="25 0, 75 0, 100 50, 75 100, 25 100, 0 50" stroke="#ccc" fill="none" pointer-events="all"/>
<text x="50" y="50" text-anchor="middle" dominant-baseline="middle" font-size="14" pointer-events="none">the Button</text>
</svg>
В качестве альтернативы вы можете использовать следующие пункты:
document.getElementById("button").addEventListener("click", function(){alert("foo"); return false;});
#button{cursor:pointer}
<svg viewBox = "-50 -50 100 100" width="6rem" role="button">
<polygon id="button" fill="none" stroke="#ccc" pointer-events="all" points = "48,0 24,41.57 -24,41.57 -48,0 -24,-41.57 24,-41.57 48,0" />
<text text-anchor="middle" dominant-baseline="middle" font-size="14" pointer-events="none">the Button</text>
</svg>