<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了react實現導航欄二級聯動的具體程式碼,供大家參考,具體內容如下
效果圖
js程式碼
import { Component } from "react"; import './scroll.less' class Scroll extends Component { constructor(...args) { super(...args) this.state = { list: [ { id: 1, title: '列表1' }, { id: 2, title: '列表2' }, { id: 3, title: '列表3' }, { id: 4, title: '列表4' }, { id: 5, title: '列表5' }, { id: 6, title: '列表6' }, { id: 7, title: '列表7' }, { id: 8, title: '列表8' }, { id: 9, title: '列表9' }, { id: 10, title: '列表10' }, { id: 11, title: '列表11' }, { id: 12, title: '列表12' }, { id: 13, title: '列表13' }, { id: 14, title: '列表14' }, { id: 15, title: '列表15' }, { id: 16, title: '列表16' }, { id: 17, title: '列表17' }, ], LeftList: [ { id: 1, title: '列表1', height: 800 }, { id: 2, title: '列表2', height: 600 }, { id: 3, title: '列表3', height: 500 }, { id: 4, title: '列表4', height: 900 }, { id: 5, title: '列表5', height: 450 }, { id: 6, title: '列表6', height: 300 }, { id: 7, title: '列表7', height: 900 }, { id: 8, title: '列表8', height: 1010 }, { id: 9, title: '列表9', height: 300 }, { id: 10, title: '列表10', height: 600 }, { id: 11, title: '列表11', height: 400 }, { id: 12, title: '列表12', height: 760 }, { id: 13, title: '列表13', height: 580 }, { id: 14, title: '列表14', height: 630 }, { id: 15, title: '列表15', height: 540 }, { id: 16, title: '列表16', height: 983 }, { id: 17, title: '列表17', height: 610 }, ], curr: 0,//儲存下標 } // 預設新增一個 因為第一個的scrollTop值是0 this.LeftHeight = [0] // 捲動的開關 this.Swich = true } // 渲染完成獲取每一個列表距離頂部的距離 componentDidMount() { // 定義為0 每次就可以迴圈加起來就是盒子距離頂部的距離 this.Height = 0 // 迴圈獲取每一個的高 for (var i = 0; i < this.state.LeftList.length - 1; i++) { this.Height += this.state.LeftList[i].height // 將它新增到陣列中 this.LeftHeight.push(this.Height) } } // 點選左側列表 點選獲取下標 fnTab(Ind) { // 點選的時候讓右邊的捲動事件為false this.Swich = false // 儲存下標 this.setState({ curr: Ind }) // 根據下標取出陣列中對應下標的scrollTop值 就讓右邊的scrollTop為陣列中取出的值 this.refs['rightItem'].scrollTop = this.LeftHeight[Ind]; // this.refs.scrollLeft.scrollTop = this.state.curr - 4 * 58.89 } FnScroll() { // 監聽捲動 this.scrollTop = this.refs['rightItem'].scrollTop // 這邊用開關判斷是否執行 if (this.Swich) { // 存放下標 let num = 0 // 迴圈取出陣列中的數值 for (var i = 0; i < this.LeftHeight.length - 1; i++) { if (this.scrollTop >= this.LeftHeight[i]) { num = i } } // 儲存下標 this.setState({ curr: num }) } // 判斷捲動的值和陣列中的值相等 開關為true if (this.scrollTop == this.LeftHeight[this.state.curr]) { setTimeout(() => { this.Swich = true; }); } } render() { return ( <div className='box'> <div className='scroll'> <div className='scroll-right' ref='scrollLeft'> {this.state.list.map((item, index) => <div className='right-item' className={this.state.curr === index ? "active" : "right-item"} key={item.id} onClick={this.fnTab.bind(this, index)} >{item.title}</div>)} </div> <div className='scroll-left' ref='rightItem' onScroll={this.FnScroll.bind(this)}> {this.state.LeftList.map((item) => <div className='left-item' key={item.id} style={{ height: item.height }}><div className='item-title'>{item.title}</div></div>)} </div> </div> </div> ) } } export default Scroll
less程式碼
* { margin: 0; padding: 0; } .box { width: 100vw; height: 100vh; background: red; .scroll { width: 100vw; height: 100vh; display: flex; // 右邊列表 .scroll-right { width: 25vw; background: aqua; font-size: 28px; height: 100vh; overflow-y: auto; .right-item { width: 25vw; height: 80px; text-align: center; line-height: 80px; border-bottom: 1px solid #ccc; } .active { height: 80px; text-align: center; line-height: 80px; background: #0f0; } } // 左邊內容 .scroll-left { width: 75vw; height: 100vh; overflow-y: auto; //捲動的更加絲滑 scroll-behavior: smooth; .left-item { width: 75vw; font-size: 30px; text-align: center; .item-title { height: 30px; background: #ccc; } } } } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45