Skip to content

Anchor 锚点

Anchor 用于快速定位当前页面或滚动容器内的信息位置。VISTA B 直接使用 Element Plus 的 el-anchor,适合长表单、配置页、报价计算器追加内容、户型选择这类内容较长且需要快速跳转的页面。

后台选择户型页面可用横向锚点选择建筑、竖向锚点选择楼层;当内容不适合拆成 Tab 时,可以平铺展示并使用锚点快速定位。

基础用法

el-anchor 包裹多个 el-anchor-link。默认是纵向排列,支持通过 sub-link 插槽添加子级锚点。

基础信息

页面入口、项目名称、筛选条件等说明信息。

页面结构

长页面按业务模块平铺展示,锚点帮助用户快速定位。

表格区域

展示列表、状态、操作列等高频信息。

卡片区域

展示户型、家具、素材等图文并列内容。

页面操作

保存、提交、导入、批量处理等操作。

vue
<el-anchor :offset="80">
  <el-anchor-link href="#basic" title="基础信息" />
  <el-anchor-link href="#layout" title="页面结构">
    <template #sub-link>
      <el-anchor-link href="#table" title="表格区域" />
      <el-anchor-link href="#card" title="卡片区域" />
    </template>
  </el-anchor-link>
  <el-anchor-link href="#actions" title="页面操作" />
</el-anchor>

水平模式

设置 direction="horizontal" 后,锚点会水平排列。水平模式适合页面顶部的楼栋、分组、阶段切换;官方提示:水平模式不支持 sub-link 插槽。

1 号楼
2 号楼
3 号楼
4 号楼
vue
<el-anchor direction="horizontal" type="underline" :offset="80">
  <el-anchor-link href="#building-1" title="1 号楼" />
  <el-anchor-link href="#building-2" title="2 号楼" />
  <el-anchor-link href="#building-3" title="3 号楼" />
</el-anchor>

滚动容器

container 指定滚动容器。offset 可以设置滚动偏移量;监听 click 事件并调用 preventDefault(),可以避免浏览器默认跳转改写历史记录。

Fixed Top Block

part1

自定义滚动容器中的第一段内容。

part2

内容区高度较长时,右侧锚点跟随滚动状态更新。

part3

可以用于弹窗、面板、详情页内部滚动。

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

const containerRef = ref(null)

const handleClick = (event) => {
  event.preventDefault()
}
</script>

<template>
  <div ref="containerRef" style="height: 300px; overflow-y: auto">
    <section id="part1">part1</section>
    <section id="part2">part2</section>
    <section id="part3">part3</section>
  </div>

  <el-anchor :container="containerRef" :offset="30" @click="handleClick">
    <el-anchor-link href="#part1" title="part1" />
    <el-anchor-link href="#part2" title="part2" />
    <el-anchor-link href="#part3" title="part3" />
  </el-anchor>
</template>

锚点链接变化

监听 change 事件可以拿到当前激活的 href,用于同步页面标题、侧栏状态或埋点。

当前锚点:#anchor-change-basic

基础信息

客户、项目、户型等基础数据。

报价配置

追加项内容较长时使用锚点定位。

提交信息

汇总校验、备注和提交操作。

vue
<el-anchor :offset="80" @change="handleChange">
  <el-anchor-link href="#basic" title="基础信息" />
  <el-anchor-link href="#price" title="报价配置" />
  <el-anchor-link href="#submit" title="提交信息" />
</el-anchor>

下划线类型

设置 type="underline" 后,锚点使用下划线标记当前项。适合顶部导航或需要更轻量视觉标记的场景。

概览

信息摘要。

详情

明细内容。

记录

操作记录。

vue
<el-anchor type="underline" :offset="80">
  <el-anchor-link href="#overview" title="概览" />
  <el-anchor-link href="#detail" title="详情" />
  <el-anchor-link href="#record" title="记录" />
</el-anchor>

固定模式

长页面中,锚点通常与 el-affix 组合,让导航在滚动时保持可见。

固定在页面侧边

适用于详情页、配置页、报价计算器等长内容页面。

vue
<el-affix :offset="60">
  <el-anchor :offset="80" style="width: 220px">
    <el-anchor-link href="#basic" title="基础信息" />
    <el-anchor-link href="#layout" title="页面结构" />
    <el-anchor-link href="#actions" title="页面操作" />
  </el-anchor>
</el-affix>

API

Anchor 属性

属性说明类型默认值
container滚动的容器string / HTMLElement / Window
offset锚点滚动偏移量number0
bound触发锚点的元素位置偏移量number15
duration容器滚动持续时间,单位毫秒number300
marker是否显示标记booleantrue
type锚点类型default / underlinedefault
direction锚点方向vertical / horizontalvertical
select-scroll-top滚动到顶部时是否选中链接booleanfalse

Anchor 事件

事件名说明类型
change激活链接变化时触发(href: string) => void
click点击锚点链接时触发(event: MouseEvent, href?: string) => void

Anchor 方法

方法名说明类型
scrollTo手动滚动到指定位置(href: string) => void

Anchor 插槽

插槽说明
defaultAnchorLink 组件列表
属性说明类型默认值
title链接文本内容string
href链接地址string
插槽说明
default自定义链接内容
sub-link子链接内容,水平模式不支持

HOMEVISTA 设计规范