特殊な形状に枠線をつける時のメモです。
目次
結論
clip-pathを指定した要素に、borderを付けようとしてもうまくいきません↓
上記画像を見て分かる通り切り抜いた部分は、非表示になっています。
そのため、同じclip-pathを指定したサイズ違いの要素を重ねて枠線のように見せる必要があります↓
See the Pen clip-path Octagon button by ユイト (@mikiprogram) on CodePen.
該当コード↓
:root {
--shape-offset: 5px;
--shape-upper-left: 0 var(--shape-offset),var(--shape-offset) 0;
--shape-upper-right:calc(100% - var(--shape-offset)) 0, 100% var(--shape-offset);
--shape-lower-right:100% calc(100% - var(--shape-offset) ), calc(100% - var(--shape-offset)) 100%;
--shape-lower-left:var(--shape-offset) 100%,0 calc(100% - var(--shape-offset));
--octagon:polygon(var(--shape-upper-left), var(--shape-upper-right),var(--shape-lower-right),var(--shape-lower-left));
--base-color: #FFFAF7;
--main-color: #FF8F43;
--inset:3px;
}
.c-button {
position: relative;
display: inline-block;
padding:1rem;
background-color:currentcolor;
clip-path:var(--octagon);
}
.c-button::before {
content: "";
position: absolute;
inset:var(--inset);
background-color: var(--base-color);
clip-path:var(--octagon);
z-index: -1;
}