iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >react实现导航栏二级联动
  • 116
分享到

react实现导航栏二级联动

2024-04-02 19:04:59 116人浏览 泡泡鱼
摘要

本文实例为大家分享了React实现导航栏二级联动的具体代码,供大家参考,具体内容如下 效果图 js代码 import { Component } from "react"; imp

本文实例为大家分享了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;
                }
            }
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: react实现导航栏二级联动

本文链接: https://www.lsjlt.com/news/141677.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • react实现导航栏二级联动
    本文实例为大家分享了react实现导航栏二级联动的具体代码,供大家参考,具体内容如下 效果图 js代码 import { Component } from "react"; imp...
    99+
    2022-11-13
  • react如何实现导航栏二级联动
    这篇文章给大家分享的是有关react如何实现导航栏二级联动的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下效果图js代码import { Component } ...
    99+
    2023-06-29
  • Angular实现二级导航栏
    本文实例为大家分享了Angular实现二级导航栏的具体代码,供大家参考,具体内容如下 1、将菜单放入数据库: 模拟放到该路径下:src/assets/json/header.json...
    99+
    2022-11-13
  • react如何实现侧边栏联动头部导航栏效果
    目录实现思路路由表侧边栏渲染容器组件(侧边栏)store头部导航栏容器组件UI组件总结项目中使用react+antd design+redux+react-reouter-dom 实...
    99+
    2023-03-12
    react侧边栏 react侧边栏联动 react头部导航栏效果
  • react怎么实现侧边栏联动头部导航栏效果
    本文小编为大家详细介绍“react怎么实现侧边栏联动头部导航栏效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“react怎么实现侧边栏联动头部导航栏效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目中使用...
    99+
    2023-07-05
  • Angular如何实现二级导航栏
    这篇文章主要介绍了Angular如何实现二级导航栏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下将菜单放入数据库:模拟放到该路径下:src/assets/json...
    99+
    2023-06-29
  • React实现二级联动(左右联动)
    本文实例为大家分享了React实现二级联动的具体代码,供大家参考,具体内容如下 js代码 import { Component } from 'react' import './...
    99+
    2022-11-12
  • element怎么实现二级菜单和顶部导航联动
    这篇文章主要介绍“element怎么实现二级菜单和顶部导航联动”,在日常操作中,相信很多人在element怎么实现二级菜单和顶部导航联动问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”element怎么实现二级...
    99+
    2023-06-29
  • React实现二级联动的方法
    本文实例为大家分享了React实现二级联动的具体代码,供大家参考,具体内容如下 实现效果: 普通h5页,图片我进行了裁剪,把用户那部分删掉了,不过也不影响说明 大体思路就是把数据接口...
    99+
    2022-11-12
  • React+ts实现二级联动效果
    本文实例为大家分享了React+ts实现二级联动效果的具体代码,供大家参考,具体内容如下 .tsx文件 import { Component, createRef} from 're...
    99+
    2022-11-12
  • dedecms实现二级栏目导航的仿制方法
    本文实例讲述了dedecms实现二级栏目导航的仿制方法。分享给大家供大家参考。 具体实现代码如下: 复制代码代码如下:{dede:channelartlist row='2' typeid='1,2' } <h3...
    99+
    2022-06-12
    dedecms 二级栏目 导航 仿制 方法
  • vue实现选项卡和侧导航栏联动
    随着移动设备和Web应用程序的普及,越来越多的应用程序需要使用选项卡和侧导航栏来帮助用户导航和浏览。Vue框架的出现,极大地简化了开发这样的应用程序的过程,并且使得实现选项卡和侧导航栏联动变得非常方便。在这篇文章中,我们将会看到如何在Vue...
    99+
    2023-05-24
  • element实现二级菜单和顶部导航联动的示例
    目前 原本数据结构 const users = [{ id: 1, username: 'normal', password: 'normal', token: '...
    99+
    2022-11-13
  • 纯CSS如何实现多级导航联动
    这篇文章主要介绍“纯CSS如何实现多级导航联动”,在日常操作中,相信很多人在纯CSS如何实现多级导航联动问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”纯CSS如何实现多级导航...
    99+
    2022-10-19
  • React实现二级联动效果(楼梯效果)
    本文实例为大家分享了React实现二级联动效果的具体代码,供大家参考,具体内容如下 模仿饿了么实现一个二级联动的效果; import "../css/Leftrightlinka...
    99+
    2022-11-12
  • 微信小程序实现侧边栏二级联动
    本文实例为大家分享了微信小程序实现侧边栏二级联动的具体代码,供大家参考,具体内容如下 实现效果如下 实现步骤 样式布局(.wxml文件) <scroll-view scrol...
    99+
    2022-11-13
  • css怎么实现动态导航栏
    本篇内容介绍了“css怎么实现动态导航栏 ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方案:使用chec...
    99+
    2022-10-19
  • react+zarm实现底部导航栏的示例代码
    目录需要实现的效果实现过程1.使用 prop-types 库进行类型检查2.使用 useNavigate3.编写标签栏组件4.使用标签栏组件5.添加对应的页面路由6.效果参考资料需要...
    99+
    2022-11-13
  • js如何实现二级导航功能
    小编给大家分享一下js如何实现二级导航功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图:代码如下:<!DOCTYP...
    99+
    2022-10-19
  • dedecms首页导航菜单二级栏目调用标签实例
    本文实例讲述了dedecms首页导航菜单二级栏目调用标签的用法。分享给大家供大家参考。具体如下: 第一种方法:复制代码代码如下:{dede:channelartlist typeid='top' row='8'} {...
    99+
    2022-06-12
    dedecms 首页 导航菜单 二级栏目 调用 标签
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作