Skip to content
通用组件

回到顶部FAB

右下角 44px 反色浮动按钮,滚过一屏淡入。整页那枚由皮肤输出;Vue 版 AkBackTop 给页面里的滚动区域。

Vue
实验import { AkBackTop } from "@mooncellwiki/prts-design-vue"Storybook ↗源码 ↗

右下角 44px 的反色方块(悬停变主色),滚过一屏淡入,点了平滑滚回顶部。

整页那一枚由皮肤输出(骨架末尾的 button.ak-fab,skin.js 滚过 600px 加 .is-visible),模板 / 小部件不用再放。它在侧栏还在的宽度(≥ 1120)出现:更窄时侧栏变抽屉,「回到顶部」改由目录浮层首项承担——右侧已经有一枚目录按钮(.ak-toc-btn,同款方块,见目录),不再多浮一枚。1120–1400 目录浮层开着时它也让位。

外观 ​

Vue 版照 Naive UI 叫 AkBackTop(同 n-back-top)。v-model 是是否显示;:visibility-height="false" 时不看滚动,显隐完全由 v-model 定。

滚动区域里的回到顶部 ​

Vue 版主要给页面里某个自己滚动的区域用(长列表、搜索结果面板):position="absolute" 贴最近的定位祖先右下,listen-to 指向滚动容器(元素或选择器),滚过 visibility-height(默认 600,同皮肤)出现,点了把这个容器滚回顶部。absolute 的不受 < 1120 收起的影响。回到顶部按钮要放在滚动容器外面(和它同在一个 position: relative 的框里),否则会跟着内容一起滚走。

可访问性 ​

  • 只有图标,label(默认「回到顶部」)同时作 aria-label 与 title。
  • 隐藏时(opacity: 0)标 inert:不可点、不进 Tab 顺序、读屏读不到——不会在角落留一枚看不见的按钮。
  • 系统开了「减少动态效果」时直接跳回顶部,不平滑滚动。

Vue API ​

属性类型默认说明
labelstring"回到顶部"可访问名(aria-label,同时作 title)
iconIconName"up"图标
visibilityHeightnumber | false600滚动超过多少 px 出现(同 Naive 的 visibility-height);false = 不看滚动,显隐完全由 v-model 定
listenTostring | HTMLElement | null—监听、并滚回顶部的滚动容器(元素或选择器);不写 = 整页。模板 ref 还没就绪(null)时先不监听
position"fixed""absolute""fixed"定位:fixed 贴视口右下(默认,整页一枚)· absolute 贴最近的定位祖先右下(配合 listen-to 给页面里的滚动区域)
modelValuebooleanfalse是否显示;visibility-height 是数字时组件按滚动距离自己更新它
事件参数说明
update:modelValue[value: boolean]

CSS 实现 ​

皮肤输出的结构(图标用 sprite):

html
<button class="ak-fab" aria-label="回到顶部"><svg width="18" height="18"><use href="#i-up"/></svg></button>

显隐由脚本切 .is-visible。.ak-fab--absolute 是 Vue 版 position="absolute" 用的修饰类:贴定位祖先右下、任何宽度都显示。

块元素 __修饰 --

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有