目录
滑动高亮链接悬停效果
文本切换链接悬停效果
54b3d6,
通过下划线链接悬停效果
尽情链接吧!
首页 web前端 css教程 CSS链接悬停效应的6个创意

CSS链接悬停效应的6个创意

Mar 14, 2025 am 11:28 AM

6 Creative Ideas for CSS Link Hover Effects

为普通的网页添加一些 CSS 链接悬停效果,可以提升网页的视觉吸引力。如果您曾经在尝试创建炫酷的悬停效果时遇到难题,那么本文将为您提供六种 CSS 效果,您可以直接将它们用于您的下一个项目。

让我们开始吧!

我知道我们正在讨论 :hover,但有时(也许并非总是如此)将 :focus 也包含在内是个好主意,因为并非所有交互都直接来自鼠标,而可能是点击或按键。

滑动高亮链接悬停效果

此效果为内联链接应用一个盒子阴影,同时更改链接文本的颜色。我们首先为链接添加四周的填充,然后添加相同值的负边距,以防止填充破坏文本流。

我们将使用 box-shadow 而不是 background 属性,因为它允许我们进行过渡。

a {
  box-shadow: inset 0 0 0 0 https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6;
  color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6;
  margin: 0 -.25rem;
  padding: 0 .25rem;
  transition: color .3s ease-in-out, box-shadow .3s ease-in-out;
}
a:hover {
  box-shadow: inset 100px 0 0 0 https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6;
  color: white;
}
登录后复制

文本切换链接悬停效果

这是一个有趣的效果,我们可以在悬停时将链接的文本与其他文本互换。将鼠标悬停在文本上,链接文本会滑出,新的文本会滑入。

演示比描述更容易理解。

此链接悬停效果中包含大量的技巧。但神奇之处在于使用数据属性来定义滑入的文本,并使用链接的 ::after 伪元素的 content 属性来调用它。

首先,HTML 标记:

<p>Hover <a data-replace="get a link" href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b">get a link</a></p>
登录后复制

这是很多内联标记,但您看到的是一个包含链接和 span 的段落标签。

让我们为链接添加一些基本样式。我们需要为其提供相对定位以保持伪元素(将被绝对定位)到位,确保将其显示为内联块以获得框元素样式的便利性,并隐藏伪元素可能导致的任何溢出。

a {
  overflow: hidden;
  position: relative;
  display: inline-block;
}
登录后复制

::before::after 伪元素应该有一些绝对定位,以便它们与实际链接堆叠在一起。我们将确保它们设置为链接的完整宽度,左位置偏移量为零,为一些滑动操作做好准备。

a::before,
a::after {
 content: '';
  position: absolute;
  width: 100%;
  left: 0;
}
登录后复制

::after 伪元素从 HTML 标记中的链接数据属性获取内容:

a::after {
  content: attr(data-replace);
}
登录后复制

现在我们可以使用 transform: translate3d()::after 伪元素向右移动 200%。我们在 :hover 上将其移回原位。顺便说一下,我们可以为其在顶部方向设置零偏移量。当我们稍后像文本下划线一样使用 ::before 伪元素时,这将非常重要。

a::after {
  content: attr(data-replace);
  top: 0;
  transform-origin: 100% 50%;
  transform: translate3d(200%, 0, 0);
}

a:hover::after,
a:focus::after {
  transform: translate3d(0, 0, 0);
}
登录后复制

我们还将转换 transform: scale() ::before 伪元素,使其默认隐藏,然后在 :hover 上将其缩放回来。我们将使其高度较小,例如 2px,并将其固定到底部,使其看起来像文本下划线,该下划线会与 ::after 交换。

a::before {
  background-color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6;
  height: 2px;
  bottom: 0;
  transform-origin: 100% 50%;
  transform: scaleX(0);
}

a:hover::before,
a:focus::before {
  transform-origin: 0% 50%;
  transform: scaleX(1);
}
登录后复制

其余的都是偏好设置!我们在转换效果上添加一个过渡,一些颜色等等以获得完整的效果。这些值完全取决于您。

查看完整 CSS 代码```css a { overflow: hidden; position: relative; display: inline-block; }

a::before, a::after { content: ''; position: absolute; width: 100%; left: 0; } a::before { background-color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6; height: 2px; bottom: 0; transform-origin: 100% 50%; transform: scaleX(0); transition: transform .3s cubic-bezier(0.76, 0, 0.24, 1); } a::after { content: attr(data-replace); height: 100%; top: 0; transform-origin: 100% 50%; transform: translate3d(200%, 0, 0); transition: transform .3s cubic-bezier(0.76, 0, 0.24, 1); color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6; }

a:hover::before { transform-origin: 0% 50%; transform: scaleX(1); } a:hover::after { transform: translate3d(0, 0, 0); }

a span { display: inline-block; transition: transform .3s cubic-bezier(0.76, 0, 0.24, 1); }

a:hover span { transform: translate3d(-200%, 0, 0); }

https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bhttps://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bhttps://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 增长背景链接悬停效果

这是我在很多地方都看到的一种非常流行的效果。其思想是使用链接的 `::before` 伪元素作为粗下划线,它略微位于链接的实际文本后面。然后,在悬停时,伪元素会扩展以覆盖整个内容。

好的,链接的一些基本样式。我们不需要文本装饰,因为 `::before` 将充当文本装饰,然后是一些相对定位以在赋予绝对定位时保持 `::before` 原位。

```css
a {
  text-decoration: none;
  position: relative;
}
登录后复制

