Во-первых, я искал подобные вопросы в SO, и многие, но ни один из них не имеют точных требований ниже.
Я пытаюсь создать кнопку ниже, используя чистый CSS.
Имеются следующие требования.
- Имеет границу 1px с горизонтальным градиентом.
- Должно быть прозрачным.
- Он должен иметь закругленные углы
- У него будет вырез границы, который также является прозрачным.
- Должны быть переменной ширины и высоты
- Должно работать во всех современных браузерах (кроме IE)
Я создал Кодовую Песочницу, которая получает все это правильно, за исключением радиуса границы. Я использовал многоугольную обрезку пути для вырезания и использовал border-image для градиента, поэтому border-radius не работает.
body {
font-family: sans-serif;
background-color: #232837;
}
.button {
cursor: pointer;
display: inline-block;
height: 40px;
line-height: 40px;
padding: 0 10px;
color: white;
background-color: transparent;
border: solid 1px;
border-radius: 6px;
border-image: linear-gradient(to left, #743ad5 0%, #d53a9d 100%);
border-image-slice: 1;
clip-path: polygon(0 0, 12px 0, 12px 1px, 24px 1px, 24px 0, 100% 0, 100% 100%, 0 100%);
}
<div style="padding:40px;">
<a class="button">This is a button</a>
</div>
https://codesandbox.io/s/kw9p9k5073
Мне удалось избежать использования svgs, поскольку я недостаточно хорошо их понимаю, чтобы правильно реализовать решение, но если мне придется пойти по этому пути, то я это сделаю.
Любой совет будет очень признателен.