组件使用li列表,将需要滚动的块包装为div,设置高度

<div><ul><div class="menu-div" id="menu"><li v-for="i in list" :key="i.value">{{i.value}}</li></div></ul><el-button @click="handleScroll('up')" size="mini" type="primary">向上</el-button><el-button @click="handleScroll('down')" size="mini" type="primary">向下</el-button></div>

css

.menu-div{margin: 16px 0;height: 200px;overflow-y: hidden;ul li {list-style: none;}
}

具体滚动方法

// 生成listhandleList() {for (let i = 0; i < 100; i++) {this.list.push({label: i + 1,value: i + 1})}},// 滚动效果easeInQuad(curtime,begin,end,duration){let x = curtime/duration; //x值let y = x*x; //y值return begin+(end-begin)*y; //套入最初的公式},easeOutQuad(curtime,begin,end,duration){let x = curtime/duration;         //x值let y = -x*x + 2*x;  //y值return begin+(end-begin)*y;        //套入最初的公式},easeInoutQuad(curtime,begin,end,duration){if(curtime<duration/2){ //前半段时间return this.easeInQuad(curtime,begin,(begin+end)/2,duration/2);//改变量和时间都除以2}else{let curtime1 = curtime-duration/2; //注意时间要减去前半段时间let begin1 = (begin+end)/2;//初始量要加上前半段已经完成的return this.easeOutQuad(curtime1,begin1,end,duration/2);//改变量和时间都除以2}},// 滚动handleScroll (action) {let menuScroll = document.getElementById('menu')// 每次滚动距离let dis = 60;// 滚动时长let duration = 500;// 初始距离let preX = 0;let startTime = new Date().getTime();let func = ()=>{let nowTime = new Date().getTime();let t = nowTime - startTime;// 当时长大于500时,停止滚动if (t > duration){return;}let s = this.easeInoutQuad(t, 0, dis, duration);// 每次滚动距离let x = s - preX;preX = s;if (action === 'up') {// 向上滚动menuScroll.scrollTop -= x} else if (action === 'down') {// 向上滚动menuScroll.scrollTop += x}// 请求滚动requestAnimationFrame(func)}requestAnimationFrame(func)}

vue实现点击上下按钮或上下箭头,列表上下滚动功能及特效相关推荐

  1. vue实现点击不同按钮展示不同内容

    效果是:在同一个页面,点击不同按钮,展示不同内容(内容也是在同意页面) 方法是:借助v-show渲染不同的class属性 步骤: 1.先写两个按钮 <div class="right1 ...

  2. vue ajax提交防止伪造,axios+vue防止点击提交按钮而发送多次请求

    问题:如图,当我连续点击提交按钮多次,后台会接收到多次数据. image.png 在网上找了下方法,结合自己实际的问题,解决如下(参考文章:https://www.jianshu.com/p/4445 ...

  3. Vue打包点击手机按钮退出导致软件完全退出的解决方法

    教程 先使用npm下载npm install vue-awesome-mui 下载以后在min.js引入 import Mui from 'vue-awesome-mui' Vue.use(Mui) ...

  4. js实现楼层跳跃(点击楼层按钮可对应到楼层,滚动到某一楼层对应的楼层按钮高亮)...

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 前端Vue项目中点击a标签实现下载文件到本地的功能

    点击a标签可实现下载图片或者是文件到本地的功能 1.根据后台提供的接口url下载文件到本地 <a :href="后台给接口提供的文件的url地址">点击下载文件< ...

  6. html编辑点击取消复原,vue点击编辑按钮,内容变成input可以修改,也可以删除

    一.效果 图1 图2,点击报错之后,又变成图1的效果 二.使用到了element UI中的以下组件: 三.使用的关键点是vue中的v-if指令 四.关键代码如下 HTML部分 添加街道 编辑 保存 @ ...

  7. vue项目-点击添加或者修改按钮浏览器的屏幕变黑,再次点击屏幕之后浏览器恢复正常(火狐浏览器、ChromeCoreLauncher双核浏览器)

    今天在写springboot+vue项目的时候发现了一个bug,之前写的项目就没有这种情况,bug如下: 点击添加或者修改按钮浏览器的屏幕变黑,再次点击屏幕之后浏览器恢复正常 点击修改按钮 屏幕变黑 ...

  8. vue 如何点击按钮返回上一页

    1,vue 如何点击按钮返回上一页呢? 这是vue挂载的范围html代码 <div @click="goOff()">返回</div> 下面是点击返回的方法 ...

  9. vue中,点击button按钮后,页面上的input框再次自动获取焦点

    需求:点击button按钮,录入成功后,页面上的input框自动聚焦,快速进行下一次录入,提高效率 开始尝试了几种方法都没有成功 一.首先想到的用vue指令 v-focus,然而没有成功 <In ...

最新文章

  1. 部署tomcat环境
  2. shell里面的参数
  3. ICLR要搞深度生成模型大讨论,Max Welling和AAAI百万美元大奖得主都来了,Bengio是组织者之一...
  4. linux 内核参数 max_map_count 进程可拥有的虚拟内存区域数量 简介
  5. JAVA相关基础知识(一)
  6. python像素处理_Python+OpenCV图像处理(五)—— 像素运算
  7. 从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构
  8. 正则表达式确实是一种考验
  9. View内容保存为图片
  10. 18大产业的产业链全景图!(高清大图)
  11. 无需绿幕的全自动视频抠图工具|unscreen
  12. 图灵接口 php,图灵机器人API接口
  13. 菜单栏、工具栏、状态栏——QT
  14. python调用不起来chrome_python调用selenium打开chrome浏览器失败
  15. 重磅!瑞泰信息发布中国企业数字化增长行业实践白皮书——《数字化平台造就企业增长新引擎》
  16. 物联网系统中常见的通信协议分析
  17. 记一次Windows10 home版文件共享步骤及问题处理
  18. RayScan漏扫工具
  19. 【FPGA】初探FPGA —— 入门书籍推荐
  20. 2022年登高架设考试练习题及答案

热门文章

  1. 劲舞团进不去显示与服务器中断链接,劲舞团进不去显示与服务器中断链接
  2. i37100黑苹果_【台式机】i3-7100 微星 B250M PRO-V GTX 660 10.13.6黑苹果引导_Hackintosh_Clover...
  3. 但是没有计算机和电视机英语翻译,英语翻译
  4. 让收件人看到自已定的发件人 名字 (displayname)
  5. Windows11时钟显示秒数的方法
  6. GPU驱动安装和切分
  7. STUN打洞学习笔记
  8. MySQL page cleaner占用CPU较高问题
  9. 计算机时代汉字发展例子,计算机时代的汉字文化情结
  10. Python数据分析就业前景市场分析报告及暑期规划