如何在CSS中使用边框的clip-path属性

2 html css clip-path

我必须clip-part做出“偷工减料”的效果。

按钮看起来像这样

我想将背景更改为白色并使用绿色边框。问题是,当我将背景更改为白色时,角落是空的:

如果没有背景,边框角不显示

如何在悬停时制作绿色边框角?

.test {
  background: red;
  width: 100px;
  height: 100px;
  /* CORNERS */
  clip-path: polygon(10px 0%, calc(100% - 10px) 0%, 100% 10px, 100% calc(100% - 10px), calc(100% - 10px) 100%, 10px 100%, 0% calc(100% - 10px), 0% 10px);
}

.test:hover {
  background: white;
  cursor: pointer;
  border: 3px solid green;
}
Run Code Online (Sandbox Code Playgroud)
<div class='test'>Test</div>
Run Code Online (Sandbox Code Playgroud)

JSFIDDLE

Tem*_*fif 7

添加一些渐变来填充缺失的空间:

.test {
  background: red;
  width: 100px;
  height: 100px;
  box-sizing:border-box;
  
  /* CORNERS */
    clip-path: polygon(10px 0%, calc(100% - 10px) 0%, 100% 10px, 100% calc(100% - 10px), calc(100% - 10px) 100%, 10px 100%, 0% calc(100% - 10px), 0% 10px);
}

.test:hover {
  --grad:transparent 49.5%,green 50%;
  background: 
    linear-gradient(to top right   ,var(--grad)) top    right,
    linear-gradient(to top left    ,var(--grad)) top    left,
    linear-gradient(to bottom right,var(--grad)) bottom right,
    linear-gradient(to bottom left ,var(--grad)) bottom left,
    white;
  background-size:13px 13px; /* 10px of the clip-path + 3px of border */
  background-repeat:no-repeat;
  background-origin:border-box;
  cursor: pointer;
  
  border: 3px solid green;
}
Run Code Online (Sandbox Code Playgroud)
<div class='test'>
 </div>
Run Code Online (Sandbox Code Playgroud)