我使用 Vue 实现了原神官网的全屏滚动效果

先看一下官网效果:https://ys.mihoyo.com/main/map

概念

每次当滚动鼠标滚轮的时候,页面会进行一整页的滚动,这就是全屏滚动。

要求

当窗口大小变化时,全屏滚动效果不会发生变化,即需要做到自适应,不受到高度宽度的影响。

当点击指示器也可以进行页面切换。

原理

 

最外层容器:就是我们的窗口,视角能看到的。

内层容器:用来存放我们需要滚动内容的容器。

滚动元素:就是我们看到的一张张照片。

首先对最外侧容器的overflow:hidden;这样保证不会溢出。

其次对内层容器进行滚动,每次滚动的高度就是窗口的高度,但是需要动态计算窗口的高度。

最后只需要判断上一页还是下一页来计算$index,通过$index✖页面高度,来进行滚动即可。

代码实现

HTML代码

大家可以结合html结构,去理解 js 代码

<template>
  <!-- 最外层容器 -->
  <div class="outer-box" ref="fullPage">
    <!-- 内层容器 -->
    <div ref="element" :class="{ activeTranstion: isTranstion }" class="inner-box" @mousewheel="mousewheel">
      <!-- 滚动显示的元素 -->
      <div
        v-for="item in ysImage"
        :style="{ backgroundImage: `url(${item.backgroundImage})` }"
        class="scroll-element"
      ></div>
    </div>
    <!-- 指示器 -->
    <ul class="aside">
      <li v-for="(item, index) in asideData" @click="changeBac(index)">
        <span :class="{ active: index === $index }"></span>
        <div class="show-dec">{
  { item.title }}</div>
      </li>
    </ul>
  </div>
</template>
​

JS代码

给内层容器添加鼠标滚动事件

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JacksonChen_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值