ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

wot-design-uni Backtop 回到顶部组件:从 onPageScroll 传参到源码级实现解析

wot-design-uni Backtop 回到顶部组件:从 onPageScroll 传参到源码级实现解析 前端UI组件移动开发小程序【免费下载链接】wot-design-uni一个基于Vue3TS开发的uni-app组件库提供70高质量组件支持暗黑模式、国际化和自定义主题。项目地址https://gitcode.com/gh_mirrors/wo/wot-design-uni点击查看免费下载导读wd-backtop是 wot-design-uni基于 Vue3 TypeScript 的 uni-app 组件库中用于返回页面顶部的操作按钮组件。由于 uni-app 组件内部无法直接获取页面滚动信息该组件采用了页面在onPageScroll生命周期中采集滚动距离、通过scrollTopprop 注入组件的数据驱动方案实现了按滚动位置显隐、点击平滑回顶、自定义图标与样式等能力。读完本文你将掌握wd-backtop的完整配置项、各属性的默认值与作用以及它在源码层面的显隐判断、回顶调用与主题定制原理。一、核心设计原理为什么需要外部传入 scrollTopuni-app 的组件尤其是非页面根节点的自定义组件无法在内部直接感知宿主页面的滚动状态页面滚动条信息只能由页面级生命周期onPageScroll获得。因此 wot-design-uni 将监听滚动的职责交给页面把根据滚动距离决定显示与否的职责交给组件页面负责在onPageScroll回调里持续读取e.scrollTop并写入一个响应式变量组件负责接收scrollTopprop通过计算属性判断scrollTop toptop为显示阈值默认 300px来决定按钮是否显示。这一点在组件源码中体现得非常直接见 wd-backtop.vue 源码const show computed(() props.scrollTop props.top)同时在 wd-backtop/types.ts 中scrollTop被定义为必填 propmakeRequiredProp(Number)这与必须由页面持续喂入滚动数据的设计是严格对应的。二、基本用法页面监听滚动并传入组件wd-backtop :scrollTopscrollTop/wd-backtopconst scrollTop refnumber(0) onPageScroll((e) { scrollTop.value e.scrollTop })需要说明的两点scrollTop必须声明为refnumber并通过onPageScroll持续更新否则组件始终拿不到最新滚动位置组件内部通过wd-transition :showshow namefade包裹按钮因此按钮的显示/隐藏带淡入淡出动画不会突兀地闪现。三、自定义图标通过默认插槽替换内置图标不传插槽时组件渲染内置的wd-icon图标名为backtop传入默认插槽后插槽内容会整体替换图标同时iconStyle仅作用于内置图标wd-backtop :scrollTopscrollTop textTOP/text /wd-backtop源码中对应逻辑为wd-backtop.vueslot v-if$slots.default/slot wd-icon v-else custom-classwd-backtop__backicon namebacktop :custom-styleiconStyle /即v-if$slots.default判断是否存在默认插槽存在则渲染插槽内容否则渲染内置返回顶部图标。内置图标的基础尺寸由主题变量--wot-backtop-icon-size控制默认 20px可在 variable.scss 主题变量定义 中查看$-backtop-icon-size: var(--wot-backtop-icon-size, 20px) !default;四、自定义样式customStyle 直通根节点组件根节点以position: fixed悬浮于页面右下角customStyle会被直接拼接到根节点的内联style中可用于覆盖背景色、文字颜色等wd-backtop :scrollTopscrollTop customStylebackground: #007aff;color:white;/wd-backtop根节点的样式拼接逻辑wd-backtop.vuez-index: ${zIndex}; bottom: ${bottom}px; right: ${right}px; ${customStyle}从这段源码可以推断zIndex、bottom、right与customStyle共同组成根节点的内联样式因此customStyle中也可以覆盖bottom/right等定位属性实现更精细的悬浮位置调整。五、Attributes 完整参数表含源码级补充说明文档定义的属性如下以下表格同时补充了类型、默认值以及对应的 types.ts 实现依据参数说明类型可选值默认值源码依据types.tsscrollTop页面滚动距离必填number--makeRequiredProp(Number)top距离顶部多少距离时显示单位pxnumber-300makeNumberProp(300)duration返回顶部滚动时间单位msnumber-100makeNumberProp(100)zIndex组件 z-index 属性number-10makeNumberProp(10)iconStyle自定义内置icon样式string-makeStringProp()shape按钮形状stringcircle/squarecirclemakeStringProp(circle)bottom距离屏幕底部的距离单位pxnumber-100makeNumberProp(100)right距离屏幕右边的距离单位pxnumber-20makeNumberProp(20)各参数的实际作用说明scrollTop驱动显隐的唯一数据源组件每次 prop 更新都会重新计算scrollTop top。top滚动超过该值才显示按钮。例如设置top为 600则页面滚动超过 600px 后按钮才出现演示页 backtop/Index.vue 中通过:topisTop ? 600 : undefined展示了这一用法。duration点击按钮后调用uni.pageScrollTo({ scrollTop: 0, duration })的滚动动画时长单位毫秒。演示页将其调大至 1000ms 来观察平滑回顶效果。zIndex悬浮按钮的层叠级别默认 10可避免被其他浮层遮挡。iconStyle仅作用于内置wd-icon传入插槽后此属性不生效。shape控制按钮圆角。circle为圆形border-radius: 50%square为小圆角方形border-radius: 4px见 index.scss 形状样式。bottom / right控制悬浮位置默认距底部 100px、距右侧 20px。六、外部样式类类名说明custom-class根节点样式类custom-style根节点内联样式这两个能力来自组件库统一的baseProps见 common/props.ts在 wd-backtop 中被透传至根节点。custom-class会拼入根节点的 class 列表便于配合addGlobalClass/styleIsolation: shared在页面层写全局样式覆盖。七、点击回顶的源码实现点击按钮时组件调用的是 uni-app 官方 APIuni.pageScrollTo将页面平滑滚动回顶部function handleBacktop() { uni.pageScrollTo({ scrollTop: 0, duration: props.duration }) }这一实现同时被组件测试用例完整覆盖tests/components/wd-backtop.test.ts测试触发点击事件并滚动到顶部断言uni.pageScrollTo以{ scrollTop: 0, duration }被调用测试应用自定义滚动持续时间验证传入自定义duration如 500ms时会原样透传给uni.pageScrollTo测试根据滚动位置显示/隐藏验证scrollTop top时不显示、scrollTop top时显示、回落后又隐藏的完整显隐逻辑。八、主题定制与暗黑模式适配按钮的默认配色并非写死在组件内而是通过 SCSS 主题变量控制variable.scss/* backtop */ $-backtop-bg: var(--wot-backtop-bg, #e1e1e1) !default; $-backtop-icon-size: var(--wot-backtop-icon-size, 20px) !default;--wot-backtop-bg按钮背景色默认#e1e1e1--wot-backtop-icon-size内置图标字号默认20px。由于使用 CSS 变量承载默认值配合 wot-design-uni 的主题定制与暗黑模式机制可以在不修改组件源码的前提下通过覆盖 CSS 变量统一调整所有页面的回到顶部按钮外观。九、完整可运行的演示参考组件库演示页 backtop/Index.vue 提供了一个综合性示例可一次性验证方形形状、自定义图标、自定义显示距离、自定义样式与自定义回顶时长五种能力wd-backtop :scrollTopscrollTop :shapeisSquare ? square : undefined :topisTop ? 600 : undefined :customStyleisStyle ? background: #007aff;color:white; : undefined :durationisDuration ? 1000 : undefined text :stylecolor: ${isStyle ? white : #333};TOP/text /wd-backtopconst scrollTop ref(0) onPageScroll((e) { scrollTop.value e.scrollTop })小结wd-backtop是 wot-design-uni 中一个数据驱动显隐 平台 API 回顶的典型轻量组件页面通过onPageScroll持续注入scrollTop组件内部以scrollTop top控制淡入淡出显隐点击后通过uni.pageScrollTo平滑回顶。实际使用时只需记住三点scrollTop 必传且需随滚动实时更新、自定义内容走默认插槽、外观与定位可通过 customStyle 及 zIndex/bottom/right 灵活调整即可在各类 uni-app 页面中快速落地一个体验完整的回到顶部按钮。赞分享前端UI组件移动开发小程序【免费下载链接】wot-design-uni一个基于Vue3TS开发的uni-app组件库提供70高质量组件支持暗黑模式、国际化和自定义主题。项目地址https://gitcode.com/gh_mirrors/wo/wot-design-uni点击查看免费下载相关推荐Semi Design BackTop 回到顶部组件从用法、API 到滚动动画实现原理Semi Design BackTop 回到顶部组件从用法、API 到滚动动画实现原理 Semi Designdouyinfe/semi ui内置的 B前端UI组件设计系统Semi Design 中的 BackTop 组件详解优雅实现返回顶部功能Semi Design 中的 BackTop 组件详解优雅实现返回顶部功能 什么是 BackTop 组件 BackTop回到顶部是 Semi Design前端UI组件设计系统Element UI回到顶部BackTop滚动控制组件Element UI回到顶部BackTop滚动控制组件 在现代Web应用中长页面滚动是常见需求。当用户浏览包含大量内容的页面时手动滚动返回顶部会降低用户体前端UI组件设计系统上一篇ESEngine核心功能全解析从实体组件到高性能系统设计下一篇SpaceX-API认证系统性能大规模用户认证优化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表