列表滚动,标题切换fixed固定

本文介绍一种实现列表滚动时标题切换并固定在头部的方法。通过获取数据列表中每一项title的顶部距离,并监听滚动条滚动高度,依据滚动距离与标题距离进行判断,从而实现标题的粘附固定效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果如下,当列表滚动时标题切换粘附固定头部
在这里插入图片描述
在这里插入图片描述
实现思路:在数据列表里面获取到每一项title距离顶部距离,然后监听滚动条滚动高度,根据滚动距离跟列表项title距离高度判断固定。代码如下

<div class="table" id="tab">
  	<div v-for="(item,k) in list">
	  		<div  :class="['title',fiexdItem ==k?'fiexd':'']" >
	    	{{item.name}}
	  		</div>
	  		<div v-for="jtem in item.sub" class="sub">
	  			{{jtem}}
	  		</div>
  	</div>
  </div>
  data () {
    return {
    	fiexdItem:0,
	     list:[
	      {name:'标题1',
	       sub:['北京','上海','重庆','广州']
	      },
	      {name:'标题2',
	      sub:['北京','上海','重庆','广州']
	      },
	      {name:'标题3',
	       sub:['北京','上海','重庆','广州']
	      },
	      {name:'标题4',
	      sub:['北京','上海','重庆','广州']
	      },
	      {name:'标题5',
	       sub:['北京','上海','重庆','广州']
	      },
	      {name:'标题6',
	       sub:['北京','上海','重庆','广州']
	      },
	      {name:'标题7',
	       sub:['北京','上海','重庆','广州']
	      },
	      {name:'标题8',
	       sub:['北京','上海','重庆','广州']
	      },
     ]
    }
  },
	mounted:function(){
		  var temp = document.getElementById('tab');
		  var node = document.getElementsByClassName('title');
		  this.list.map((item,k)=>{
		  	item.top = node[k].offsetTop
		  })
		  var _this =this;
		  window.addEventListener('mousewheel',function(){
		  	for (var i=0;i<_this.list.length;i++) {
		  		if(this.scrollY > _this.list[i].top-20){
		  			_this.fiexdItem = i;
		    	}
		  	}
		  })
	},
<style scoped>
.table{
	width:400px;
  height:600px;
  border: 1px solid #eee;
  margin: 0 auto;
	overflow: scroll;
	display: table;
	padding-top: 40px;
}
.title{
	height: 40px;
	background: #EEEEEE;
}
.sub{
	height: 100px;
}
.fiexd{
	position: fixed;
	left: 0;
	right: 0;
	top: 0;
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值