vue2.0中goods选购栏滚动算法的实现代码


Posted in Javascript onMay 17, 2017

不多说,直接代码,以便以后重复利用:

<script type="text/ecmascript-6">
import BScroll from 'better-scroll';
const ERR_OK = 0;
export default {
 props: {
  sell: {
   type: Object
  }
 },
 data() {
  return {
   goods: [],
   listHeight: [],
   scrollY: 0
  };
 },
 computed: {
  currentIndex() {
   for (let i = 0; i < this.listHeight.length; i++) {
    let height1 = this.listHeight[i];
    let height2 = this.listHeight[i + 1];
    if (!height2 || (this.scrollY >= height1 && this.scrollY < height2)) {
     return i;
    };
   }
   return 0;
  }
 },
 created() {
  this.classMap = ['decrease', 'discount', 'special', 'invoice', 'guarantee'];
  this.$http.get('/api/goods').then((response) => {
   response = response.body;
   if (response.errno === ERR_OK) {
    this.goods = response.data;
    this.$nextTick(() => {
     this._initScroll();
     this._calculateHeight();
    });
   }
  });
 },
 methods: {
  _initScroll() {
   this.menuScroll = new BScroll(this.$refs.menuwrapper, {
    click: true
   });
   this.foodScroll = new BScroll(this.$refs.foodswrapper, {
    probeType: 3
   });
   this.foodScroll.on('scroll', (pos) => {
    this.scrollY = Math.abs(Math.round(pos.y));
   });
  },
  _calculateHeight() {
   let foodList = this.$refs.foodswrapper.getElementsByClassName('food-list-hook');
   let height = 0;
   this.listHeight.push(height);
   for (let i = 0; i < foodList.length; i++) {
    let item = foodList[i];
    height += item.clientHeight;
    this.listHeight.push(height);
   }
  },
  selectMenu(index, event) {
   if (!event._constructed) {
    return;
   };
   console.log(index);
   let foodList = this.$refs.foodswrapper.getElementsByClassName('food-list-hook');
   let el = foodList[index];
   this.foodScroll.scrollToElement(el, 300);
  }
 }
};
</script>

以上所述是小编给大家介绍的vue2.0中goods选购栏滚动算法的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
对YUI扩展的Gird组件 Part-1
Mar 10 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
Apr 27 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
Apr 02 Javascript
Bootstrap模块dropdown实现下拉框响应
May 22 Javascript
JavaScript程序中的流程控制语句用法总结
May 23 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
基于Vue实现微信小程序的图文编辑器
Jul 25 Javascript
微信小程序实现多选功能
Nov 04 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
Jan 18 Javascript
jQuery+ajax实现用户登录验证
Sep 13 jQuery
AngularJS自定义指令实现面包屑功能完整实例
May 17 #Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 #jQuery
AngularJS使用拦截器实现的loading功能完整实例
May 17 #Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
May 17 #Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 #Javascript
bootstrap轮播图示例代码分享
May 17 #Javascript
bootstrap警告框示例代码分享
May 17 #Javascript
You might like
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
PHP加密解密实例分析
2015/12/25 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
jquery 使用点滴函数代码
2011/05/20 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
群胜软件Java笔试题
2012/09/29 面试题
大学生毕业自我鉴定范文
2013/09/19 职场文书
家长给老师的感谢信
2015/01/20 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2015初中政教处工作总结
2015/07/21 职场文书