<template>
<div class="page">
<div class="banner"></div>
<nav class="tabNav" :class="{ tabFixed: isFixed }">
<a
v-for="(item, index) in tabList"
:key="item"
:class="{ active: index == activeIndex }"
@click="tabChange(index)"
>{{ item }}</a
>
</nav>
<div class="box1 scrollDiv">模块1</div>
<div class="box2 scrollDiv">模块2</div>
<div class="box3 scrollDiv">模块3</div>
<div class="box4 scrollDiv">模块4</div>
</div>
</template>
<script>
export default {
components: {},
data() {
return {
activeIndex:0,
isFixed: false,
tabList: ["标签一", "标签二", "标签三", "标签四"],
};
},
mounted() {
window.addEventListener("scroll", this.scrollHander);
},
destroyed() {
window.removeEventListener("scroll", this.scrollHander);
},
methods: {
tabChange(index) {
let top =
document.getElementsByClassName("scrollDiv")[index].offsetTop - 60;
window.scrollTo({
top,
behavior: "smooth",
});
},
scrollHander() {
let scrollHeight =
document.documentElement.scrollTop ||
window.pageYOffset ||
document.body.scrollTop;
if (scrollHeight > 300) {
this.isFixed = true;
} else {
this.isFixed = false;
}
},
},
};
</script>
<style>
.banner {
width: 100%;
height: 300px;
color: antiquewhite;
}
.tabNav {
width: 100%;
height: 60px;
line-height: 60px;
background: #ccc;
text-align: left;
}
.tabFixed {
position: fixed;
top: 0;
left: 0;
}
a {
margin-right: 20px;
cursor: pointer;
}
.active{
color: aqua;
}
.box1,
.box2,
.box3,
.box4 {
width: 100%;
height: 300px;
line-height: 300px;
background: forestgreen;
}
.box1 {
background: forestgreen;
}
.box2 {
background: fuchsia;
}
.box3 {
background: goldenrod;
}
.box4 {
background: hotpink;
}
</style>
tab 导航-页面滚动吸顶 + 双向锚点
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 如图(此图是方案5实现的): 首先我的tab切换用的react-native-scrollable-tab-vie...
- 最近给营销市场部做了个H5页面,页面大概要求就是一个单独的H5页面,顶部导航栏固定含有三个导航按钮必须和正文对应内...
- 所说的吸顶效果就是在页面没有滑动之前,导航栏的效果如下图所示: 当页面向上滑动之后,导航栏始终固定在页面的上方。 ...