现在让我们设置 ::before,使其高度约为 8px,使其看起来像粗下划线。我们还将为其提供绝对定位,以便我们可以控制使其成为实际链接的完整宽度,同时进行偏移,使其位于左侧,并且距离底部只有一点点,使其看起来像是在微妙地突出显示链接。不妨将其设置为 z-index: -1,这样可以确保它位于链接后面。

a::before {
  content: '';
  background-color: hsla(196, 61%, 58%, .75);
  position: absolute;
  left: 0;
  bottom: 3px;
  width: 100%;
  height: 8px;
  z-index: -1;
}
登录后复制

很好。让我们使其看起来像在悬停链接时 ::before 正在增长。我们只需要将高度从 3px 更改为 100% 即可。请注意,我还将底部偏移量恢复为零,以便背景在增长时覆盖更多空间。

a:hover::before {
  bottom: 0;
  height: 100%;
}
登录后复制

现在为这些更改添加轻微的过渡:

a::before {
  content: '';
  background-color: hsla(196, 61%, 58%, .75);
  position: absolute;
  left: 0;
  bottom: 3px;
  width: 100%;
  height: 8px;
  z-index: -1;
  transition: all .3s ease-in-out;
}
登录后复制

查看完整 CSS 代码```css a { text-decoration: none; color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b18272F; font-weight: 700; position: relative; }

a::before { content: ''; background-color: hsla(196, 61%, 58%, .75); position: absolute; left: 0; bottom: 3px; width: 100%; height: 8px; z-index: -1; transition: all .3s ease-in-out; }

a:hover::before { bottom: 0; height: 100%; }

https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bhttps://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bhttps://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 从右到左的颜色交换链接悬停效果

我个人喜欢在导航中的链接中使用此效果。链接以一种颜色开始,没有下划线。然后,在悬停时,一种新颜色从右侧滑入,而下划线从左侧滑入。

很整洁,对吧?那里有很多动作,因此您可能需要考虑可访问性影响,并将所有内容都包含在 `prefers-reduced-motion` 查询中,以便为那些对运动敏感的人替换为更细微的内容。

以下是它的工作原理。我们为链接提供一个线性背景渐变,在中途的两种颜色之间有一个硬停止。

```css
a {
  background-image: linear-gradient(
    to right,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6 50%,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b000 50%
  );
}
登录后复制

我们将背景设置为链接宽度的两倍,或 200%,并将其完全定位到左侧。这样,就好像只显示了渐变的两种颜色中的一种。

a {
  background-image: linear-gradient(
    to right,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6 50%,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b000 50%
  );
  background-size: 200% 100%;
  background-position: -100%;
}
登录后复制

当我们使用几个非标准的 -webkit- 前缀属性时,就会发生神奇的事情。一个去除文本中的颜色使其透明。另一个将背景渐变剪辑到文本,因此文本实际上似乎是背景的颜色。

