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

发布时间 - 2026-01-11 01:08:30    点击率:

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

<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选购栏滚动算法的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# vue2.0  # goods选购栏  # vue  # 滚动  # vue diff算法全解析  # 详解Vue2的diff算法  # 一篇文章带你搞懂Vue虚拟Dom与diff算法  # 详解vue3.0 diff算法的使用(超详细)  # 详解为什么Vue中不要用index作为key(diff算法)  # Vue的transition-group与Virtual Dom Diff算法的使用  # Vue实现开心消消乐游戏算法  # 基于Vue实现电商SKU组合算法问题  # 详解vue的diff算法原理  # vue的diff算法知识点总结  # 解析Vue 2.5的Diff算法  # LRU算法在Vue内置组件keep-alive中的使用  # 小编  # 在此  # 给大家  # 多说  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # scrollY  # computed  # length  # currentIndex  # listHeight  # data  # Object  # goods  # return  # discount  # decrease 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站页面设计需要考虑到这些问题  制作企业网站建设方案,怎样建设一个公司网站?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何快速选择适合个人网站的云服务器配置?  微信小程序 input输入框控件详解及实例(多种示例)  如何在景安服务器上快速搭建个人网站?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  jQuery 常见小例汇总  深圳网站制作培训,深圳哪些招聘网站比较好?  郑州企业网站制作公司,郑州招聘网站有哪些?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何在IIS中新建站点并解决端口绑定冲突?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  七夕网站制作视频,七夕大促活动怎么报名?  JS经典正则表达式笔试题汇总  如何在搬瓦工VPS快速搭建网站?  Java类加载基本过程详细介绍  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  重庆市网站制作公司,重庆招聘网站哪个好?  如何在万网主机上快速搭建网站?  网站建设要注意的标准 促进网站用户好感度!  怎么用AI帮你为初创公司进行市场定位分析?  如何在万网开始建站?分步指南解析  Laravel观察者模式如何使用_Laravel Model Observer配置  百度浏览器如何管理插件 百度浏览器插件管理方法  如何快速搭建高效可靠的建站解决方案?  如何在万网ECS上快速搭建专属网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  javascript读取文本节点方法小结  Android使用GridView实现日历的简单功能  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何快速查询网址的建站时间与历史轨迹?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  高端网站建设与定制开发一站式解决方案 中企动力  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  详解阿里云nginx服务器多站点的配置  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  详解CentOS6.5 安装 MySQL5.1.71的方法  ,在苏州找工作,上哪个网站比较好?  C++时间戳转换成日期时间的步骤和示例代码