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 相关文章推荐
用js实现层随着内容大小动态渐变改变 推荐
Dec 19 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
Express作者TJ告别Node.js奔向Go
Jul 14 Javascript
使用 js+正则表达式为关键词添加链接
Nov 11 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
Nov 09 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
Javascript之Math对象详解
Jun 07 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 Javascript
JavaScript React如何修改默认端口号方法详解
Jul 28 Javascript
用webAPI实现图片放大镜效果
Nov 23 Javascript
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
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
php文件操作相关类实例
2015/06/18 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
取选中的radio的值
2010/01/11 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
WxPython实现无边框界面
2019/11/18 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
自主招生自荐书
2013/11/29 职场文书
《学会待客》教学反思
2014/02/22 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis