首页 > 其他分享 >CSS & JS Effect – 用 wheel 模拟 scroll

CSS & JS Effect – 用 wheel 模拟 scroll

时间:2024-05-04 11:56:42浏览次数:24  
标签:wheel USA Effect St 000 JS com example

前言

用 JavaScript 实现 position sticky 文章中,我提到了用 wheel 来模拟 scroll 效果。

这篇来说说具体怎么实现,挺简单的哦。

 

Preparation

table.html

<div class="container">
  <table>
    <thead>
      <tr>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Age</th>
        <th>Address</th>
        <th>Email</th>
        <th>Phone</th>
        <th>City</th>
        <th>Country</th>
        <th>Occupation</th>
        <th>Salary</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>John</td>
        <td>Doe</td>
        <td>30</td>
        <td>123 Main St</td>
        <td>[email protected]</td>
        <td>123-456-7890</td>
        <td>New York</td>
        <td>USA</td>
        <td>Software Engineer</td>
        <td>$80,000</td>
      </tr>
      <tr>
        <td>Jane</td>
        <td>Smith</td>
        <td>25</td>
        <td>456 Elm St</td>
        <td>[email protected]</td>
        <td>987-654-3210</td>
        <td>Los Angeles</td>
        <td>USA</td>
        <td>Graphic Designer</td>
        <td>$60,000</td>
      </tr>
      <tr>
        <td>Michael</td>
        <td>Johnson</td>
        <td>35</td>
        <td>789 Oak St</td>
        <td>[email protected]</td>
        <td>456-789-0123</td>
        <td>Chicago</td>
        <td>USA</td>
        <td>Teacher</td>
        <td>$50,000</td>
      </tr>
      <tr>
        <td>Sarah</td>
        <td>Williams</td>
        <td>28</td>
        <td>321 Pine St</td>
        <td>[email protected]</td>
        <td>789-012-3456</td>
        <td>Miami</td>
        <td>USA</td>
        <td>Accountant</td>
        <td>$70,000</td>
      </tr>
      <tr>
        <td>David</td>
        <td>Brown</td>
        <td>40</td>
        <td>654 Cedar St</td>
        <td>[email protected]</td>
        <td>210-987-6543</td>
        <td>Houston</td>
        <td>USA</td>
        <td>Engineer</td>
        <td>$90,000</td>
      </tr>
      <tr>
        <td>Emily</td>
        <td>Miller</td>
        <td>33</td>
        <td>987 Maple St</td>
        <td>[email protected]</td>
        <td>567-890-1234</td>
        <td>Seattle</td>
        <td>USA</td>
        <td>Manager</td>
        <td>$100,000</td>
      </tr>
      <tr>
        <td>James</td>
        <td>Wilson</td>
        <td>27</td>
        <td>753 Walnut St</td>
        <td>[email protected]</td>
        <td>890-123-4567</td>
        <td>San Francisco</td>
        <td>USA</td>
        <td>Marketing Specialist</td>
        <td>$75,000</td>
      </tr>
      <tr>
        <td>Emma</td>
        <td>Anderson</td>
        <td>29</td>
        <td>159 Birch St</td>
        <td>[email protected]</td>
        <td>234-567-8901</td>
        <td>Boston</td>
        <td>USA</td>
        <td>Consultant</td>
        <td>$85,000</td>
      </tr>
      <tr>
        <td>Christopher</td>
        <td>Lee</td>
        <td>32</td>
        <td>852 Oakwood St</td>
        <td>[email protected]</td>
        <td>678-901-2345</td>
        <td>Atlanta</td>
        <td>USA</td>
        <td>Lawyer</td>
        <td>$120,000</td>
      </tr>
      <tr>
        <td>Olivia</td>
        <td>Clark</td>
        <td>26</td>
        <td>357 Elmwood St</td>
        <td>[email protected]</td>
        <td>123-456-7890</td>
        <td>Denver</td>
        <td>USA</td>
        <td>Artist</td>
        <td>$55,000</td>
      </tr>
      <tr>
        <td>William</td>
        <td>White</td>
        <td>31</td>
        <td>951 Cedarwood St</td>
        <td>[email protected]</td>
        <td>456-789-0123</td>
        <td>Phoenix</td>
        <td>USA</td>
        <td>Architect</td>
        <td>$95,000</td>
      </tr>
      <tr>
        <td>Ava</td>
        <td>Hall</td>
        <td>34</td>
        <td>246 Pinecrest St</td>
        <td>[email protected]</td>
        <td>789-012-3456</td>
        <td>Dallas</td>
        <td>USA</td>
        <td>Financial Analyst</td>
        <td>$80,000</td>
      </tr>
      <tr>
        <td>Alexander</td>
        <td>Young</td>
        <td>29</td>
        <td>753 Maplewood St</td>
        <td>[email protected]</td>
        <td>210-987-6543</td>
        <td>Philadelphia</td>
        <td>USA</td>
        <td>Real Estate Agent</td>
        <td>$70,000</td>
      </tr>
      <tr>
        <td>Mia</td>
        <td>Scott</td>
        <td>38</td>
        <td>852 Oak St</td>
        <td>[email protected]</td>
        <td>567-890-1234</td>
        <td>Minneapolis</td>
        <td>USA</td>
        <td>Doctor</td>
        <td>$150,000</td>
      </tr>
      <tr>
        <td>Ethan</td>
        <td>Adams</td>
        <td>27</td>
        <td>369 Walnut St</td>
        <td>[email protected]</td>
        <td>890-123-4567</td>
        <td>Portland</td>
        <td>USA</td>
        <td>Journalist</td>
        <td>$65,000</td>
      </tr>
      <tr>
        <td>Isabella</td>
        <td>Carter</td>
        <td>30</td>
        <td>147 Pine St</td>
        <td>[email protected]</td>
        <td>234-567-8901</td>
        <td>Detroit</td>
        <td>USA</td>
        <td>Entrepreneur</td>
        <td>$200,000</td>
      </tr>
      <tr>
        <td>Logan</td>
        <td>Green</td>
        <td>31</td>
        <td>258 Elm St</td>
        <td>[email protected]</td>
        <td>678-901-2345</td>
        <td>San Diego</td>
        <td>USA</td>
        <td>Engineer</td>
        <td>$90,000</td>
      </tr>
      <tr>
        <td>Amelia</td>
        <td>Roberts</td>
        <td>29</td>
        <td>369 Cedar St</td>
        <td>[email protected]</td>
        <td>123-456-7890</td>
        <td>Charlotte</td>
        <td>USA</td>
        <td>Designer</td>
        <td>$70,000</td>
      </tr>
      <tr>
        <td>Benjamin</td>
        <td>Hill</td>
        <td>35</td>
        <td>741 Oakwood St</td>
        <td>[email protected]</td>
        <td>456-789-0123</td>
        <td>San Antonio</td>
        <td>USA</td>
        <td>Manager</td>
        <td>$100,000</td>
      </tr>
      <tr>
        <td>Charlotte</td>
        <td>Adams</td>
        <td>33</td>
        <td>852 Maple St</td>
        <td>[email protected]</td>
        <td>789-012-3456</td>
        <td>Orlando</td>
        <td>USA</td>
        <td>Software Developer</td>
        <td>$85,000</td>
      </tr>
      <tr>
        <td>Gabriel</td>
        <td>Cook</td>
        <td>28</td>
        <td>159 Pinecrest St</td>
        <td>[email protected]</td>
        <td>210-987-6543</td>
        <td>Tampa</td>
        <td>USA</td>
        <td>Writer</td>
        <td>$60,000</td>
      </tr>
    </tbody>
  </table>