a {
  background-image: linear-gradient(
    to right,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6 50%,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b000 50%
  );
  background-size: 200% 100%;
  background-position: -100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
登录后复制

还在跟着吗?现在让我们通过使用 ::before 来创建链接的伪下划线。我们将赋予它与链接背景渐变隐藏部分相同的颜色,并将其定位在实际链接下方,使其看起来像一个正确的 text-decoration: underline

a:before {
  content: '';
  background: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6;
  display: block;
  position: absolute;
  bottom: -3px;
  left: 0;
  width: 0;
  height: 3px;
}
登录后复制

在悬停时,我们将 ::before 滑入到位,从左侧进入:

a:hover {
 background-position: 0;
}
登录后复制

现在,这有点棘手。在悬停时,我们将链接的 ::before 伪元素设置为链接宽度的 100%。如果我们将此直接应用于链接的悬停,我们将使链接本身全宽,这会将其移动到屏幕周围。哎呀!

a:hover::before {
  width: 100%;
}
登录后复制

添加一点过渡以使事情顺利进行:

a {
  background-image: linear-gradient(
    to right,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6 50%,
    https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b000 50%
  );
  background-size: 200% 100%;
  background-position: -100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  transition: all 0.3s ease-in-out;
}
登录后复制

查看完整 CSS 代码```css a { background-image: linear-gradient( to right,

54b3d6,

<code>https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6 50%,
https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b000 50%</code>
登录后复制

); background-size: 200% 100%; background-position: -100%; display: inline-block; padding: 5px 0; position: relative; -webkit-background-clip: text; -webkit-text-fill-color: transparent; transition: all 0.3s ease-in-out; }

a:before { content: ''; background: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b54b3d6; display: block; position: absolute; bottom: -3px; left: 0; width: 0; height: 3px; transition: all 0.3s ease-in-out; }

a:hover { background-position: 0; }

a:hover::before { width:100%; }

https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bhttps://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bhttps://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 彩虹下划线链接悬停效果

我们无法使用 `text-decoration-color: rainbow`,但我们可以通过混合线性渐变和背景魔法来伪造它。

首先,我们删除链接的 `text-decoration`:

```css
a {
  text-decoration: none;
}
登录后复制

现在是渐变。我们在同一个 background 属性上链接两个线性渐变。一个渐变是在悬停之前的初始颜色。第二个是在悬停时的彩虹。

a {
  background:
    linear-gradient(
      to right,
      rgba(100, 200, 200, 1),
      rgba(100, 200, 200, 1)
    ),
    linear-gradient(
      to right,
      rgba(255, 0, 0, 1),
      rgba(255, 0, 180, 1),
      rgba(0, 100, 200, 1)
  );
}
登录后复制

让我们使背景大小仅为 3px 高,使其看起来像,你知道的,下划线。我们可以同时调整 background-size 属性上的两个渐变的大小,以便初始渐变为全宽和 3px 高,而彩虹为零宽度。

a {
  background:
    linear-gradient(
      to right,
      rgba(100, 200, 200, 1),
      rgba(100, 200, 200, 1)
    ),
    linear-gradient(
      to right,
      rgba(255, 0, 0, 1),
      rgba(255, 0, 180, 1),
      rgba(0, 100, 200, 1)
  );
  background-size: 100% 3px, 0 3px;
}
登录后复制

现在我们可以同时在 background-position 属性上定位背景渐变,以便第一个渐变完全可见,而彩虹被推到视野之外。哦,让我们确保在使用时背景不会重复。

a {
  background:
    linear-gradient(
      to right,
      rgba(100, 200, 200, 1),
      rgba(100, 200, 200, 1)
    ),
    linear-gradient(
      to right,
      rgba(255, 0, 0, 1),
      rgba(255, 0, 180, 1),
      rgba(0, 100, 200, 1)
  );
  background-size: 100% 3px, 0 3px;
  background-position: 100% 100%, 0 100%;
  background-repeat: no-repeat;
}
登录后复制

让我们在悬停时更新 background-size,以便渐变交换值:

a:hover {
  background-size: 0 3px, 100% 3px;
}
登录后复制

最后,在悬停发生时进行一点过渡:

a {
  background:
    linear-gradient(
      to right,
      rgba(100, 200, 200, 1),
      rgba(100, 200, 200, 1)
    ),
    linear-gradient(
      to right,
      rgba(255, 0, 0, 1),
      rgba(255, 0, 180, 1),
      rgba(0, 100, 200, 1)
  );
  background-size: 100% 3px, 0 3px;
  background-position: 100% 100%, 0 100%;
  background-repeat: no-repeat;
  transition: background-size 400ms;
}
登录后复制

瞧!

通过下划线链接悬停效果

Geoff Graham 在最近分析 Adam Argyle 的炫酷悬停效果时实际上也介绍了这个效果。在他的演示中,链接后面的背景颜色从左侧进入,然后在鼠标移出时从右侧退出。

我的版本将背景简化为更像下划线。

a {
  position: relative;
}

a::before {
    content: '';
    position: absolute;
    width: 100%;
    height: 4px;
    border-radius: 4px;
    background-color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b18272F;
    bottom: 0;
    left: 0;
    transform-origin: right;
    transform: scaleX(0);
    transition: transform .3s ease-in-out;
  }

a:hover::before {
  transform-origin: left;
  transform: scaleX(1);
}
登录后复制

这并不是实现此目的的唯一方法!以下是 Justin Wong 使用背景的另一种方法:

Geoff 还提供了一系列 CSS 链接悬停效果,从整洁到完全荒谬。值得一看!有关链接和按钮样式的实用内容,请查看 Philip Zastrow 在 DigitalOcean 上的入门教程。

尽情链接吧!

使用 CSS 为内联链接创建自己的悬停效果有很多选择。您甚至可以玩转这些效果并创建新的效果。我希望您喜欢这篇文章。继续尝试吧!

以上是CSS链接悬停效应的6个创意的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

如何将CSS网格用于粘头和页脚 如何将CSS网格用于粘头和页脚 Apr 02, 2025 pm 06:29 PM

CSS网格是一系列属性的集合,旨在使布局比以往任何时候都容易。像任何东西一样,那里有一点学习曲线,但是网格是

Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

See all articles