Проблема субпиксельного рендеринга в Chrome с использованием 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. Существует небольшой разрыв между кнопкой и правой стороной, см. Прикрепленный скриншот. Разрыв зависит от размера кнопки, но вы также можете скопировать его, просто изменив размер окна браузера.
Любые идеи, как это исправить?
1 ответ
Решение
Первое, что приходит мне в голову, это сделать так, чтобы ваш путь клипа расширялся на пару пикселей в a
тег. Вы могли бы изменить :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(-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>