全屏页面滚动、默认三屏,通过鼠标滚轮切换

index.html

<!DOCTYPE html>
<html>
<head>
  <title>Scrolling Effect with Animation</title>
  <link rel="stylesheet" type="text/css" href="./index.css">
</head>
<body>
  <div class="scroll-container">
    <div class="page page1">Page 1</div>
    <div class="page page2">Page 2</div>
    <div class="page page3">Page 3</div>
  </div>
  

  <script src="./index.js"></script>
</body>
</html>

index.css

*{
  margin: 0;
}
.scroll-container {
  height: 100vh;
  overflow: hidden;
  scroll-behavior: smooth;
}

.page {
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3rem;
}

.page1 {
  background-color: #38d0f6;
}

.page2 {
  background-color: #58ff2e;
}

.page3 {
  background-color: #fc4bff;
}

index.js

var container = document.querySelector('.scroll-container');
var pages = document.querySelectorAll('.page');

function handleScroll(event) {
  event.preventDefault();

  var delta = event.deltaY || event.detail || (-event.wheelDelta);
  var scrollHeight = container.scrollHeight - container.clientHeight;
  var scrollTop = container.scrollTop;
  var scrollPercentage = (scrollTop / scrollHeight) * 100;

  var currentStep = Math.floor(scrollPercentage / (100 / (pages.length - 1)));
  var nextStep = delta > 0 ? currentStep + 1 : currentStep - 1;

  if (nextStep >= 0 && nextStep < pages.length) {
    var nextPage = pages[nextStep];
    nextPage.classList.add('active');
    scrollToPage(nextPage);
  } else if (nextStep < 0) {
    var firstPage = pages[0];
    firstPage.classList.add('active');
    scrollToPage(firstPage);
  } else if (nextStep >= pages.length) {
    var lastPage = pages[pages.length - 1];
    lastPage.classList.add('active');
    scrollToPage(lastPage);
  }
}

function scrollToPage(page) {
  var pageOffsetTop = page.offsetTop;
  var containerOffsetTop = container.offsetTop;
  var offset = pageOffsetTop - containerOffsetTop;

  container.scrollTo({
    top: offset,
    behavior: 'smooth'
  });
}

container.addEventListener('wheel', handleScroll);
container.addEventListener('touchmove', handleScroll);

// 添加页面加载时的初始化
window.addEventListener('load', function() {
  var firstPage = pages[0];
  firstPage.classList.add('active');
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值