• 如何给超链接下划线添加动画效果
  • 发布于 2个月前
  • 667 热度
    0 评论
网页中 <a> 标签是带有如下这样一个下划线的样式,我们也可以通过 text-decoration 属性去设置成别的样式。

Hover This Text
而我们今天要讨论的下划线动画,是无法直接通过哪个 CSS 属性设置的。我们只能通过伪造的方式模拟出一个下划线的效果。

首先我们将 <a> 标签的默认下划线去掉,然后将鼠标 hover 后的字体颜色保持一致。
a {
  position: relative;
  color: #000;
  text-decoration: none;
}

a:hover {
  color: #000;
}
接下来我们通过伪元素 ::before 设置它的高度,并且填充颜色来模拟成边框,将它绝对定位在文字的底部。
a::before {
  content: "";
  position: absolute;
  display: block;
  width: 100%;
  height: 2px;
  bottom: 0;
  left: 0;
  background-color: #000;
  transform: scaleX(0);
  transition: transform 0.3s ease;
}
我们通过 CSS 的动画属性 transform 将边框 X 轴上的规模从 0 变到 1 模拟出从无到有的过程。
a:hover::before {
  transform: scaleX(1);
}
最后的效果如下(将鼠标指针移动到文字上):

现在动画的起始位置默认是从中间向左右两边展开的。transform 里还有这样一个属性 transform-orgin,作用就是指定动画是从哪里开始的。如果从 左边开始,即 transform-orgin: top left。

右边则是:transform-orgin: top right。

/* 堆代码 duidaima.com */
/* Animate the line from the left */
a::before {
  content: "";
  position: absolute;
  display: block;
  width: 100%;
  height: 2px;
  bottom: 0;
  left: 0;
  background-color: #000;
  transform: scaleX(0);
  transform-origin: top left;
  transition: transform 0.3s ease;
}

/* Animate the line from the right */
a::before {
  content: "";
  position: absolute;
  display: block;
  width: 100%;
  height: 2px;
  bottom: 0;
  left: 0;
  background-color: #000;
  transform: scaleX(0);
  transform-origin: top right;
  transition: transform 0.3s ease;
}

用户评论