菜單和內容滾動的聯動原理及代碼

之前寫代碼有個需求:左側是一個菜單,右邊是內容,點擊左側菜單右邊內容滾動到對應位置,右邊內容滾動到某位置時,左側菜單也會選中對應的菜單項。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;}}})}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38257.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38257.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38257.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高憶管理:什么是一碼通?有什么好處?

在經過券商開戶后&#xff0c;除了其間的財物賬戶、滬深股賬戶外&#xff0c;還有一個一碼通賬戶&#xff0c;什么是一碼通&#xff1f;它有什么好處&#xff1f;關于這些&#xff0c;高憶管理為大家預備了以下參閱內容。 什么是一碼通&#xff1f; 一碼通賬戶&#xff0c;一般…

CSDN編程題-每日一練(2023-08-15)

CSDN編程題-每日一練(2023-08-15) 一、題目名稱:新型美麗數列二、題目名稱:會議安排三、題目名稱:小豚鼠搬家一、題目名稱:新型美麗數列 時間限制:1000ms內存限制:256M 題目描述: 定義美麗數列A: 1. 數列中相鄰的數越是靠內相對大小加一,a[2]=a[1]+1,a[n-2]=a[n-1]+1…

【C語言】小游戲-掃雷(清屏+遞歸展開+標記)

大家好&#xff0c;我是深魚~ 目錄 一、游戲介紹 二、文件分裝 三、代碼實現步驟 1.制作簡易游戲菜單 2. 初始化棋盤(11*11) 3.打印棋盤(9*9) 4.布置雷 5.計算(x,y)周圍8個坐標的和 6.排查雷 <1>清屏后打印棋盤 <2>遞歸展開 <3>標記雷 四、完整代…

視頻監控有哪些存儲方式?安防監控應該如何選擇存儲模式?

視頻監控系統涉及到大量的視頻數據&#xff0c;需要對這些數據進行存儲&#xff0c;以備日后查看或備份。視頻監控的存儲需求需要根據場所的實際情況進行選擇&#xff0c;以保證監控數據的有效存儲和日后的調閱、回溯。 當前視頻監控的存儲方式&#xff0c;通常有以下幾種&…

Golang協程,通道詳解

進程、線程以及并行、并發 關于進程和線程 進程&#xff08;Process&#xff09;就是程序在操作系統中的一次執行過程&#xff0c;是系統進行資源分配和調度的基 本單位&#xff0c;進程是一個動態概念&#xff0c;是程序在執行過程中分配和管理資源的基本單位&#xff0c;每…

【BASH】回顧與知識點梳理(二十三)

【BASH】回顧與知識點梳理 二十三 二十三. Linux 賬號管理&#xff08;二&#xff09;23.1 賬號管理新增與移除使用者&#xff1a; useradd, 相關配置文件, passwd, usermod, userdelusermoduserdel 23.2 用戶功能&#xff08;普通用戶可使用&#xff09;idfingerchfnchsh 23.3…

【數據庫系統】--【2】DBMS架構

DBMS架構 01DBMS架構概述02 DBMS的物理架構03 DBMS的運行和數據架構DBMS的運行架構DBMS的數據架構PostgreSQL的體系結構RMDB的運行架構 04DBMS的邏輯和開發架構DBMS的層次結構DBMS的開發架構DBMS的代碼架構 05小結 01DBMS架構概述 02 DBMS的物理架構 數據庫系統的體系結構 數據…

騰訊Perfdog支持Windows PC端體驗性能測試

一、背景 最近在做抖音的小玩法&#xff0c;其基于unity引擎&#xff0c;然后掛載到直播伴侶。以及Perfdog近期也支持了Windows的測試&#xff0c;所以做一個體驗測試。 二、如何做 查看PC端的支持&#xff0c;目前是beat版本 選擇或搜索自己需要的對應的程序&#xff0c;如…

python實現文本相似度排名計算

項目中&#xff0c;客戶突然提出需要根據一份企業名單查找對應的內部系統用戶信息&#xff0c;然后根據直接的企業社會統一信用號和企業名稱進行匹配&#xff0c;發現匹配率只有2.86%&#xff0c;低得可憐。所以根據客戶的要求&#xff0c;需要將匹配率提高到70-80%左右&#x…

vue2+百度地圖web端開發

