better scoll右 联左

news2024/9/22 1:10:29

在这里插入图片描述
这是先拿一个数组装进我们所有 获取到的dom节点的 高度
因为算的 都是 到最上面的 高度,所以我们 要减去他的 高度 就得到自身的高度
在这里插入图片描述
然后给右边加一个滚动事件,得到每一次滑动的高度,在循环上面的数组,就是我们右边的 y就在算出的这个区间内就等于那他
activekey是左边的 选中的状态
在这里插入图片描述
然后给左边的 每个标签都绑定一个id

<template>
  <div class="box">
    <!-- 左边 -->
    <div class="leftbox">
      <van-sidebar v-model="activeKey">
        <van-sidebar-item
          @click="onChange"
          v-for="(v,i) in asidelist"
          :title="v.name"
          :key="i"
          :id="'cate' +i"
        />
      </van-sidebar>
    </div>
    <!-- 右边 -->
    <div class="rightbox">
      <div>
        <div v-for="(v,i) in rightlist" :key="i" :id="'list' +i">
          <h3>{{v.name}}</h3>
          <van-card
            v-for="(v2,i2) in v.foods"
            :key="i2"
            :num="v.num"
            :price="v2.price"
            :desc="v2.goodsDesc"
            :title="v2.name"
            :thumb="v2.imgUrl"
          >
            <template #tags>
              <van-tag plain type="danger">标签</van-tag>
              <van-tag plain type="danger">标签</van-tag>
            </template>
            <template #footer>
              <van-stepper v-model="v.num" theme="round" button-size="16" min="0" disable-input />
            </template>
          </van-card>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import { goodsList } from "@/api/account.api";
import BScroll from "@better-scroll/core";
export default {
  data() {
    return {
      activeKey: 0,
      asidelist: [],
      rightlist: [],
      bs: {},
      bsr: {}
    };
  },
  // 点击左边跳转到右边的节点
  methods: {
    onChange(i) {
      this.bsr.scrollToElement("#list" + i, 300);
    }
  },
  async created() {
    const res = await goodsList();
    this.asidelist = res.data.data;
    this.rightlist = res.data.data;
    this.rightlist.forEach(v2 => {
      v2.num = 0;
    });
    // 获取两个左右边的父节点
    this.$nextTick(() => {
      this.bs = new BScroll(".leftbox", {
        probeType: 3,
        click: true
      });
      this.bsr = new BScroll(".rightbox", {
        probeType: 3,
        click: true
      });

      // 拿到我们初始值的右边所有商品列表把他放到一个数组里面
      let arr = [];
      this.rightlist.forEach((v, i) => {
        arr.push(
          document.querySelector("#list" + i).offsetTop -
            document.querySelector("#list0").offsetTop
        );
      });

      // 给右边添加滚动事件
      this.bsr.on("scroll", v => {
        let y = Math.abs(v.y);

        for (let i = 0; i < arr.length; i++) {
          if (y >= arr[i] && y < arr[i + 1]) {
            this.activeKey = i;
            this.bs.scrollToElement("#cate" + i, 300);
          }
        }
      });
    });
  }
};
</script>
<style lang="scss" scoped>
h3 {
  color: black;
  font-size: 14px;
  height: 4vh;
  line-height: 4vh;
  width: 100%;
  background-color: rgb(218, 209, 209);
  text-indent: 1em;
}
.box {
  display: flex;
  flex-direction: row;
  .leftbox {
    // width: 100px;
    overflow-y: hidden;
    background-color: f7f8fa;
  }
  .rightbox {
    height: 100vh;
    flex: 1;
    overflow-y: hidden;
    // background-color: antiquewhite;
  }
}
</style>






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/811898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何排查 IDEA 自身报错?| 以 IntelliJ IDEA 2023.1.4 无法刷新项目 Maven 模块的问题为例

这个问题是 2023 年 7 月 26 日遇到的&#xff0c;当时还是 IDEA 2023.1.4&#xff0c;结果文章还没写完&#xff0c;7 月 27 日自动给更新了 IDEA 2023.2。问题估计解决了。 所以&#xff0c;本文就简单提一下 IDEA 自身报错的排查方法。 规避/解决方式 先说问题怎么处理&am…

重生之我要学C++第五天

这篇文章主要内容是构造函数的初始化列表以及运算符重载在顺序表中的简单应用&#xff0c;运算符重载实现自定义类型的流插入流提取。希望对大家有所帮助&#xff0c;点赞收藏评论&#xff0c;支持一下吧&#xff01; 目录 构造函数进阶理解 1.内置类型成员在参数列表中的定义 …

糟了,数据库主从延迟了!

前言 在实际的生产环境中&#xff0c;由单台MySQL作为独立的数据库是完全不能满足实际需求的&#xff0c;无论是在安全性&#xff0c;高可用性以及高并发等各个方面 因此&#xff0c;一般来说都是通过集群主从复制&#xff08;Master-Slave&#xff09;的方式来同步数据&…

【点云处理教程】05-Python 中的点云分割

一、说明 这是我的“点云处理”教程的第 5 篇文章。“点云处理”教程对初学者友好&#xff0c;我们将在其中简单地介绍从数据准备到数据分割和分类的点云处理管道。 在上一教程中&#xff0c;我们看到了如何过滤点云以减少噪声或其密度。在本教程中&#xff0c;我们将应用一些聚…

LeetCode_11. 盛最多水的容器

题目描述 11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/container-with-most-water/ 思路分析 这题就是典型的是一道很经典的面试题&#xff0c;最优的解法是双指针&#xff0c;但很多人在第一次看到这题的时候很难想到用双指针来…

*CTF 2023 Misc

