当前位置: 首页 > news >正文

菜单和内容滚动的联动原理及代码

之前写代码有个需求:左侧是一个菜单,右边是内容,点击左侧菜单右边内容滚动到对应位置,右边内容滚动到某位置时,左侧菜单也会选中对应的菜单项。UI如下:这是大多网站的移动端都会有的需求。

解决方案一:

我们可以使用页面锚点的方式来操作,就是左边菜单使用<a href="#推荐1">然后右侧内容,每个模块使用id属性<div id="推荐1">如此也是可以实现页面滚动联动的。

解决方案二:

使用js操作dom:(我这里使用vue框架)但js操作DOM原理都是相通的,相比也能看懂

async getList() {//从后端获取数据let that = this;await api.axios({url: "/api/list/list"}).then((res) => {that.listData = res.list;that.listBanner = res.banner
//这里要在获取到数据后再去拿DOM,不然高度是不准确的。setTimeout(function() {
//这里使用vue的ref获取DOMlet rightItem = that.$refs.RightList.getElementsByClassName("list-item");let height = 0;
//将所有模块的高度获取到,后面点击时让右侧滚动到对应高度就行了。Array.from(rightItem).forEach(v => {height += v.clientHeightthat.allHeight.push(height)})}, 200)})
leftChange(index) { //左侧点击let scrollMax = this.rightScroll.maxScrollY; //最大滚动区间
//这个判断是因为我右侧的内容数组第一个是写死的,其他的和左侧菜单都是后端返回的if (index === 0) {this.$refs.RightList.scrollTo({top: 0})} else {this.$refs.RightList.scrollTo({top: this.allHeight[index + 1]})}this.nowIndex = index;},ScrollChange(e){//右侧滚动操作let top = this.$refs.RightList.scrollTop//console.log(top)this.allHeight.forEach((item,index,arr)=>{if(top >= arr[index]){
//这个判断是因为我右侧的内容数组第一个是写死的,其他的和左侧菜单都是后端返回的if(index===0){this.nowIndex = 0;}else{this.nowIndex = index-1;}}})}

相关文章:

菜单和内容滚动的联动原理及代码

之前写代码有个需求&#xff1a;左侧是一个菜单&#xff0c;右边是内容&#xff0c;点击左侧菜单右边内容滚动到对应位置&#xff0c;右边内容滚动到某位置时&#xff0c;左侧菜单也会选中对应的菜单项。UI如下&#xff1a;这是大多网站的移动端都会有的需求。 解决方案一&…...

Python爬虫:单线程、多线程、多进程

前言 在使用爬虫爬取数据的时候&#xff0c;当需要爬取的数据量比较大&#xff0c;且急需很快获取到数据的时候&#xff0c;可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。 一、进程和线程 进程可以理解为是正在运行的程序的实例。进…...

超强的Everything,吊打系统自带文件搜索功能!

目录 一、软件简介 二、软件下载 三、软件说明 一、软件简介 Everything是一款由David OReilly开发的电脑搜索软件&#xff0c;它可以帮助用户快速找到电脑上的文件和文件夹。与其他搜索工具不同的是&#xff0c;Everything使用了一种非常快速和高效的搜索算法&#xff0c…...

flink配置参数

flink-conf.yaml 基础配置 # jobManager 的IP地址jobmanager.rpc.address: localhost# JobManager 的端口号jobmanager.rpc.port: 6123# JobManager JVM heap 内存大小jobmanager.heap.size: 1024m# TaskManager JVM heap 内存大小taskmanager.heap.size: 1024m# 每个 TaskMan…...

学习Vue:安装Vue.js和设置开发环境

当您决定进入现代前端开发的世界&#xff0c;Vue.js 无疑是一个令人激动的选择。它以其简洁、灵活和高效的特点在开发者社区中备受赞誉。本文将为您详细介绍如何安装 Vue.js 并设置开发环境&#xff0c;让您能够迅速开始编写 Vue 应用程序。 步骤1&#xff1a;安装 Node.js 和 …...

代理技术在网络安全、爬虫和数据隐私中的多重应用

1. Socks5代理&#xff1a;灵活的数据中转 Socks5代理协议在网络通信中起着关键作用。与其他代理技术不同&#xff0c;Socks5代理不仅支持TCP连接&#xff0c;还能够处理UDP流量&#xff0c;使其在需要实时数据传输的场景中表现尤为出色。通过将请求和响应中转到代理服务器&am…...

Python 3 使用Hadoop 3之MapReduce总结

MapReduce 运行原理 MapReduce简介 MapReduce是一种分布式计算模型&#xff0c;由Google提出&#xff0c;主要用于搜索领域&#xff0c;解决海量数据的计算问题。 MapReduce分成两个部分&#xff1a;Map&#xff08;映射&#xff09;和Reduce&#xff08;归纳&#xff09;。…...

KU Leuven TU Berlin 推出“RobBERT”,一款荷兰索塔 BERT

荷兰语是大约24万人的第一语言&#xff0c;也是近5万人的第二语言&#xff0c;是继英语和德语之后第三大日耳曼语言。来自比利时鲁汶大学和柏林工业大学的一组研究人员最近推出了基于荷兰RoBERTa的语言模型RobBERT。 谷歌的BERT&#xff08;来自Transformers的B idirectional …...

Postern中配置和使用Socks5代理指南

在Postern中配置和使用Socks5代理&#xff0c;可以为你的爬虫项目提供更灵活、更可靠的网络连接。本文将向你分享如何在Postern中配置和使用Socks5代理的方法&#xff0c;解决可能遇到的问题 配置和使用Socks5代理的步骤&#xff1a; 1.了解Socks代理&#xff1a;了解Socks5代…...

android 窗口级模糊实现方式

在Android上实现窗口级模糊效果有多种方法&#xff0c;下面列出了其中两种常用的实现方式&#xff1a; RenderScript模糊效果&#xff1a; 使用ScriptIntrinsicBlur类在RenderScript中实现模糊效果。创建一个RenderScript实例并将要模糊的图像传递给它。创建一个ScriptIntrinsi…...

面试热题(数组中的第K个最大元素)

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 输入: [3,2,1,5,6,4] 和 k 2 输出: 5提到数组中最大元素&#xff0c;我们往往想到就是先给数组…...

HTTP2协议介绍

前言 HTTP是现代互联网通信的基础协议之一&#xff0c;早在1991年&#xff0c;HTTP/0.9版本就诞生了&#xff0c;之后又陆续发布了HTTP/1.0和HTTP/1.1&#xff0c;为互联网应用提供了更高效和可靠的通信方式。 随着时间的推移&#xff0c;互联网的规模和复杂性不断扩大&#x…...

矩阵的转置

题目&#xff1a; 给你一个二维整数数组 matrix&#xff0c; 返回 matrix 的 转置矩阵 。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[[1,4,7],[2,5,8],[3,6,9]]class Solution(object):def transpose(self, matrix):"&q…...

web集群学习:nginx+keepalived实现负载均衡高可用性

目录 项目架构 一&#xff0c;环境介绍 二&#xff0c;项目部署 在Web服务器上配置Web测试页面 nginx负载均衡配置 配置Nginx_Master 通过vrrp_script实现对集群资源的监控&#xff08;1>通过killall命令探测服务运行状态&#xff09; 通过vrrp_script实现对集群资源…...

MFC第二十九天 CView类的分支(以及其派生类的功能)、MFC六大关键技术

文章目录 CView类的分支CEditViewCHtmlViewMainFrm.h CMainFrame 类的接口CMainView .h CListCtrl与CListView的创建原理 CTreeViewCTreeCtrl类简介CTreeCtrl类的原理以及常用功能 MFC六大关键技术视图和带分割栏的框架开发与消息路由CLeftView.cppCRightView.hCRightView.cppC…...

SpringBoot复习:(37)自定义ErrorController

所有接口统一返回的数据格式 package cn.edu.tju.domain;public class MyResponse {private int code;private String message;private String exception;private String stack;public int getCode() {return code;}public void setCode(int code) {this.code code;}public S…...

Linux学习之防火墙概述

防火墙分类&#xff1a; 软件防火墙&#xff1a;常用于数据包的过滤&#xff0c;比如限制某些ip或者端口&#xff0c;进行某些数据的转发或者传送 硬件防火墙&#xff1a;防御地域攻击 软件防火墙的分类&#xff1a; 包过滤防火墙&#xff1a;控制比较宽泛&#xff0c;防御效果…...

JS_围绕圆形滑动

需求&#xff1a;滑动手势最大不能超过一个半径为50的圆形&#xff0c;超出围绕圆形边线滑动 这里只提供一个思路&#xff0c;下面代码可以运行&#xff0c;但是要使用需要改成自己的参数 <div style"width: 100%;height: 100vh;display: flex;justify-content: cente…...

Ubuntu上安装RabbitMQ

在Ubuntu上安装RabbitMQ并设置管理员用户为"admin"&#xff0c;密码为"123456"&#xff0c;并开启开机自启 更新系统软件包列表。在终端中执行以下命令&#xff1a; sudo apt update安装RabbitMQ服务器软件包。运行以下命令&#xff1a; sudo apt insta…...

统计学和机器学习之间的联系和区别

一、说明 老实说&#xff0c;我厌倦了几乎每天都在社交媒体和我的大学里听到这场辩论。通常&#xff0c;这伴随着一些模糊的陈述来解释这个问题。双方都为此感到内疚。我希望在本文结束时&#xff0c;您将对这些有些模糊的术语有更明智的立场。 二、论点 与普遍的看法相反&…...

OpenSpeedy游戏变速工具全攻略:突破帧率限制的开源解决方案

OpenSpeedy游戏变速工具全攻略&#xff1a;突破帧率限制的开源解决方案 【免费下载链接】OpenSpeedy &#x1f3ae; An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy 在游戏世界中&#xff0c;你是否曾因帧率不稳定、加载…...

Qwen2.5-0.5B-Instruct实战教程:实现8K tokens长文本生成部署

Qwen2.5-0.5B-Instruct实战教程&#xff1a;实现8K tokens长文本生成部署 想找一个轻量级但能力不俗的大模型来试试手&#xff1f;特别是想处理一些长文本&#xff0c;比如总结报告、分析长文档或者写个长篇小说&#xff1f;那你来对地方了。今天我们要聊的&#xff0c;就是阿…...

Gemini CLI 进阶实战:解锁AI自动化工作流的核心技巧

1. 从单点工具到自动化引擎&#xff1a;Gemini CLI的进阶定位 第一次接触Gemini CLI时&#xff0c;我像大多数开发者一样&#xff0c;只是把它当作一个普通的命令行工具——输入指令&#xff0c;获取AI生成结果。直到有次需要批量处理500份客户反馈&#xff0c;我才意识到它的真…...

无缝多人游戏开发:ServerTravel实现跨关卡Actor数据持久化

1. ServerTravel机制的核心作用 在多人联机游戏开发中&#xff0c;ServerTravel是服务器端控制关卡切换的核心机制。想象一下你和朋友玩开放世界游戏时&#xff0c;从城镇进入地下城的场景切换过程。传统方式会导致所有玩家断开重连&#xff0c;而ServerTravel能让所有客户端保…...

基于MATLAB的轮轨接触几何计算GUI程序设计与实现

1-148 matlab的带有gui的轮轨接触几何计算程序基于matlab的带有gui的轮轨接触几何计算程序,根据不同的踏面和轨头&#xff0c;计算不同横移量下面的接触点位置。程序已调通&#xff0c;可直接运行有没有人蹲过现成的、换文件就能换轮轨、不用啃半天赫兹接触前的几何方程、结果还…...

Automerge 数据备份与恢复终极指南:10个关键策略保护你的协作数据

Automerge 数据备份与恢复终极指南&#xff1a;10个关键策略保护你的协作数据 【免费下载链接】automerge A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically. 项目地址: https://gitcode.com/gh…...

Naivechain性能基准测试终极指南:评估区块链吞吐量的完整教程

Naivechain性能基准测试终极指南&#xff1a;评估区块链吞吐量的完整教程 【免费下载链接】naivechain A blockchain implementation in 200 lines of code 项目地址: https://gitcode.com/gh_mirrors/na/naivechain 想要了解区块链的真实性能表现吗&#xff1f;Naivech…...

Tensorflow-Cookbook最佳实践:如何避免常见陷阱与性能优化技巧

Tensorflow-Cookbook最佳实践&#xff1a;如何避免常见陷阱与性能优化技巧 【免费下载链接】Tensorflow-Cookbook Simple Tensorflow Cookbook for easy-to-use 项目地址: https://gitcode.com/gh_mirrors/te/Tensorflow-Cookbook TensorFlow作为深度学习领域最流行的框…...

Adobe Bridge(Br)2026下载连接

下载链接&#xff1a;https://pan.xunlei.com/s/VOnoa7p2tYOZ1jAQ_1Qvn1T7A1?pwdmb33 下载连接...

光流估计在自动驾驶中的5大应用场景:从车道线检测到碰撞预警

光流估计在自动驾驶中的5大应用场景&#xff1a;从车道线检测到碰撞预警 当一辆自动驾驶汽车以60公里/小时的速度行驶时&#xff0c;每秒需要处理超过100万像素的运动信息。传统基于静态图像的分析方法在这种动态场景中显得力不从心&#xff0c;而光流技术通过捕捉像素级的运动…...