</div>
View Code

table.scss

.container {
  max-height: 256px;
  overflow-y: auto;
  max-width: 768px;
  margin-inline: auto;
}

table {
  border-spacing: 0;
  margin-inline: auto;

  th,
  td {
    border: 1px solid black;
  }

  :is(th, td):nth-child(n + 2) {
    border-left: unset;
  }

  td {
    border-top: unset;
  }

  thead {
    tr {
      background-color: white;
    }

    th {
      padding: 16px;
    }
  }

  td,
  th {
    padding: 16px;
    min-width: 250px;
    max-width: 250px;
  }
}
View Code

 

实现原理

监听 wheel 事件,会得到一个 WheelEvent 对象。

它里面有一个 deltaY 属性,我们 wheel 一下,这个 deltaY 会是 100 或 -100。

positive 表示 scroll down,negative 表示 scroll up。

100 是游览器设定的一下 wheel 要移动多少 scrollTop。

轻轻 wheel 一下就是 scrollTop += 100

如果快速 wheel 几下,这个 deltaY 不一定是 100,有可能是 200 甚至 300。

也就是说 wheel 的越快越多,移动的 scrollTop 越大。这是游览器的交互体验。

我们监听 wheel 然后 update scrollTop 就可以了。如果要体验好,就加入 animation,让它 smooth 一点。

 

