首页 > 其他分享 >横向滚动展示内容

横向滚动展示内容

时间:2024-03-25 20:58:32浏览次数:13  
标签:滚动 展示 transform 横向 content time container event translateX

从蔚蓝档案中得到灵感,与好友 博丽七七 ,一起做了个简易版的  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .scroll-container {
  overflow: hidden;
  height: 100vh; /* 设置容器高度,使其占满整个视口 */
}

.content {
  width: 200%; /* 设置内容的宽度为容器的两倍,以便内容可以自右向左滚动 */
  white-space: nowrap; /* 防止内容换行 */
  display: flex;
}

/* 动画过渡效果 */
.content {
  transition: transform 0.5s ease; //用于控制左右运动的速度
}

.content.scroll {
  transform: translateX(-50%); /* 将内容向左平移50%的宽度 */
}
.a{
    width: 20rem;
    height: 20rem;
    margin-left: 10rem;
    background-color: aquamarine;
}
    </style>
</head>
<body>
    <div class="scroll-container">
        <div class="content">
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
            <div class="a"></div>
        </div>
      </div>

</body>
<script>
    const container = document.querySelector('.scroll-container');
const content = document.querySelector('.content');


let a=0
//wheel 为鼠标滚动事件
container.addEventListener('wheel', function(event) {

    if (event.deltaY > 0) {   //event.deltaY 用于判断滚轮滚动的方向 , 向下则大于0
      a -= 20;
      content.style.transform = `translateX(${a}rem)`;
    } else if (event.deltaY < 0) {
      a += 20;
      content.style.transform = `translateX(${a}rem)`;
    }
});
</script>
</html>

以上即可实现功能,若需改善则需用到防抖函数,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
      body::-webkit-scrollbar {
  display: none;
}

        .scroll-container {
  overflow: hidden;
  height: 100vh; /* 设置容器高度,使其占满整个视口 */
  width: 100%;

}

.content {
    display: flex;
    width: 800%; /* 设置内容的宽度为容器的多倍,以便内容可以自右向左滚动,具体看你每个元素的宽度 */
    white-space: nowrap; /* 防止内容换行 */
    transform: translatex(3rem);
}

/* 动画过渡效果 */
.content {
  transition: transform 1s ease;
}

/* .content.scroll {
  transform: translateX(-20rem); /* 将内容向左平移50%的宽度 
} */
.a{
    width: 20rem;
    height: 20rem;
    margin-left: 10rem;
    background-color: aquamarine;
}
    </style>
</head>
<body>
    <div class="scroll-container">
        <div class="content">
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
          <div class="a"></div>
        </div>
      </div>
    <script>
        const container = document.querySelector('.scroll-container');
const content = document.querySelector('.content');
let a = 0;

function debonce(delay){
  let time;
  return ()=>{}
  time = setTimeout(()=>{
    clearTimeout(time)
    
  },delay)
}


let time; // 共享的定时器变量

container.addEventListener('wheel', function(event) {
  console.log(event);

  clearTimeout(time); // 清除上一次的定时器
    // 防抖函数 ,防止因单次滚动跨度太大而使得偏移太大
  time = setTimeout(() => {
    if (event.deltaY > 0) {
      a -= 20;
      content.style.transform = `translateX(${a}rem)`;
    } else if (event.deltaY < 0) {
      a += 20;
      content.style.transform = `translateX(${a}rem)`;
    }
  }, 100);
});
    </script>
</body>
</html>

标签:滚动,展示,transform,横向,content,time,container,event,translateX
From: https://blog.csdn.net/qweasl_/article/details/136974937

相关文章

  • 使用Selenium模拟鼠标滚动操作的技巧
    前言在进行Web自动化测试或数据抓取时,模拟用户操作是至关重要的。其中之一就是模拟鼠标滚动操作,这在许多情况下都是必需的。使用Selenium,一种流行的Web自动化测试工具,可以轻松实现这一功能。模拟鼠标滚动的重要性网页内容可能会因为需要用户滚动才能加载而延迟显示,或者是在滚......
  • 揭开地球神秘面纱:3D可视化展示地球剖面之旅
    在广袤无垠的宇宙中,地球是一颗充满生机与奥秘的蓝色星球。我们每天都生活在这颗星球上,感受着它的温暖与恩赐,却往往忽略了它深邃的内部世界。 想象一下,你能够穿越时空,深入地球的核心,亲眼目睹那些亿万年形成的神奇景象。3D可视化技术就像一把神奇的钥匙,打开了通往地球内部的大门......
  • Django Forms组件,展示用户输入不合规的提示信息,钩子函数
    DjangoForms组件,展示用户输入不合规的提示信息,钩子函数前戏:使用form表单,用户输入特定信息,比如:金瓶,输入框右侧提示信息,不使用Ajax。前端代码:<body><formaction=""method="post"><p>username:<inputtype="text"name="username"><......
  • 获取ETF历史行情数据,并用图形展示
    通过akshare获取ETF历史行情数据采用plotly展示图形代码:importakshareasakimportplotly.expressaspximportplotly.graph_objectsasgojsj_etf=ak.fund_etf_hist_sina(symbol="sz159998")fig=px.line(jsj_etf,x="date",y="close",title=&......
  • Apache ECharts的用法——通过直观的图表来展示数据
    定义ApacheECharts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。官网地址:https://echarts.apache.org/zh/index.html为了通过直观的图表来展示数据入门案例ApacheEcharts官方提供的快速入门:点击跳转网盘下载下载链......
  • 【复现】【免费】基于多时间尺度滚动优化的多能源微网双层调度模型
    目录主要内容     部分代码     结果一览   1.原文结果2.程序运行结果下载链接主要内容   该模型参考《CollaborativeAutonomousOptimizationofInterconnectedMulti-EnergySystemswithTwo-StageTransactiveControlFramework》,主要解决的......
  • 神经网络的测试及图像展示
    这部分是在前一篇基础上加上1.测试过程2.用tensorboard展示损失曲线变化3.模型的保存1.加上的测试代码:total_test_loss=0withtorch.no_grad():#因为是做测试,确保不会计算梯度fordataintest_dataloader:imgs,targets=dataoutputs=tudui(imgs)loss=loss_fn(output......
  • V R全息展示柜|V R体验店加盟|虚拟设备价格
    全息展示柜    全息投影展示柜是将三维画面悬浮在柜体半空中成像,超级新颖的展示形式瞬间吸引所有人的眼球;展示更加立体突出更加吸引顾客眼球;360°全息展示柜四面分光棱镜悬空展示,色彩明暗变化,旋转图像实现不同的三维视觉冲击。将所拍摄的影像(人、物)投射到布景箱中......
  • 团队展示&选题
    这个作业属于哪个课程<软件工程2024-双学位(广东工业大学)>这个作业要求在哪里<团队作业1——团队展示&选题>这个作业的目标团员展示&选题@目录1.团队展示:2.选题要求:3.团队计划:4.团队成员绩效评估方法1.团队展示:队名CN七七彭建立3121006052(组长)徐......
  • 我用 Nextjs 十分钟搭建了一个展示955公司网站
    前言打工人终极梦想就是能够955吧!一年之前看到过955公司名单,最近偶然又看到一篇955不加班的公司名单推文,发现名单上的公司大都是外企,而且相比一年之前又少了几个。于是想将目前还在榜955名单上的公司记录在网站上,一是方便随时查看,二是想看有哪些公司会在什么时候下线,也一......