Vue实现tab吸顶与内容切换
141 浏览量
更新于2024-08-28
收藏 110KB PDF 举报
"Vue.js 实现的Tab切换与滚动固定功能"
在Vue.js开发中,创建动态和交互式的用户界面是常见的需求。本示例展示了如何实现一个Tab切换功能,当页面滚动到一定高度时,Tab栏会固定在顶部,同时用户可以通过点击不同Tab来切换显示的内容。这一功能在电商、资讯类网站中非常常见,可以提升用户体验。
首先,模板部分(template)代码如下:
```html
<!-- tab切换star -->
<ul class="tab-list" :class="{ fixTitle: whether }">
<li @click="curId = 0" :class="{ cur: curId === 0 }">产品特点</li>
<li @click="curId = 1" :class="{ cur: curId === 1 }">投保须知</li>
<li @click="curId = 2" :class="{ cur: curId === 2 }">理赔流程</li>
</ul>
<!-- 切换内容star -->
<div class="tab-con">
<div v-show="curId === 0">第一部分内容</div>
<div v-show="curId === 1">第二部分内容</div>
<div v-show="curId === 2">第三部分内容</div>
</div>
```
这里,`<ul>`元素包含了三个`<li>`标签,分别代表三个Tab选项。`@click`事件用于在用户点击时更新`curId`的值,`:class="{ cur: curId === index }"`用来控制当前选中的Tab项的样式。`<div class="tab-con">`内的`<div>`元素根据`curId`的值显示相应的内容。
在样式(CSS)部分,我们需要为`fixTitle`类设置样式,以便在满足条件时将Tab栏固定在顶部。例如:
```css
.fixTitle {
position: fixed;
top: 0;
width: 100%;
}
```
接下来,我们关注数据(data)和方法(methods):
```javascript
data() {
return {
whether: false, // 控制Tab是否固定
curId: 0, // 当前选中的Tab索引
};
},
methods: {
handleScroll() {
const scrollTop =
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop;
if (scrollTop > 329) {
this.whether = true;
} else {
this.whether = false;
}
},
},
mounted() {
window.addEventListener("scroll", this.handleScroll);
}
```
在`handleScroll`方法中,我们监听了窗口的滚动事件。当滚动距离超过329像素时,`whether`设置为`true`,使得Tab栏具有`fixTitle`类并固定在顶部;否则,取消固定。`mounted`生命周期钩子确保了滚动事件监听器在页面加载完成后被正确添加。
为了实现更复杂的功能,如自动滚动到特定DOM或Tab拦选项跟随特定DOM,你可以扩展这个示例,例如使用`Intersection Observer API`来检测DOM的可视性,然后触发Tab拦的滚动定位。这将创建一个更智能且响应式的Tab组件,可以适应各种页面布局和滚动场景。
通过Vue.js,我们可以轻松实现Tab切换和滚动固定效果,提高页面的交互性和用户体验。这个例子提供了一个基础的实现框架,开发者可以根据实际需求进行调整和优化。
2020-12-10 上传
2020-12-04 上传
点击了解资源详情
2017-12-25 上传
2020-08-28 上传
2016-06-24 上传
2020-11-21 上传
2020-10-15 上传
weixin_38687968
- 粉丝: 7
- 资源: 969
最新资源
- 行业文档-设计装置-一种利用字型以及排序规则实现语言拼写校正的方法.zip
- jojo_js:前端相关的js库 ,组件,工具等
- auto
- audio-WebAPI:HTML5 音频录制和文件创建
- Text-editor:使用nodejs和html制作的多人文字编辑器
- kcompletion:K完成
- 课程设计--Python通讯录管理系统.zip
- 基于机器学习的卷积神经网络实现数据分类及回归问题.zip
- node_mailsender:使用docker的简单node.js邮件发件人脚本
- my-website
- angular-gulp-seed-ie8:使用 Gulp 动态加载 IE8 polyfills 的 Angular 基础项目
- ATMOS:ATMOS代码
- 基于webpack的vue单页面构建工具.zip
- Suitor_python_flask:Reddit feed命令行客户端界面和Web界面工具
- 行业文档-设计装置-一种利用秸秆制备瓦楞纸的方法.zip
- .emacs.d:我的个人emacs配置