uni-app 有偿求助一个可吸顶和滚动的tab页插件,如下图,能找到插件市场的资源也算
uni-app 有偿求助一个可吸顶和滚动的tab页插件,如下图,能找到插件市场的资源也算
200R以上,看效果而定
![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20210330/dda7ba0ea11b6a604b4d85bcc957c647.gif)
5 回复
有老哥帮忙吗,插件市场类似的也行
不考虑性能的话 自己用swiper写啊
回复 秋凡: 我自己写了一个太卡了
想找一个插件看看
在uni-app中实现一个可吸顶和滚动的Tab页插件,可以通过自定义组件结合uni-app的滚动事件和CSS粘性定位来实现。虽然市场上可能有现成的插件,但这里提供一个基础的实现思路,你可以根据这个思路进行定制或寻找合适的插件。
以下是一个简单的实现示例:
- 创建组件:首先,创建一个名为
StickyTabs.vue
的组件。
<template>
<view class="tabs-container">
<scroll-view scroll-y="true" @scroll="onScroll">
<view class="tabs-header" :style="{ top: stickyTop + 'px' }">
<view
v-for="(tab, index) in tabs"
:key="index"
class="tab-item"
@click="selectTab(index)"
:class="{ active: selectedIndex === index }"
>
{{ tab.name }}
</view>
</view>
<view class="tabs-content">
<slot :name="tabs[selectedIndex].name"></slot>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
tabs: [
{ name: 'Tab1' },
{ name: 'Tab2' },
{ name: 'Tab3' },
],
selectedIndex: 0,
stickyTop: 0,
lastScrollY: 0,
};
},
methods: {
onScroll(e) {
const { scrollTop } = e.detail;
if (scrollTop > this.lastScrollY) {
this.stickyTop = this.$refs.header.offsetTop;
} else if (scrollTop < this.lastScrollY - 50) {
this.stickyTop = 0;
}
this.lastScrollY = scrollTop;
},
selectTab(index) {
this.selectedIndex = index;
},
},
};
</script>
<style scoped>
.tabs-container {
position: relative;
}
.tabs-header {
position: sticky;
top: 0;
background: #fff;
z-index: 10;
display: flex;
justify-content: space-around;
}
.tab-item {
padding: 10px;
cursor: pointer;
}
.tab-item.active {
color: red;
}
.tabs-content {
padding-top: 50px; /* Adjust based on header height */
}
</style>
- 使用组件:在你的页面中使用这个组件,并通过具名插槽提供每个Tab的内容。
<template>
<sticky-tabs>
<template v-slot:Tab1>
<view>Content for Tab 1</view>
</template>
<template v-slot:Tab2>
<view>Content for Tab 2</view>
</template>
<template v-slot:Tab3>
<view>Content for Tab 3</view>
</template>
</sticky-tabs>
</template>
<script>
import StickyTabs from '@/components/StickyTabs.vue';
export default {
components: {
StickyTabs,
},
};
</script>
这个示例提供了一个基本的框架,你可以根据需求进行进一步的优化和美化,例如添加动画效果、处理更多Tab等。同时,你也可以在uni-app的插件市场中搜索类似的插件,可能会有现成的解决方案满足你的需求。