Skip to content

Steps 步骤条

引导用户按照流程完成任务的导航条,赛博朋克主题风格。

基础用法

简单的步骤条,展示游戏任务进度。

vue
<template>
  <ExSteps :current="1">
    <ExStep title="选择模式" description="选择你的游戏模式" />
    <ExStep title="创建角色" description="自定义你的游戏角色" />
    <ExStep title="开始游戏" description="进入游戏世界" />
  </ExSteps>
</template>

带图标的步骤条

通过插槽可以自定义图标,展示更丰富的视觉效果。

vue
<template>
  <ExSteps :current="1">
    <ExStep title="登录">
      <template #icon>
        <img src="https://api.iconify.design/ri/user-line.svg" alt="用户" width="20" height="20" />
      </template>
    </ExStep>
    <ExStep title="验证">
      <template #icon>
        <img src="https://api.iconify.design/ri/shield-check-line.svg" alt="验证" width="20" height="20" />
      </template>
    </ExStep>
    <ExStep title="完成">
      <template #icon>
        <img src="https://api.iconify.design/ri/check-line.svg" alt="完成" width="20" height="20" />
      </template>
    </ExStep>
  </ExSteps>
</template>

垂直步骤条

垂直方向的步骤条,适合侧边栏展示。连线从图标底部延伸到下一个步骤。

vue
<template>
  <ExSteps :current="1" direction="vertical">
    <ExStep title="任务一" description="完成新手教程,学习基础操作" />
    <ExStep title="任务二" description="达到10级,解锁更多功能" />
    <ExStep title="任务三" description="解锁新地图,探索更多区域" />
    <ExStep title="任务四" description="完成主线任务,获得奖励" />
  </ExSteps>
</template>

步骤状态

可以通过 status 属性设置当前步骤的状态。

vue
<template>
  <ExSteps :current="1" status="error">
    <ExStep title="已完成" description="这一步已经完成" />
    <ExStep title="出错了" description="这一步出现了错误" />
    <ExStep title="待进行" description="这一步还未开始" />
  </ExSteps>
</template>

可点击的步骤条

设置 clickable 属性后,步骤可以点击切换。

vue
<template>
  <ExSteps :current="current" clickable @change="current = $event">
    <ExStep title="步骤一" description="选择游戏模式" />
    <ExStep title="步骤二" description="创建角色" />
    <ExStep title="步骤三" description="开始游戏" />
  </ExSteps>
  <div style="margin-top: 24px;">
    <ExButton @click="prev">上一步</ExButton>
    <ExButton type="primary" @click="next">下一步</ExButton>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const current = ref(0)

const next = () => {
  if (current.value < 2) current.value++
}

const prev = () => {
  if (current.value > 0) current.value--
}
</script>

不同尺寸

提供三种尺寸:small、medium、large。

vue
<template>
  <ExSteps :current="1" size="small">
    <ExStep title="步骤一" />
    <ExStep title="步骤二" />
    <ExStep title="步骤三" />
  </ExSteps>
</template>

进度点模式

使用进度点模式,显示小圆点而不是大图标,更简洁的视觉效果。

vue
<template>
  <ExSteps :current="2" progress-dot>
    <ExStep title="账号注册" description="创建游戏账号" />
    <ExStep title="角色创建" description="自定义角色外观" />
    <ExStep title="新手教程" description="学习基础操作" />
    <ExStep title="开始游戏" description="进入游戏世界" />
  </ExSteps>
</template>

垂直进度点模式

进度点模式也支持垂直方向。

vue
<template>
  <ExSteps :current="1" direction="vertical" progress-dot>
    <ExStep title="步骤一" description="完成第一步" />
    <ExStep title="步骤二" description="完成第二步" />
    <ExStep title="步骤三" description="完成第三步" />
  </ExSteps>
</template>

自定义颜色

可以自定义步骤的图标颜色、标题颜色和连接线颜色。

vue
<template>
  <ExSteps :current="1">
    <ExStep 
      title="自定义紫色" 
      description="自定义图标和标题颜色"
      icon-color="#9333ea"
      title-color="#9333ea"
      line-color="#9333ea"
    />
    <ExStep 
      title="自定义橙色" 
      description="自定义图标和标题颜色"
      icon-color="#f97316"
      title-color="#f97316"
      line-color="#f97316"
    />
    <ExStep 
      title="自定义粉色" 
      description="自定义图标和标题颜色"
      icon-color="#ec4899"
      title-color="#ec4899"
    />
  </ExSteps>
</template>

带子标题

可以为每个步骤添加子标题。

vue
<template>
  <ExSteps :current="1">
    <ExStep 
      title="账号注册" 
      subtitle="创建你的游戏账号"
      description="填写基本信息完成注册" 
    />
    <ExStep 
      title="角色创建" 
      subtitle="自定义你的角色"
      description="选择职业、外观和技能" 
    />
    <ExStep 
      title="进入游戏" 
      subtitle="开始你的冒险"
      description="探索广阔的游戏世界" 
    />
  </ExSteps>
</template>

API

Steps Props

属性说明类型默认值
current当前步骤(从0开始)number0
status当前步骤的状态'wait' | 'process' | 'finish' | 'error''process'
direction步骤条方向'horizontal' | 'vertical''horizontal'
size步骤条大小'small' | 'medium' | 'large''medium'
progress-dot是否使用进度点模式booleanfalse
clickable步骤是否可点击booleanfalse
aria-label无障碍标签string'Steps navigation'

Steps Events

事件名说明类型
change点击步骤时触发(index: number) => void

Steps Methods

方法名说明参数
getElement获取步骤条 DOM 元素-
goTo跳转到指定步骤(index: number)
next下一步-
prev上一步-

Step Props

属性说明类型默认值
title标题string-
description描述string-
subtitle子标题string-
status步骤状态(会覆盖父组件的status)'wait' | 'process' | 'finish' | 'error'-
disabled是否禁用booleanfalse
clickable是否可点击(会覆盖父组件的clickable)boolean-
icon-color自定义图标颜色string-
title-color自定义标题颜色string-
line-color自定义连接线颜色string-

Step Slots

插槽名说明
icon自定义图标
title自定义标题
subtitle自定义子标题
description自定义描述

Step Methods

方法名说明参数
getElement获取步骤 DOM 元素-
getIndex获取步骤索引-

无障碍支持

  • 使用 role="navigation" 标识导航区域
  • 使用 aria-current="step" 标识当前步骤
  • 使用 aria-disabled 标识禁用状态
  • 支持键盘导航(Enter 和 Space 键)
  • 支持屏幕阅读器
  • 支持 prefers-reduced-motion 减少动画

主题定制

可以通过 CSS 变量自定义步骤条样式:

css
:root {
  --ex-color-neon-blue-500: #00f0ff;
  --ex-color-success: #10b981;
  --ex-color-error: #ef4444;
  --ex-color-border-secondary: #374151;
}