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功能函数(2009-06-04更新)
Jun 04 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
Sep 19 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
js的2种继承方式详解
Mar 04 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
Aug 12 Javascript
Javascript实现获取窗口的大小和位置代码分享
Dec 04 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
浅析上传头像示例及其注意事项
Dec 14 Javascript
基于JavaScript实现瀑布流效果
Mar 29 Javascript
vue2.0 常用的 UI 库实例讲解
Dec 12 Javascript
跨域请求两种方法 jsonp和cors的实现
Nov 11 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
Nov 04 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环境搭建最新方法
2006/09/05 PHP
php str_replace的替换漏洞
2008/03/15 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
python实现爬取图书封面
2018/07/05 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
平面设计专业大学生职业规划书
2014/03/12 职场文书
家长给学校的建议书
2014/05/15 职场文书
2014年除四害工作总结
2014/12/06 职场文书
避暑山庄导游词
2015/02/04 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
mysql脏页是什么
2021/07/26 MySQL