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 相关文章推荐
a标签click和href执行顺序探讨
Jun 23 Javascript
jquery解析json格式数据的方法(对象、字符串)
Nov 24 Javascript
AngularJS 使用$sce控制代码安全检查
Jan 05 Javascript
jQuery 选择器(61种)整理总结
Sep 26 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
Jan 19 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
vue.js 实现输入框动态添加功能
Jun 25 Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 Javascript
js实现图片上传即时显示效果
Sep 30 Javascript
vue登录以及权限验证相关的实现
Oct 25 Javascript
Openlayers实现距离面积测量
Sep 28 Javascript
jQuery实现手风琴特效
Jan 11 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
银行办理业务介绍信
2014/01/18 职场文书
优秀经理事迹材料
2014/02/01 职场文书
重点工程汇报材料
2014/08/27 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
2014年招商工作总结
2014/11/22 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python