CSS技巧:用十行代码写一个跃动文字链的hover效果组件

我不知道这种效果该叫什么名称,姑且叫做「跃动文字链」吧。它的效果就是:在一串文字中,鼠标滑到哪个文字,这个文字就起立。就像这个动图一样:

这个效果可能没有什么业务价值,主打一个互动性和视觉趣味性。试问哪个人看到可互动的动效会舍得离开呢?

代码实现

「跃动文字链」效果实现非常简单,它不在乎你使用HTML、Vue还是React,它只需要你写CSS。

我用TailwindCSS实现的代码如下,一共只要12行,掐头去尾就当作只有10行吧:

jsx 复制代码
export default function Caterpillar({ text, className, bgColor }) {
  const chars = text.split('');
  return (
    <div className={`flex ${className}`}>
      {chars.map((c, i) => (
        <div key={i} className={`flex ${bgColor || 'bg-[#4472c4]'} ${i === 0 ? 'rounded-s-lg' : ''} ${i === chars.length - 1 ? 'rounded-e-lg' : ''} border-top border-bottom border-2 border-brand bg-primary text-background -ml-[2px] pb-[0.1rem] px-2 transition duration-300 ease-in-out hover:-translate-y-1`}>
          <span>{c}</span>
        </div>
      ))}
    </div>
  );
}

${i === 0 ? 'rounded-s-lg' : ''} ${i === chars.length - 1 ? 'rounded-e-lg' : ''} 是给第一个和最后一个块设置圆角边框;
transition duration-300 ease-in-out hover:-translate-y-1 是添加过渡动画,让文字跃动在切换的时候平缓过渡;

调用组件:

tsx 复制代码
<Caterpillar text={BLOG.BIO} className="justify-center text-white -ml-px p-1" bgColor="bg-[#4472c4]" />

如果你使用的是React + TailwindCSS,你可以直接复制我的代码,如果使用Vue,只需要改写标签遍历,这样你就拥有了自己的「文字跃动串」组件啦。

TailwindCSS介绍

如果你还不了解TailwindCSS,可以通过这一节内容入门。

TailwindCSS是一种CSS框架,它几乎把每个CSS属性都写成一个样式类,你可以通过自由组合这些样式类来创建复杂的设计和布局。这种思想也被称作"原子化"设计。

TailwindCSS相比传统的CSS写法有几个优势:

  • 高效性:通过使用样式类,开可以快速地构建界面而不必写很多自定义CSS
  • 响应式设计:Tailwind内置了响应式设计的样式类,使得创建响应式设计非常高效
  • 高度可定制:可以通过Tailwind的配置文件轻松扩展样式设计

TailwindCSS用法

无论是在Vue、React还是Next.js项目中,使用TailwindCSS的步骤类似。以下是使用步骤:

  1. 安装依赖

    csharp 复制代码
    npm install tailwindcss postcss autoprefixer
    npx tailwindcss init

    这会安装TailwindCSS及其依赖,并创建一个 tailwind.config.js 配置文件。

  2. 在CSS里引入Tailwind的层

    在主CSS文件里引入以下代码:

    less 复制代码
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
  3. 扩展配置

    tailwind.config.js 里,你可以扩展自己的设计。如果没有特殊的UI需求,使用默认配置就足够了。

结语

挖掘CSS技巧的过程也是学习设计的过程,关注我的掘金专栏,一起学习CSS新特性和好看的样式设计。

专栏资源

专栏介绍:分享CSS新特性和好看的样式设计

专栏地址:👉# 简明实用CSS技巧

相关推荐
aha-凯心29 分钟前
前端学习 vben 之 axios interceptors
前端·学习
熊出没1 小时前
Vue前端导出页面为PDF文件
前端·vue.js·pdf
VOLUN1 小时前
Vue3项目中优雅封装API基础接口:getBaseApi设计解析
前端·vue.js·api
用户99045017780091 小时前
告别广告干扰,体验极简 JSON 格式化——这款工具让你专注代码本身
前端
前端极客探险家1 小时前
告别卡顿与慢响应!现代 Web 应用性能优化:从前端渲染到后端算法的全面提速指南
前端·算法·性能优化
袁煦丞2 小时前
【局域网秒传神器】LocalSend:cpolar内网穿透实验室第418个成功挑战
前端·程序员·远程工作
江城开朗的豌豆2 小时前
Vuex数据突然消失?六招教你轻松找回来!
前端·javascript·vue.js
好奇心笔记2 小时前
ai写代码随机拉大的,所以我准备给AI出一个设计规范
前端·javascript
江城开朗的豌豆2 小时前
Vue状态管理进阶:数据到底是怎么"跑"的?
前端·javascript·vue.js
用户21411832636022 小时前
dify案例分享-Dify v1.6.0 重磅升级:双向 MCP 协议引爆 AI 生态互联革命
前端