Это один из способов сделать это, но вы также можете относительно позиционировать ссылку и применить псевдоселектор :after
к этой ссылке, чтобы затем полностью позиционировать ее внизу, с изначально установленной высотой 0, чтобы затем заполните его при наведении. Подумайте о чем-то вроде этого:
.link {
position: relative;
}
.link:after {
content: '';
position: absolute;
bottom:0;
left:0;
background-color: green;
width: 100%;
height: 0;
z-index: -1;
transition: height 0.3s linear;
}
.link:hover:after {
height: 100%;
}
Совет: на самом деле плохая практика - переносить что-либо, кроме opacity
или transform
, но есть способы сделать это и этим, например, с scaleY
в сочетании с transform-origin
, установленным на нижнюю часть и начальной высотой 100%, но первый вариант должен быть вполне подходящим.