悬停时从底部到顶部更改背景

时间:2013-12-18 13:32:17

标签: css3 background css-transitions

我如何使用从底部到顶部的过渡来更改a:hover上的背景颜色,持续时间为0.3秒?

<ul>
  <li><a></a></li>
  <li><a></a></li>
  <li><a></a></li>
</ul>

这可能吗?

由于

1 个答案:

答案 0 :(得分:7)

无法(通常)在CSS中应用转换方向。但是,我们可以通过使用伪元素(或其他方法,如this example如何使用渐变)来解决这种限制。

通过使用最初可见高度为0的伪元素,我们可以在链接悬停时将高度从和转换到所需的方向。出于性能原因,最好使用transform: scale,这意味着我们需要在这种情况下将transform-origin设置为bottom center,以确保它从下到上。

这种方法可能是最常用的,使用非实体背景等,但确实需要伪元素或子元素。

该方法的CSS将是:

li {
    background: red;
}
a {
    position: relative;
    z-index: 1;
}
a::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transform: scaleY(0);
    transform-origin: bottom center;
    background: blue;
    z-index: -1;
    transition: transform 0.3s;
}
a:hover::after {
    transform: scaleY(1);
}

Demo