在Vue 2中開發百度地圖Web端應用&#xff0c;你可以使用百度地圖JavaScript API來實現地圖功能。以下是一個簡單的示例&#xff1a; 簡單的示例&#xff1a; 首先&#xff0c;在你的Vue項目中安裝vue-baidu-map插件&#xff1a; npm install vue-baidu-map --save在你的Vue組…

大數據Flink(五十九):Flink on Yarn的三種部署方式介紹以及注意

文章目錄 Flink on Yarn的三種部署方式介紹以及注意 一、Pre-Job 模式部署作業

對任意類型數都可以排序的函數:qsort函數

之前我們學習過冒泡排序&#xff1a; int main() {int arr[] { 9,7,8,6,5,4,3,2,1,0 };int sz sizeof(arr)/sizeof(arr[0]);int i 0;for (i 0; i < sz-1; i) {int j 0;for (j 0; j < sz-1-i; j) {if (arr[j] > arr[j 1]){int temp 0;temp arr[j];arr[j] ar…

接口測試及接口抓包常用的測試工具

接口 接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換&#xff0c;傳遞和控制管理過程&#xff0c;以及系統間的相互邏輯依賴關系等。 接口測試的重要性 是節省時間前后端不…

七、dokcer-compose部署springboot的jar

1、準備 打包后包名為 ruoyi-admin.jar 增加接口 httpL//{ip}:{port}/common/test/han #環境變量預application.yml 中REDIS_HOSTt的值&#xff0c;去環境變量去找&#xff1b;如果找不到REDIS_HOST就用myredis 1、Dockerfile FROM hlw/java:8-jreRUN ln -sf /usr/share/z…

私密相冊管家-加密碼保護私人相冊照片安全

App Store史上最安全、最強大、最卓越的私密相冊App&#xff01;再也不用擔心私密照片視頻被別人看見了&#xff01;?私密相冊為你提供多重密碼保護機制、簡單便捷的照片存儲空間&#xff0c;完美地將你的私密照片遠離一切惡意偷窺者的窺探&#xff01; 【產品功能】? √ 支…

Redis—持久化

這里寫目錄標題 AOF三種寫回策略寫回策略的優缺點AOF 重寫機制AOF后臺重寫AOF優缺點使用命令 RDBRDB 持久化的工作原理執行快照時&#xff0c;數據能被修改嗎RDB 持久化的優點RDB 持久化的缺點 混合持久化大key對持久化的影響 AOF 保存寫操作命令到日志的持久化方式&#xff0…

開源數據庫Mysql_DBA運維實戰 (DML/DQL語句)

DML/DQL DML INSERT 實現數據的 插入 實例&#xff1a; DELETE 實現數據的 刪除 實例&#xff1a; UPDATE 實現數據的 更新 實例1&#xff1a; 實例2&#xff1a; 實例3&#xff1a; DQL DML/DQL DML語句 數據庫操縱語言&#xff1a; 插入數據INSERT、刪除數據DELE…

2023年即將推出的CSS特性對你影響大不大?

Google開發者大會每年都會提出有關于 Web UI 和 CSS 方面的新特性&#xff0c;今年又上新了許多新功能&#xff0c;今天就從中找出了影響最大的幾個功能給大家介紹一下 :has :has() 可以通過檢查父元素是否包含特定子元素或這些子元素是否處于特定狀態來改變樣式&#xff0c;也…

Python|OpenCV-繪制圖形和添加文字的方法(2)

前言 本文是該專欄的第2篇,后面將持續分享OpenCV計算機視覺的干貨知識,記得關注。 OpenCV作為一個強大的計算機視覺功能庫,除了能解決圖像處理和計算機視覺任務之外,它還有著非常豐富的圖像繪制功能。可以說,不論是在計算機視覺任務中標記目標領域,還是在圖像上繪制一些…

二刷LeetCode--155. 最小棧(C++版本),思維題

思路:本題需要使用兩個棧,一個就是正常棧,執行出入操作,另一個棧只負責將對應的最小值進行保存即可.每次入棧的時候,最小值棧的棧頂也需要入棧元素,不過這個元素是最小值,那么就需要進行比較,因此在getmin()的時候只需要將最小值棧的棧頂元素彈出即可.初始化的時候只需要將最小…