CSS 多行文本超链接下划线动效

css,多行,文本,超链接,下划线 · 浏览次数 : 67

小编点评

**效果概述** 代码使用 CSS 的线性渐变 linear-gradient 实现一个动态下划线的效果。鼠标移入时下划线从头到尾逐渐消失,移出时从尾到头逐渐消失。 **代码分析** ```css .container { width: 400px; } .link { font-size: 1.2em; line-height: 1.6em; text-decoration: none; font-family: sans-serif; color: #333; } .underline { width: calc(100%); /* 兼容IE */ background-image: linear-gradient(transparent calc(100% - 2px), powderblue 2px); background-repeat: no-repeat; background-position: right; background-size: 0% 100%; transition: background-size 1s ease; } .link:hover .underline { background-position: left; background-size: 100% 100%; } ``` **修改说明** * `calc(100% - 2px)` 设置下划线起始位置的偏移量。 * `background-repeat: no-repeat` 设置下划线不重复。 * `background-size: 0% 100%` 设置下划线初始位置和结束位置的宽度。 * `transition` 属性控制动画播放速度。 **总结** 这个代码使用 CSS 的线性渐变实现了一个动态下划线的效果,鼠标移入时下划线从头到尾逐渐消失,移出时从尾到头逐渐消失。

正文

先看效果

image

乍一看,是不是感觉很简单,仔细一瞅发现事情好像没有那么简单。

如果十分钟还没想出怎么实现,那就把简历上的“精通css”改成“了解css”……😅

大部分人第一感觉都是想着用border-bottom去做,但是仔细看一下这个是多行文本,下划线始终在最后一行肯定是不合适的,而且下划线运动轨迹是:鼠标移入-从从到尾显示,鼠标移出-从头到尾消失。

代码实现

让我们进入正题,这个效果是使用css的线性渐变linear-gradient实现的,具体代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      width: 400px;
    }

    .link {
      font-size: 1.2em;
      line-height: 1.6em;
      text-decoration: none;
      font-family: sans-serif;
      color: #333;
    }

    .underline {
      width: calc(100%); /* 兼容IE */
      background-image: linear-gradient(transparent calc(100% - 2px), powderblue 2px);
      background-repeat: no-repeat;
      background-position: right;
      background-size: 0% 100%;
      transition: background-size 1s ease;
    }

    .link:hover .underline {
      background-position: left;
      background-size: 100% 100%;
    }
  </style>
</head>

<body>
  <div class="container">
    <a class="link" href="#">
      <span class="underline">I'm a super cool link because my underline animation works even in
        multiple lines!
      </span>
    </a>
  </div>
</body>

</html>

这里修改了background-position属性设置背景图像的起始位置,使得鼠标移出后的下划线运动轨迹是从头到尾消失,而不是反过来,如果不设置则是如下效果:

image

这个效果代码我就不复制了,把上面的background-position: right;和 hover 中的background-position: left;删掉就是了。

与CSS 多行文本超链接下划线动效相似的内容:

CSS 多行文本超链接下划线动效

先看效果 乍一看,是不是感觉很简单,仔细一瞅发现事情好像没有那么简单。 如果十分钟还没想出怎么实现,那就把简历上的“精通css”改成“了解css”……😅 大部分人第一感觉都是想着用border-bottom去做,但是仔细看一下这个是多行文本,下划线始终在最后一行肯定是不合适的,而且下划线运动轨迹是

CSS文本,字体设置与元素边框,阴影,显示模式

什么是元素的显示模式 网页中的标签很多,在不同的地方使用不同类型的标签。 元素显示模式就是标签以什么方式进行显示。如:div自己占一行,span一行可以放多个。 HTML元素一般分为块元素和行内元素两种类型。 块元素 常见的块元素有: ~, , , ,

Typora markdown 满屏显示,去除两边的留白

Typora 宽度在CSS样式文件中有个 max-width 值,现在的显示器分辨率比较高,会导致编辑器两边留白比较多 导致文档编辑时,高分辨率的显示器,得不到充分利用

视野修炼-技术周刊第92期 | 薅牛毛

① YakShaving - 薅牛毛 ② CSS OneLiners ③ Vue Vine - 单文件编写多 Vue 组件 ④ CDN 流量被盗刷经历 ⑤ es-toolkit ⑥ console.log 体验优化 ⑦ 诗境 - 根据图片匹配诗句

CSS必知必会

CSS概念 css的使用是让网页具有统一美观的页面,css层叠样式表,简称样式表,文件后缀名.css css的规则由两部分构成:选择器以及一条或者多条声明 选择器:通常是需要改变的HTML元素 声明:由一个属性和一个值组成,每个属性有一个值,属性和值使用类似key:value的形式(如下方h1就是选

千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby/ChatGpt)

我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里的老爷车,比如因为所谓完美的音质而舍不得一个老旧的有线耳机,比如因为一个铜炉火锅而期待北京那漫长而寒冷的冬天。

如何正确使用:has和:nth-last-child

我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的`grid`。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会根据子元素的数量而改变。 这在CSS中已经存在很多年了,但现在通过CSS `:has`,它变得更加强大。我们可以把`nt

开发人员的技术写作

HTML、CSS、JavaScript、Python、PHP、C++、Dart--有这么多的编程语言,你甚至可能完全精通其中的几种。但是,随着我们的目标是写出更多、更好的代码,我们用日常语言写作和交流的方式变得越来越重要......甚至可能被忽略了。 我们编写和讨论代码的方式可以说与代码本身同样重要

CSS3新特性值逻辑选择器

1. :is 解释::is() CSS伪类函数将选择器列表作为参数,并选择该列表中任意一个选择器可以选择的元素。 例如 对于多个不同父容器的同个子元素的一些共性样式设置,传统写法如下 header p:hover, main p:hover, footer p:hover { color: red;

【译】使 Visual Studio 更加可视化

任何 Web、桌面或移动开发人员都经常使用图像。你可以从 C#、HTML、XAML、CSS、C++、VB、TypeScript 甚至代码注释中引用它们。有些图像是本地的,有些存在于线上或网络共享中,而其他图像可能仅以 base64 编码字符串的形式存在。我们在代码中以多种方式引用它们,但总是作为字符