css鼠标横向滚动并且不展示滚动条几种方法

需求:实现内容超出之后使用属性滚轮进行左右查看超出内容,并且隐藏滚动条

1.不使用框架实现

每次滚动就滚动40px的距离

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      .container {
        width: 300px;
        overflow-x: hidden;
        white-space: nowrap;
        border: 1px solid #ccc;
      }
      .content {
        display: inline-block;
      }
    </style>
  </head>
  <body>
    <div class="container" onwheel="scrollHorizontally(event)">
      <div class="content">Content 1</div>
      <div class="content">Content 2</div>
      <div class="content">Content 3</div>
      <div class="content">Content 4</div>
      <div class="content">Content 5</div>
      <div class="content">Content 6</div>
    </div>

    <script>
      function scrollHorizontally(e) {
        e = window.event || e;
        var delta = Math.max(-1, Math.min(1, e.wheelDelta || -e.detail));
        document.querySelector(".container").scrollLeft -= delta * 40; // 每次滚动移动的距离
        e.preventDefault();
      }
    </script>
  </body>
</html>

效果:

2.vue2使用自定义指令实现

html 复制代码
<template>
    <div style="height: 400px">
        <div class="container" v-horizontal-scroll>
            <div class="box">Content 1</div>
            <div class="box">Content 2</div>
            <div class="box">Content 3</div>
            <div class="box">Content 4</div>
            <div class="box">Content 5</div>
            <div class="box">Content 6</div>
            <div class="box">Content 1</div>
            <div class="box">Content 2</div>
            <div class="box">Content 3</div>
            <div class="box">Content 4</div>
            <div class="box">Content 5</div>
            <div class="box">Content 6</div>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {};
    },
    directives: {
        'horizontal-scroll': {
            bind: function (el) {
                el.addEventListener('wheel', function (event) {
                    event.preventDefault();
                    el.scrollLeft += event.deltaY;
                });
            }
        }
    },
    mounted() {},
    methods: {}
};
</script>

<style lang="scss" scoped>
.container {
    width: 300px;
    overflow-x: hidden;
    white-space: nowrap;
    border: 1px solid #ccc;
    display: flex;
    overflow-x: scroll;
    overflow-y: hidden;
    white-space: nowrap;
    margin: 50px;
}
.container::-webkit-scrollbar {
    display: none;
}
.box {
    // display: inline-block;
}
</style>

效果

文章到此结束,希望对你有所帮助~~

相关推荐
D_C_tyu6 小时前
Vue3 + Element Plus | el-table 表格获取排序后的数据
javascript·vue.js·elementui
天外天-亮6 小时前
v-if、v-show、display: none、visibility: hidden区别
前端·javascript·html
be or not to be6 小时前
HTML入门系列:从图片到表单,再到音视频的完整实践
前端·html·音视频
沿着路走到底7 小时前
JS事件循环
java·前端·javascript
子春一28 小时前
Flutter 2025 可访问性(Accessibility)工程体系:从合规达标到包容设计,打造人人可用的数字产品
前端·javascript·flutter
jlspcsdn9 小时前
20251222项目练习
前端·javascript·html
行走的陀螺仪9 小时前
Sass 详细指南
前端·css·rust·sass
拉不动的猪11 小时前
回顾计算属性的缓存与监听的触发返回结果
前端·javascript·vue.js
树欲静而风不止慢一点吧11 小时前
小米手环9应用/游戏开发快速入门
前端·javascript·小程序