Chrome 中使用剪辑路径的子像素渲染问题

Sub-pixel rendering issue in Chrome using clip-path

我在右侧有一个带斜角的按钮,这是我使用 clip-path 和 :after 伪选择器实现的。它是这样工作的:

a {
  height:40px;
  line-height:40px;
  color:#fff;
  background:red;
  display:inline-block;
  padding:0 10px;
  position:relative;
}

a:after {
  background: red;
  bottom: 0px;
  -webkit-clip-path: polygon(0% 0%, 5px 5px, 5px 35px, 0px 100%);
  clip-path: polygon(0% 0%, 5px 5px, 5px 35px, 0px 100%);
  content: '';
  display: block;
  position: absolute;
  right: -5px;
  top: 0px;
  width: 5px;
}
<a>test123</a>

问题出在 Chrome。按钮和右侧之间有一个小间隙,请参见随附的屏幕截图。差距因按钮的大小而异,但您也可以在调整浏览器大小时复制它window。

有什么解决办法吗?

我首先想到的是让您的剪辑路径将几个像素延伸到 a 标记中。您可以重新定位 :after,但我只是向您的 clippath 添加了几个点(制作梯形路径)。

a {
  height:40px;
  line-height:40px;
  color:#fff;
  background:red;
  display:inline-block;
  padding:0 10px;
  position:relative;
}

a:after {
  background: red;
  bottom: 0px;
  -webkit-clip-path: polygon(-2px 0%, 0% 0%, 5px 5px, 5px 35px, 0px 100%, -2px 100%);
  clip-path: polygon(-2px 0%, 0% 0%, 5px 5px, 5px 35px, 0px 100%, -2px 100%);
  content: '';
  display: block;
  position: absolute;
  right: -5px;
  top: 0px;
  width: 5px;
}
<a>test123</a>