vue实现滚动到某一位置元素进行吸顶操作

1、创建一个空白的元素和要进行吸顶的元素样式一样 进行占位操作

<!-- 垫子 -->

<div class="nav-shadow" v-if="isSetTop"></div>

<div class="info-nav" v-if="!isSetTop">

<swiper :options="infoNavOption" ref="infoSwiper">

<swiper-slide v-for="slide in infoNavTxt" :key="slide.layoutId">

<p :class="['marquee-txt',currentIndex==slide.layoutId?'active':'']" @click="changeNav(slide)" >{{slide.name}}</p>

</swiper-slide>

</swiper>

</div>

2、监测滚动事件

handleScroll: function(e) {

var scrollTop = this.$refs.scroll.scrollTop;var scrollTop = document.querySelector(".vue-slim-better-scroll__wrapper") .scrollTop;//导航条距离

var scrollTopTab = Math.abs(e.y) 

console.log('scrollTopTab'+scrollTopTab);

let offsetTop = document.querySelector(".second-nav").offsetTop + 128; //此处是先获取的要吸顶元素的上兄弟元素(加上该元素的高就可以获得要吸顶元素的offsetTop值)

console.log('offsetTop'+offsetTop) 

if(this.infoBoxFixed){

console.log('改变了transform样式')if (scrollTopTab >= offsetTop) {this.isSetTop = true;

} else {

this.isSetTop = false;

}

3、这么做的原因是 因为吸顶元素的父元素有transform属性  并且不能为none  所以导致直接对吸顶元素进行fixed样式的变化无效 所以才这么做

ps:第一次写这个 感觉编辑器用着好难受  只粘贴了重要部分的代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容