可以使用原生的写吗或者 vant组件来写
时间: 2024-10-25 12:11:12 浏览: 23
当然可以,如果你想要用原生 HTML、CSS 和 JavaScript 来实现一个简单的 Tab 样式,并且在内容滚动到底部时触发事件,也可以这样做。这里是一个基本的示例,使用 Vue.js 的模板语法配合原生元素:
```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Tab Scrolling Example</title>
<style>
.tab-container {
display: flex;
flex-direction: column;
}
.tab-content {
overflow-y: auto;
padding-top: 40px; /* 避免底部滚动条影响 */
}
.tab-content::after {
content: '';
display: block;
height: calc(100% - 40px);
}
</style>
</head>
<body>
<div id="app">
<div class="tab-container">
<button @click="switchTab(0)">Tab 1</button>
<button @click="switchTab(1)">Tab 2</button>
<!-- 添加更多按钮 -->
</div>
<div class="tab-content" ref="content">
<div v-for="(contentItem, index) in content" :key="index" :class="{ active: index === currentTabIndex }">
{{ contentItem }}
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data: {
currentTabIndex: 0,
content: ['这是一段很长的内容...', '这是另一段同样长的内容...'],
},
methods: {
switchTab(index) {
this.currentTabIndex = index;
},
checkScrollBottom() {
const content = this.$refs.content;
if (content.scrollTop + content.clientHeight >= content.scrollHeight - 40) { // 预留了40px高度防止内容滚动到看不见
this.$emit('tab-scroll-bottom');
}
},
},
mounted() {
this.checkScrollBottom(); // 初始化检查
window.addEventListener('scroll', this.checkScrollBottom);
},
beforeDestroy() {
window.removeEventListener('scroll', this.checkScrollBottom);
},
});
</script>
</body>
</html>
```
在这个例子中,我们创建了两个按钮代表 Tab,切换时更新 `currentTabIndex`,内容区域滚动时检查是否到达底部。当内容滚动到底部时,通过 `this.$emit('tab-scroll-bottom')` 触发自定义事件。
阅读全文