Vue中如何使用ant-design-vue的Tabs组件实现滚动吸顶效果?

使用 ant-design-vue 的 tabs 组件实现滚动条滚到 tabs 位置

在 vue 页面中使用 ant-design-vue 的 tabs 组件时,可以实现滚动条滚动到 tabs 位置时吸顶,而向上滚动时也能正常显示 tabs 上面的内容。

思路:

获取 tabs 距离顶部的距离。监听滚动条滚动的事件,判断滚动条距离顶部的距离是否大于 tabs 距离顶部的距离。如果滚动条距离顶部的距离大于 tabs 距离顶部的距离,则将 tabs 的样式设为 position: fixed,使其固定在页面顶部。当向上滚动时,将 tabs 的样式恢复为 position: relative,使其回到正常位置。

代码示例:

  
Content of Tab Pane 2 Content of Tab Pane 3
import { Ref } from 'vue';import { nextTick } from 'vue';import { onActivated } from 'vue';export default { setup() { const scrollTop: Ref = ref(0); const barOffsetTop: Ref = ref(0); const isFixed: Ref = ref(false); const scrollPositionContainer = ref(null); const handleScroll = (e: any) => { scrollTop.value = e.target.scrollTop; const top = window.pageYOffset || e.target.scrollTop; // 判断 Tabs 距顶和滚动距离,超过就让 a-tabs 的 class 加上 isfixed 的样式 isFixed.value = top >= barOffsetTop.value ? true : false; } onActivated(() => { scrollPositionContainer.value?.scrollTo({ top: scrollTop.value }); nextTick(() => { // 获取 Tabs 距顶的距离 barOffsetTop.value += document.getElementsByClassName('tabs')[0]?.offsetTop; }) }) return { scrollTop, barOffsetTop, isFixed, scrollPositionContainer, handleScroll } }}:deep(.ant-tabs > .ant-tabs-nav) { margin: 0; background: #fff; padding-left: 20px; box-sizing: border-box;}:deep(.ant-tabs-content-holder) { height: auto; overflow-y: scroll;}.parent { position: relative;}.isfixed{ position: fixed; top: 0;}

登录后复制

注意:

立即学习“前端免费学习笔记(深入)”;

position: sticky 可能不适用于所有浏览器。position: fixed 会导致滚动条无法正常滚动。因此,在向上滚动时将 tabs 的样式恢复为 position: relative。

以上就是Vue中如何使用ant-design-vue的Tabs组件实现滚动吸顶效果?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2638732.html

(0)
上一篇 2025年3月7日 05:53:28
下一篇 2025年2月26日 15:45:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论