Проблема в том, что проценты относятся к элементу, а не к границе, которая сделает 20%
больше, чем 5px
.
Необходимо учитывать значения пикселей.Вам также нужно начинать снизу, поскольку верхняя ссылка также является верхней частью элемента:
a {
color: #707070 !important;
font-size: 20px;
text-decoration: none;
margin-right: 50px;
border-bottom: 5px solid;
border-image:
linear-gradient(to top, #707070 1px, #a4c0e9 1px, #a4c0e9 4px, #707070 4px) 5;
}
<a>A link element</a>
Или используйте его в качестве фона, и с ним будет легче обращаться:
a {
color: #707070 !important;
font-size: 20px;
text-decoration: none;
margin-right: 50px;
border-bottom: 5px solid transparent;
background:
linear-gradient(to bottom, #707070 20%, #a4c0e9 20%, #a4c0e9 80%, #707070 80%) bottom/100% 5px border-box no-repeat;
}
<a>A link element</a>
Похожие: border-image-slice для градиентного изображения границы
Вот пример для лучшегопроиллюстрируйте проблему, с которой вы столкнулись:
.box {
width:100px;
height:100px;
display:inline-block;
border-bottom:10px solid rgba(0,0,0,0.2);
}
<div class="box" style="background:linear-gradient(to bottom, #707070 20%, #a4c0e9 20%, #a4c0e9 80%, #707070 80%) border-box">
</div>
<div class="box" style="border-image:linear-gradient(to bottom, #707070 20%, #a4c0e9 20%, #a4c0e9 80%, #707070 80%) 10 fill">
</div>
<div class="box" style="border-image:linear-gradient(to bottom, #707070 20%, #a4c0e9 20%, #a4c0e9 80%, #707070 80%) 10 ">
</div>
В этом примере первое поле показывает градиент, который мы будем использовать.Во втором мы применяем его к границе, используя fill
, чтобы также закрасить среднюю область, а в последнем мы окрашиваем только border-bottom