横向滚动

有些网站滚动鼠标的时候网页是横向滚动,我们来实现一下。

实现思路

首先,让容器出现横向滚动条,监听滚动容器的 wheel 事件,阻止滚动的默认行为,当鼠标滚动的时候,修改容器的 scrollLeft 值,值为鼠标滚动的偏移量。

实现代码

<template>
  <div class="wrapper" ref="el" @wheel.prevent="handleWheel">
    <div class="item" v-for="n in 6" :key="n" />
  </div>
</template>

<script setup>
import { ref } from 'vue';

const el = ref(null);

const handleWheel = (e) => {
  if (el.value) {
    el.value.scrollLeft += e.deltaY;
  }
};
</script>

<style lang="scss" scoped>
$colors: #00adb5, seagreen, bisque, azure, burlywood, chartreuse;
.wrapper {
  display: flex;
  width: 600px;
  overflow-x: auto;
  background-color: #aa00ff;
  $base-color: #036;

  .item {
    width: 600px;
    height: 400px;
    flex: none;
    @for $i from 1 through length($colors) {
      &:nth-child(#{$i}) {
        background-color: nth($colors, $i);
      }
    }
  }
}
</style>
Last Updated:
Contributors: leevare