Skip to content

Anchor(锚点)

概述

Anchor (锚点) 组件用于实现页面内的锚点导航,通常应用于页面较长或有多个部分的内容展示。通过该组件,用户可以快速跳转到页面的不同位置,提升页面的可用性和用户体验。支持水平和竖直两种布局,且可以与图标结合使用,提供更加丰富的视觉效果。它能够根据需求自定义目标元素的定位,并且在用户点击锚点时平滑滚动至目标位置。

预览


基本使用
<template>
  <!-- 竖直排列的锚点 -->
  <SeAnchor :items="anchorItems" type="vertical" @anchor-clicked="handleAnchorClick"  />
  <br/>
  <!-- 水平排列的锚点 -->
  <SeAnchor :items="anchorItems" type="horizontal" @anchor-clicked="handleAnchorClick"  />
</template>

<script lang="ts" setup>
import { ref } from "vue";

// 定义锚点项
const anchorItems = ref([
  { text: "Section 1", link: "#section1", icon: 'material-symbols:home', targetId: "section1", active: true },
  { text: "Section 2", link: "#section2", icon: "material-symbols:settings-outline", targetId: "section2" },
  { text: "Section 3", link: "#section3", icon: "mdi:user", targetId: "section3" },
]);

// 监听锚点点击事件
const handleAnchorClick = (clickedItem: any) => {
  console.log("锚点项被点击:", clickedItem);

  // 遍历锚点项,切换活动状态
  anchorItems.value.forEach(item => {
    // 将点击的锚点项设为 active,其他项设为非活动状态
    item.active = item === clickedItem;
  });

  // 可以在此处执行其他操作,例如滚动页面、修改其他状态等
};
</script>

功能说明

Anchor 组件提供了一个导航工具,用户点击锚点时,页面会平滑地跳转到与该锚点关联的目标区域。这个功能通常应用于多部分页面,帮助用户更便捷地浏览不同内容。组件支持水平和竖直两种排列方式,并且可以添加自定义图标,方便与页面其他元素风格一致。

  • 支持多种布局方式:用户可以选择垂直排列或水平排列的锚点样式,适应不同页面布局需求。
  • 图标支持:每个锚点可以显示一个图标,通过集成 se-icon 组件为每个锚点项添加图标,使其更具可视化效果。
  • 平滑滚动:点击锚点后,页面将平滑滚动至对应的目标元素,提高页面交互体验。
  • 自定义目标ID:通过 targetId 属性,用户可以控制锚点点击后的目标元素。

Anchor 参数

参数名类型默认值描述跳转 Demo
itemsArray<BreadcrumbItem>[]必选,锚点项的数组。每个项可以包含文本、链接、图标等信息。示例
typeStringvertical可选,指定锚点的布局方式,支持 vertical(竖直)和 horizontal(水平)。示例
targetIdString""可选,指定锚点的目标元素的ID,通过 scrollIntoView 滚动到页面上的指定元素。示例

anchorItems 定义

每个锚点项的内容都通过 anchorItems 类型定义,包含以下属性:

属性名类型默认值描述
textstring必填锚点的显示文本。
linkstring可选锚点的链接地址。点击时会跳转到该链接,若为空,则视为普通文本。
iconstring可选图标名称,支持 se-icon 组件传入图标名称,作为锚点的左侧图标。
activebooleanfalse可选,当前是否为激活的锚点项,激活项通常有特定样式(如高亮显示)。
targetIdstring可选可选,点击锚点后滚动页面到指定元素的ID。

参数说明

  • items:一个数组,包含若干个锚点项,每个锚点项会根据其内容展示相应的锚点链接或文本。
  • type:指定锚点的布局方式,支持 verticalhorizontalvertical 会显示为竖直排列,horizontal 为水平排列。
  • targetId:指定点击锚点时页面滚动的目标元素ID,支持 scrollIntoView 平滑滚动。

其他说明

  • 自定义图标:每个锚点可以通过传入 icon 属性添加一个图标,提升页面的视觉效果。默认情况下,图标是可选的。
  • 平滑滚动:当用户点击锚点时,页面会平滑滚动到相应目标元素,这个效果是通过 scrollIntoView 来实现的,带来更流畅的用户体验。

Released under the MIT License.