标签:wheel,USA,Effect,St,000,JS,com,example
From: https://www.cnblogs.com/keatkeat/p/18172143

相关文章

  • RestClient C# 举例 是用jsonbody ,并列出httpclient 等价的方式
    以下是使用RestSharp发送POST请求并附带JSON请求体的示例,以及相应的使用HttpClient的等价方式:首先,使用RestSharp:usingSystem;usingRestSharp;usingNewtonsoft.Json;classProgram{staticvoidMain(string[]args){//创建RestClient实......
  • mORMot 1.18 第18章 使用REST/JSON的客户端/服务器
    mORMot1.18第十八章使用REST/JSON的客户端/服务器JSON是一种被多种语言和众多领先公司接受的标准。正如我们在JSON章节中所解释的,它是标准化的,紧凑且解析速度快,同时当加入非关键性空格时,也易于人类阅读。这些事实使其成为数据交换最受欢迎的格式之一。JSON支持六种数据类型:......
  • Vue package-lock.json的作用
    package-lock.json的作用 "node_modules/@aashutoshrathi/word-wrap":{"version":"1.2.6","resolved":"https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",&......
  • 前端 Vue webpack配置之 webpack.config.js 文件配置
     Webpack在执行的时候,除了在命令行传入参数,还可以通过指定的配置文件来执行。默认情况下,会搜索当前目录的 webpack.config.js 文件,这个文件是一个node.js模块,返回一个json格式的配置信息对象,或者通过 --config 选项来指定配置文件。.输入命令:webpack,即可按照webpack.c......
  • 前端 Vue-cli中 vue.config.js 的配置详解
    Vue-cli3/Vue-cli4 目录结构├──README.md #说明|--dist #打包后文件夹├──babel.config.js #babel语法编译├──package-lock.json├──public #静态文件夹,这类资源将会直接被拷贝,而不会经过webpack的......
  • js逆向实战之某证信Accept-Enckey参数加密解析
    url:https://webapi.cninfo.com.cn/#/marketDataDate分析过程抓包,主要关注图中标记的数据包,它的回显数据是我们所需要的。但在该数据包的请求中有一个Accept-Enckey参数是经过加密的,需要知道其加密的逻辑。全局搜索sysapi/p_sysapi1007,只有一处符合的。找到对应地方,......
  • 《Effective C++》第三版-4. 设计与声明(Design and Declarations)
    目录条款17:让接口容易被正确使用,不易被误用(Makeinterfaceseasytousecorrectlyandhardtouseincorrectly)限制类型和值规定能做和不能做的事提供行为一致的接口条款19:设计class犹如设计type(Treatclassdesignastypedesign)条款20:宁以pass-by-reference-to-const替换pass......
  • dremio 读取 jsonl 格式支持
    实际上属于dremio社区一个问题,内部实际上是dremio对于格式化插件支持的问题,不少是基于文件格式硬编码的,尽管我们可以自定义格式化插件,但是对于已经支持的就有点不是很方便了,可以直接复用现有的,以下说明下修改以及处理直接修改JSONFormatPlugin代码支持jsonl参考如下Fo......
  • jsrpc获取瑞数请求后缀和cookie
    jsrpc获取瑞数请求后缀和cookie记得加入我们的学习群:961566389点击链接加入群聊:https://h5.qun.qq.com/s/62P0xwrCNO1.分析xhr每次请求都能看到会携带一个请求后缀uB04BPdr:以及每次请求都会更换cookie下的mEsoE3ffu2LGP:这两个就是需要逆向的参数。2.调试因为使用jsrpc......
  • 使用joinjs绘制流程图(七)-实战-绘制流程图+节点设置样式+节点添加事件
    效果图原理joinjs中通过svg来绘制流程图,然后我们可以使用localToClientRect这个方法对节点(element)复制,它会在原来的element在svg位置上生成一个html元素,但是这样会造成原来的element节点监听的点击事件无法触发,我们可以使用原生来操作对这个元素(比如样式的设置和事件的监听)代......