一、 snippingTools Alice在参加某个CTF比赛&#xff0c;她成功的解出了一道题&#xff0c;拿到了flag。她很开心&#xff0c;迫不及待地想要向Bob分享她的喜悦。于是按下了快捷键ShiftWinS使用了Windows 11的截图工具&#xff0c;截取了整个屏幕&#xff0c;并且保存为文件1.p…

无涯教程-jQuery - Spinner组件函数

Widget Spinner 函数可与JqueryUI中的窗口小部件一起使用。Spinner提供了一种从一组中选择一个值的快速方法。 Spinner - 语法 $( "#menu" ).selectmenu(); Spinner - 示例 以下是显示Spinner用法的简单示例- <!doctype html> <html lang"en"…

(树) 剑指 Offer 27. 二叉树的镜像 ——【Leetcode每日一题】

❓剑指 Offer 27. 二叉树的镜像 难度&#xff1a;简单 请完成一个函数&#xff0c;输入一个二叉树&#xff0c;该函数输出它的镜像。 例如输入&#xff1a; 4/ \2 7/ \ / \1 3 6 9镜像输出&#xff1a; 4/ \7 2/ \ / \9 6 3 1示例 1&#xff1a; 输…

给你一个项目,你将如何开展性能测试工作?

一、性能三连问 1、何时进行性能测试&#xff1f; 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的&#xff0c;在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响&#xff0c;过早进入性能测试会出现测试结果不准确、浪费测试资…

We are the Lights - 思维

分析&#xff1a; 每次操作会把上一次的状态覆盖&#xff0c;但是从后往前操作可以保留最后一次覆盖&#xff0c;每一个位置最后的覆盖状态一定是最终状态&#xff0c;因此可以存下来从后往前记录第一次覆盖的状态并计数。 代码&#xff1a; #include <bits/stdc.h>usi…

玩转LaTeX(一)【源文件基本结构、中文处理方法、中英文的字体字号设置、文档基本结构】

latex源文件基本结构&#xff1a; 【在latex中一般分为两个区&#xff0c;一个是导言区&#xff0c;一个是正文区&#xff08;文稿区&#xff09;】 %导言区(主要进行全局设置)%一个latex文件&#xff0c;只能有且只有一个document环境\documentclass{article} %除article类外…

OpenHarmony开源鸿蒙学习入门 - 基于3.2Release 应用开发环境安装

OpenHarmony开源鸿蒙学习入门 - 基于3.2Release 应用开发环境安装 基于目前官方master主支&#xff0c;最新文档版本3.2Release&#xff0c;更新应用开发环境安装文档。 一、安装IDE&#xff1a; 1.IDE安装的系统要求 2.IDE下载官网链接&#xff08;IDE下载链接&#xff09; …

【论文精读】Self-Attentive Assocative Memory,2020

目录 1 引言2 Outer product attention (OPA)3 Self-attentive Associative Memory (SAM)4 SAM-based Two-Memory Model (STM)4.1 M i M^i Mi写操作4.2 M r M^r Mr读操作4.3 M i M^i Mi读操作和 M r M^r Mr写操作过程4.4 用 M r M^r Mr实现item转移4.5 模型输出 o t o_t ot​…

C语言手撕顺序表

目录 一、概念 1、静态顺序表&#xff1a;使用定长数组存储元素。 2、动态顺序表&#xff1a;使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x …

数据集【NO.7】无人机航拍数据集——VisDrone2019数据集

写在前面&#xff1a;数据集对应应用场景&#xff0c;不同的应用场景有不同的检测难点以及对应改进方法&#xff0c;本系列整理汇总领域内的数据集&#xff0c;方便大家下载数据集&#xff0c;若无法下载可关注后私信领取。关注免费领取整理好的数据集资料&#xff01;本文数据…

【前端知识】React 基础巩固(四十)——Navigate导航

React 基础巩固(四十)——Navigate导航 一、Navigate的基本使用 新建Login页面&#xff0c;在Login中引入Navigate&#xff0c;实现点击登陆按钮跳转至/home路径下&#xff1a; import React, { PureComponent } from "react"; import { Navigate } from "reac…

MySQL数据库之JDBC编程(从认识到操作)

目录 前言 一.JDBC的认识 1.1JDBC的来源 1.2JDBC的概念 二.JDBC的导包 三.JDBC的四步操作 三.JDBC常用的类和方法 3.1常用类 3.2常见方法 &#x1f381;个人主页&#xff1a;tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 &#x1f3a5; 本文由 tq02 原创&…

芯片制造详解.光刻技术与基本流程.学习笔记(四)

本篇文章是看了以下视频后的笔记提炼&#xff0c;欢迎各位观看原视频&#xff0c;这里附上地址 芯片制造详解04&#xff1a;光刻技术与基本流程&#xff5c;国产之路不容易 芯片制造详解.光刻技术与基本流程.学习笔记 四 一、引子二、光刻(1).光掩膜(2).光刻机(3).光刻胶(4).挖…

matplotlib实现动态显示图片

plt.ion()打开交互开关 plt.ioff()关闭交互开关 plt.pause(0.1)暂停0.1秒 plt.clf()#清除当前的Figure图像 plt.cla()#清除当前的Axex图像 import matplotlib.pyplot as plt import numpy as np import time from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg…

计算机二级Python基本操作题-序号43

1. # 键盘输入一句话&#xff0c;用jieba分词后&#xff0c;将切分的词组按照在原话中逆序输出到屏幕上&#xff0c;词组中间没有空格。 示例如下&#xff1a; 输入&#xff1a; 我爱老师 输出&#xff1a; 老师爱我 import jieba txt input (请输入一段中文文本&#xff1a;)…