长列表滚动,中间项高亮

本文介绍了如何使用HTML、CSS和JavaScript实现一个列表,当滚动条位于列表中间时,相应列表项会自动获得高亮显示。通过监听scroll事件,判断项的位置与滚动位置关系来控制其active类的添加和移除。
摘要由CSDN通过智能技术生成

HTML:

<div class="list-container">
  <ul class="list">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
    <!-- 添加更多项 -->
  </ul>
</div>

CSS:

.list-container {
  height: 200px;
  overflow-y: scroll;
}

.list {
  padding: 0;
  list-style: none;
}

.list li {
  padding: 10px;
  background-color: #f2f2f2;
  margin-bottom: 5px;
}

.list li.active {
  background-color: #ffcc00;
}

JavaScript:

document.querySelector('.list-container').addEventListener('scroll', function() {
  var container = this;
  var items = container.querySelectorAll('.list li');
  var containerHeight = container.clientHeight;
  var scrollPosition = container.scrollTop;

  items.forEach(function(item) {
    var itemTop = item.offsetTop;
    var itemHeight = item.clientHeight;

    if (itemTop < scrollPosition + containerHeight / 2 && itemTop + itemHeight > scrollPosition + containerHeight / 2) {
      item.classList.add('active');
    } else {
      item.classList.remove('active');
    }
  });
});

这段代码会监听滚动事件,然后根据滚动位置来确定哪个项在可视区的中间位置,然后将该项添加高亮状态。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值