惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Recent Announcements
Recent Announcements
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
罗磊的独立博客
月光博客
月光博客
J
Java Code Geeks
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog

Hyde Blog

Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog
Hyde Blog
Hyde · 2025-10-05 · via Hyde Blog

首页卡片动画 原创

新建文件 ​

提示

--vp-c-brand-1 是变量来的,我在var.scss文件中定义的,没有的话自己改成颜色代码就行,例如:#5da8ff

  • docs\.vitepress\theme\style\文件夹中,新建text-card-hover.scss文件,并添加以下代码:

scss

/*文章标题动态小横线t*/
$underline-height: 2px; // 下划线高度
$transition-duration: 0.3s; // 下划线动画时长

a {
  position: relative; // 相对定位,以便于设置伪元素的位置
  display: inline-block; // 内联块元素,以便于设置宽度和高度

  &::after {
    content: " "; // 伪元素内容为空
    position: absolute; // 绝对定位,以便于设置位置
    left: 50%; // 水平居中
    bottom: -$underline-height; // 距离底部的距离
    width: 0; // 初始宽度为0
    height: $underline-height; // 高度为下划线高度
    background: var(--vp-c-brand-1); // 下划线颜色
    transform: translateX(-50%); // 水平居中
    transition: {
      property: width, left; // 过渡属性为宽度和left
      duration: $transition-duration; // 过渡时长
      timing-function: ease-out; // 过渡函数为ease-out
    }
  }

  &:hover {
    &::after {
      left: 50; // 线条从中间开始
      width: 100%; // 线条宽度为100%
      transition-timing-function: cubic-bezier(
        0.25,
        0.46,
        0.45,
        0.94
      ); // 过渡函数为cubic-bezier
    }
  }
}

// 文章列表卡片hover阴影圆角效果
.tk-post-item {
  transition: transform 0.3s ease, box-shadow 0.3s ease; // 过渡属性为transform和box-shadow

  &:hover {
    box-shadow: 0 10px 16px -4px var(--vp-c-brand-1); // 首页卡片阴影效果
    transform: translateY(-3px); // 首页卡片向上移动3px
    border-radius: 8px; // 首页卡片圆角效果
  }
}

引入样式 ​

  • docs\.vitepress\theme\style\index.scss文件中,引入text-card-hover.scss文件:

scss

@use "./text-card-hover.scss" as *; // 文字在悬停时会出现下划线动画
  • docs\.vitepress\theme\index.ts文件中,引入index.scss文件:

ts

import "./style/index.scss"; // 引入.vitepress\theme\style\index.scss全局样式