设计稿底部导航切换动画怎么做

联启 设计影音工具 16

本文目录导读:

设计稿底部导航切换动画怎么做-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 前端代码实现(以移动端常见框架为例)
  2. 设计工具实现(用于高保真原型或演示)
  3. 设计稿中需要标注的关键信息
  4. 不同场景的推荐方案

设计稿中的底部导航切换动画,核心在于微交互——通过流畅的视觉变化引导用户感知当前处于哪个Tab。

实现方式主要分为两类:前端代码实现(推荐)动效设计工具实现,下面分别介绍这两种思路,并重点讲解前端代码实现中的几种流行效果。


前端代码实现(以移动端常见框架为例)

这是最终产品的实现方式,也是设计师需要与开发对齐的地方,核心思路是状态驱动 + CSS过渡/动画

基础效果:图标/文字颜色与大小的平滑过渡

这是最常用、最保险的效果,几乎所有框架都支持。

  • 原理: 利用CSS的 transition 属性,监听 colorfont-sizeopacity 的变化。
  • 实现:
    .tab-item {
      transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }
    .tab-item.active {
      color: #007aff;
      font-size: 24px; /* 图标放大 */
    }
  • 效果: 图标从灰色变为蓝色,同时轻微放大;文字从灰色变为深色。

进阶效果:指示器(小红点/下划线)滑动

视觉上最“显眼”的切换动画,告诉用户当前在哪个位置。

  • 原理: 使用一个绝对定位的 div(指示器),通过计算当前激活Tab的 offsetLeftoffsetTop 来移动它。
  • 实现(Vue3 + 原生JS示意):
    <div class="tab-bar">
      <div class="indicator" :style="{ transform: `translateX(${activeOffset}px)` }" />
      <div v-for="tab in tabs" :key="tab.id" @click="switchTab(tab)">
        <span>{{ tab.label }}</span>
      </div>
    </div>
    const switchTab = (tab) => {
      activeTab.value = tab.id;
      // 获取该tab DOM元素的offsetLeft
      const el = document.querySelector(`#tab-${tab.id}`);
      activeOffset.value = el.offsetLeft;
    };
    .indicator {
      position: absolute;
      bottom: 0;
      height: 3px;
      width: 20px;
      background: blue;
      transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); /* 带弹性的缓出 */
    }
  • 效果: 指示器像一个滑块,从一个Tab平滑“滑”到另一个Tab。

高级效果:图标/背景形态变换(类似抖音/TikTok)

这种效果在App中越来越流行,视觉冲击力强。

  • 原理: 利用 SVG 路径动画或 Lottie 动画,图标本身在不同Tab状态下有不同的形状,通过 pathd 属性变化或形态插值来实现。
  • 实现(使用 Lottie):
    1. 设计师工作: 在 After Effects 中设计好每个Tab的切换动画(一个心形从“空心”变成“实心”并弹跳一下),导出为 json 格式的 Lottie 文件。
    2. 前端工作:
      import lottie from 'lottie-web';
      // 创建动画实例
      const anim = lottie.loadAnimation({
        container: document.getElementById('tab-icon'),
        renderer: 'svg',
        loop: false,
        autoplay: false,
        path: 'data.json' // 从设计稿导出的json
      });
      // 点击Tab时,控制播放到特定帧
      const switchTab = () => {
        if (isActive) {
          anim.playSegments([0, 60], true); // 播放从0到60帧的动画
        } else {
          anim.playSegments([60, 0], true); // 逆向播放
        }
      };
  • 效果: 图标本身具有生动的微动画(如:星星旋转闪烁、房子门打开、人物点头),体验非常细腻。

交互细节提升

除了主动画,还可以结合触摸反馈增强体验:

  • 点击态(Ripple 波纹): 点击时从点击点扩散开一个半透明圆。
  • 缩放反馈: 点击瞬间图标缩小到0.9倍,松手后弹回1.0倍。
  • Haptic (触感): 配合手机的振动反馈(需原生能力),在切换时提供物理触感。

设计工具实现(用于高保真原型或演示)

如果你正在做设计稿,单纯为了展示给客户或开发看效果,推荐以下两种方式:

  1. Figma + Smart Animate:

    • 创建两个页面(Page 1 和 Page 2),每个页面中底部导航的布局一致,但切换状态的Tab样式不同。
    • 设置连接:点击Tab 1 跳转到 Page 2,交互触发选项选择“Smart Animate”。
    • 效果:Figma会自动识别两个页面中相同图层(如同一个Tab图标)的位置、大小、颜色变化,并生成平滑的补间动画。
  2. Prototype (Pixso / Framer):

    使用这些工具的内置组件库,通常自带底部导航切换的动效预设,直接拖拽并调整参数即可。


设计稿中需要标注的关键信息

为了确保前端能完美还原,在设计稿中(尤其是交付给开发时),务必标注清楚:

项目 需要标注的内容 例子
动画时长 整个切换过程持续多久 300ms3s
缓动函数 是匀加速、先快后慢,还是带弹性 cubic-bezier(0.34, 1.56, 0.64, 1) (带弹性的缓出)
状态变化 未选中 -> 选中 的具体属性变化 图标颜色:#A0A0A0 -> #007AFF,图标大小:22px -> 26px
指示器 宽度、高度、圆角、移动范围 宽度 20px,高 3px,圆角 5px,居中于Tab文字上方
图标动画 如果需要复杂动画(如Lottie) 提供最终的 xxx.json 文件,并说明播放模式和触发时机

不同场景的推荐方案

  • 普通App(功能型): 使用 颜色+大小滑动过渡指示器滑动,实现简单,性能最好。
  • 社交/娱乐App(沉浸式): 使用 Lottie 图标动画 + 背景形态切换,体验更生动,但需要设计师配合输出动画文件。
  • 原型演示/设计稿: 使用 Figma Smart AnimateFramer 直接生成。

最后建议: 动画的“度”很重要,底部导航作为高频交互组件,动画应当快速(200-300ms)、流畅、不阻塞操作,过于花哨或漫长的动画会让用户感到拖延。

标签: 底部导航 切换动画

抱歉,评论功能暂时关闭!