js 简单的页面导航

news2024/9/22 17:38:26

实现效果:

 实现原理:

实现原理是通过创建数组里面包含对应页面的信息,当点击的时候为数组传递一个对象,里面包含要显示的信息。

跳转链接实现原理:

通过创建一个数组,里面包含所有可以跳转的页面链接名称,为所有的菜单绑定对应跳转的class名点击判断链接数组存在的话,就进行跳转。

html部分:


    <!-- 框架 -->
    <div class="nav">
    <!-- 左 -->
    <div class="left">
        <!-- loge -->
        <div class="loge">
            <div>
                <img src="img/ia_100000000.png" alt="">
                <p>企业家联合会</p>
            </div>
        </div>
        <!-- 菜单部分 -->
        <div class="menus">
            <div class="menus_list">
                <div class="title">
                    <!-- 一级菜单 -->
                    <div class="title_centent" style="background-color: #409eff;">
                        <img src="img/touxiang.png" alt="">
                        <span>首页</span>
                    </div>
                    <div class="title_select">
                        <p>></p>
                    </div>
                </div>
                <!-- 二级菜单 -->
                <div class="menus_children">
                    <div>
                        <img src="img/touxiang.png" alt="">
                        <span>首页</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- 右 -->
    <div class="right">
         <div class="right_a"> 
            <div class="right_a_left">
                <div>
                    <img src="./img/展开(黑).png" alt="">
                </div>
                <div>
                    <img src="./img/首页(黑).png" alt="">
                    <p>首页</p>
                </div>
            </div>
            <div class="right_a_right">
                <div></div>
                <div class="full_screen"><img src="./img/全屏.png" alt=""></div>
                <div><img src="./img/刷新.png" alt="" onclick="refresh()"></div>
                <div><img src="./img/ia_100000001.gif" alt=""></div>
            </div>
        </div>

        <hr></hr>
        <div class="right_b">
            <div style="display: flex;" class="right_kk">
                
            </div>
         </div>
 
 
         <div class="right_c">
             <iframe src="index.html" frameborder="0"></iframe>
         </div>
     </div>
    </div>
  </div>

js部分:

let link = ['account', 'agree', 'index', 'industry','goods'];
render()
function render() {
    let str = '';
    if (log_in != '') {
        for (let i = 0; i < log_in.roles.length; i++) {
            if (log_in.roles[i].children == '') {
                let kkk = {
                    title: log_in.roles[i].meta.title,
                    link: log_in.roles[i].name
                }
                str += `
                <div class="menus_list" onclick = fn(${JSON.stringify(kkk)}) id="${log_in.roles[i].name}">
                <div class="title">
                    <!-- 一级菜单 -->
                    <div class="title_centent">
                        <img src="${img[i]}" alt="">
                        <span>${log_in.roles[i].meta.title}</span>
                    </div>
                    <div class="title_select">
                    </div>
                </div>
            </div>
            <div class="menus_children">
                       
            </div>
                  `
            } else {
                str += `
                <div class="menus_list">
                <div class="title">
                    <!-- 一级菜单 -->
                    <div class="title_centent">
                        <img src="${img[i]}" alt="">
                        <span>${log_in.roles[i].meta.title}</span>
                    </div>
                    <div class="title_select">
                    </div>
                </div>
            </div>
            <div class="menus_children">
                       
            </div>
                  `
            }

        }
    }
    $('.menus').html(str);
}

// 二级列表渲染
Secondary_list()
function Secondary_list() {
    let subset = '';
    let arrows = '';
    for (let i = 0; i < log_in.roles.length; i++) {
        if (log_in.roles[i].children != '') {
            arrows = ' <p>></p>'
            for (let k = 0; k < log_in.roles[i].children.length; k++) {
                let kkk = {
                    title: log_in.roles[i].children[k].meta.title,
                    link: log_in.roles[i].children[k].name
                }

                subset += `<div onclick=fn(${JSON.stringify(kkk)}) id="${log_in.roles[i].children[k].name}" class="link_a">
                        <img src="${imgs[i][k]}" alt="">
                        <span>${log_in.roles[i].children[k].meta.title}</span>
                    </div>`
            }
            $('.menus_children').eq(i).html(subset);
            $('.title_select').eq(i).html(arrows);
            subset = '';
        }

    }
    $('.menus_list').eq(0).css('background-color', '#409eff');
}

// 菜单列表展开隐藏
$('.menus_list').on('click', function () {
    let num = $('.menus_list').index(this);
    $('.menus_children').eq(num).toggle();
    console.log($('.title_select p').eq(num));
})

//本地存储一个首页的默认值
sessionStorage.setItem('名称', 'index');

// 面包屑渲染数组
let arr = [
    {
        title: '首页',
        link: 'index'
    }
];
// 点击函数
function fn(k) {
    sessionStorage.setItem('名称', k.link);
    $('.menus_list').eq(0).css('background-color', '');
    for (let i = 0; i < link.length; i++) {
        if (link[i] == k.link) {
            $('.right_c iframe').attr('src', k.link + '.html')
        }
    }
    if (arr == '' || arr == null) {
        if (k.title != '首页') {
            arr.push(k);
            xuanran()
        }

    } else {
        // 判断数组中是否存在此对象
        if (!arr.some(item => item.title === k.title)) {
            // 将对象添加到数组中
            if (k.title != '首页') {
                arr.push(k);
            }
        }
        xuanran()
    }
}

// 面包屑渲染
xuanran()
function xuanran() {
    let pitch_on = sessionStorage.getItem('名称');
    let str = '';
    let a = $('.right_c iframe').attr('src').split('.')[0];
    for (let i = 0; i < arr.length; i++) {
        if (arr[i].title != '首页') {
            if (arr.length > 0) {
                if (arr[i].link == pitch_on) {
                    str += `
                <div class="${a == pitch_on ? 'right_kk_a' : ''}">
                <p onclick = redirect(${JSON.stringify(arr[i])})>${arr[i].title}</p>
                <span onclick = close_a(${JSON.stringify(arr[i])},${i})>x</span>
               </div>
                `
                } else {
                    str += `
                <div>
                <p onclick = redirect(${JSON.stringify(arr[i])})>${arr[i].title}</p>
                <span onclick = close_a(${JSON.stringify(arr[i])},${i})  class="shanchu">x</span>
               </div>
                `
                }
            }
        } else {
            str += `
            <div style="background-color: ${pitch_on == $('.menus_list').eq(0).attr('id') ? ' rgba(236, 245, 255)' : ''}; color:${pitch_on == $('.menus_list').eq(0).attr('id') ? 'rgba(80, 166, 255);' : ''};border-bottom:${pitch_on == $('.menus_list').eq(0).attr('id') ? ' 1.5px solid blue;' : ''}">
            <p onclick = redirect(${JSON.stringify(arr[i])})>${arr[i].title}</p>
           </div>
            `
        }
    }
    // 左侧栏渲染
    for (let i = 0; i < $('.link_a').length; i++) {
        if ($('.link_a').eq(i).attr('id')) {
            if ($('.link_a').eq(i).attr('id') == pitch_on) {
                $('.menus_list').css('background-color', '');
                $('.link_a').css('background-color', '');
                $('.link_a').eq(i).css('background-color', '#409eff');
            }
        }
    }
    for (let i = 0; i < $('.menus_list').length; i++) {
        if ($('.menus_list').eq(i).attr('id')) {
            if ($('.menus_list').eq(i).attr('id') == pitch_on) {
                $('.menus_list').css('background-color', '');
                $('.link_a').css('background-color', '');
                $('.menus_list').eq(i).css('background-color', '#409eff');
            }
        }
    }
    $('.right_kk').html(str)
}
// 跳转链接
function redirect(a) {
    // // 添加id使对应点击的标签颜色改变
    // console.log($('.menus_list .title_centent span').html());
    sessionStorage.setItem('名称', a.link);
    for (let i = 0; i < link.length; i++) {
        if (link[i] == a.link) {
            $('.right_c iframe').attr('src', a.link + '.html')
        }
    }
    xuanran()
}

// 删除功能
function close_a(a, i) {
    let pitch_on = sessionStorage.getItem('名称');

    if (arr != '') {
        if (arr[i].link == pitch_on) {
            console.log(arr[i].link);
            arr.splice(i, 1);
            if (arr.length > 0) {
                sessionStorage.setItem('名称', arr[arr.length - 1].link);
                $('.right_c iframe').attr('src', arr[arr.length - 1].link + '.html');
            } else {
                sessionStorage.setItem('名称', 'index');
                $('.right_c iframe').attr('src', 'index.html');
            }
            xuanran()
        } else {
            arr.splice(i, 1);
            xuanran()
        }
    }
}

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

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

相关文章

【3Ds Max】可编辑多边形“边界”层级的简单使用

目录 示例 &#xff08;1&#xff09;挤出 &#xff08;2&#xff09;插入顶点 &#xff08;3&#xff09;切角 &#xff08;4&#xff09;利用所选内容创建图形 &#xff08;5&#xff09;封口 &#xff08;6&#xff09;桥 示例 这里我们首先创建一个长方体&#xff…

3D角色展示

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>3D卡片悬停</title><style>font-face {font-family: "Exoct";src: url("htt…

解决群晖视频信息插件无法同步的问题

今天发现群晖下载的电影和电视剧没办法显示图片和相关信息&#xff0c;开始以为是升级了什么东西导致的&#xff0c;后来发现api.themoviedb.org 这个API接口ping都没法ping通&#xff0c;估计被墙了。好吧&#xff0c;重新登陆群晖修改hosts文件吧。下面一步一步来讲讲如何修改…

Adobe联创去世,没他就没有PDF,乔布斯也因他逆风翻盘

量子位 | 公众号 QbitAI Adobe联合创始人John Warnock去世了&#xff0c;享年82岁。 他是PDF格式的发明人之一&#xff0c;贡献了PDF中的核心技术PostScript—— 如果没有它&#xff0c;打印机就无法打印复杂页面。可以说&#xff0c;Warnock的这项发明&#xff0c;在上世纪…

【C++】STL——set的介绍和使用、set的构造函数、set的迭代器、set的容量和增删查改函数

文章目录 1.set的介绍2.set的使用2.1set的构造函数2.2set的迭代器2.3set的容量函数2.4set的增删查改函数 1.set的介绍 set的介绍 &#xff08;1&#xff09;set是按照一定次序存储元素的容器。 &#xff08;2&#xff09;在set中&#xff0c;元素的value也标识它(value就是key…

LTDC之外部SDRAM

1.配置外部SDRAM&#xff08;嵌入式基础知识&#xff0c;此处不做分析&#xff09; 2.编写SDRAM配置代码&#xff08;copy正点原子例程&#xff09; sdram.c#include "sdram.h" #include "fmc.h"uint8_t SDRAM_Send_Cmd(uint8_t bankx,uint8_t cmd,uint8_…

区块链与算力网络:创造未来网络的安全与共享

在数字革命的浪潮下&#xff0c;网络技术正焕发着前所未有的活力&#xff0c;而算力网络以其独特的区块链技术应用&#xff0c;为网络的安全性和资源共享带来了新的可能性。本文将带您深入探索算力网络中区块链技术的神奇应用&#xff0c;为您呈现这个充满活力和创新的网络未来…

全方位介绍SRM系统供应商采购管理

SRM系统是一种用于管理与供应商合作关系的解决方案。本文将全面介绍SRM系统供应商采购管理的概念、重要性、功能模块以及应用优势&#xff0c;以帮助企业了解如何通过SRM系统提升采购管理效率和供应链合作关系。 一、SRM系统供应商采购管理概述 1.1 什么是SRM系统供应商采购管…

19 真实的战场:如何在大型项目中涉及GUI自动化测试策略

大型全球化电商网站 GUI 测试的策略设计 组件 -> 模块 -> 端到端 1&#xff09; 首先&#xff0c;要从前端组件的级别来保证质量&#xff0c;也就是需要对那些自定义开发的组件进行完整全面的测试。通常前端组件会基于 Jest 做比较严格的单元测试。 Jest 是由 Facebook 发…

内网渗透神器CobaltStrike之Profile文件编写(十)

简介 在网络渗透测试和红队模拟攻击中&#xff0c;隐藏命令与控制&#xff08;C2&#xff09;流量的特征对于成功绕过入侵检测系统至关重要。Cobalt Strike提供了一个强大的工具——Malleable C2 profiles&#xff0c;用于自定义C2流量&#xff0c;从而使其看起来像正常的网络…

docker搭建opengrok环境2

引言&#xff1a; 虚拟机关闭后重新开启&#xff0c;理论上是需要重新启动一下docker的&#xff0c;以重新启动其中的服务。 命令基础&#xff1a; docker images&#xff1a;查看docker中现有的镜像 docker container ls -all&#xff1a;查看docker中目前在运行的containe…

Centos7 交叉编译QT5.9.9源码 AArch64架构

环境准备 centos7 镜像 下载地址&#xff1a;http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ aarch64交叉编译链 下载地址&#xff1a;https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/ QT5.9.9源代码 下载地址&#xff1…

现货白银投资什么的?

也许很多投资者听说过现货白银&#xff0c;但并不知道它投资的是什么&#xff0c;过程中是如何进行买卖的&#xff0c;也不知道如果参与其中&#xff0c;自己需要承担什么风险&#xff0c;最终的收益会如何。对于上述的这些问题本文&#xff0c;将为大家简单地介绍一下。 虽然现…

Linux文件类型

注意&#xff1a; 硬链接&#xff0c;与软链接相似&#xff0c;但不是特殊的文件类型。 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引&#xff08;也称为inode&#xff09;。当 移动或者删除原始文件时&#xff0c;硬链接不 会被破坏&#xff0c;因为它…

基于JJWT理解JWT,JWS,JWE

JWT &#xff0c; 全写JSON Web Token, 是开放的行业标准RFC7591&#xff0c;用来实现端到端安全验证. 从开发者理解的角度来说&#xff1a; JWT 是一个定义传递信息的标准JWT 的Token是一个Base64编码的字符串&#xff0c; 类似 eyJhbGciOiJIUzI1NyJ9.eyJzdWIiOiJvc2NhciJ9.…

Vue下载及配置(Vue文件和路由文件)

目录 Vue文件2.7.14版本&#xff1a; Vue路由&#xff1a; 结束&#xff1a; Vue文件2.7.14版本&#xff1a; Vue 不支持 IE8 及以下版本&#xff0c;因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容ECMAScript5的浏览器 Vue文件下载地址&#xff1a;安…

openLayers实战(九):正多边形的绘制

最近在绘制各种图形&#xff0c;越来越乱&#xff0c;看了很多文章&#xff0c;启发了从最最基础的图形开始学习扩展。 遇到什么样的问题&#xff1f; import ol from "ol"; import { Draw } from "ol/interaction"; import { Vector as VectorSource } f…

帆软报表开发-快速入门

帆软学习&#xff1a;帆软学院-培养企业亟需的数据人才 第一章 初识FineReport 1、初识FineReport 1.1、FineReport 是什么&#xff1f; FineReport 是一款简单、高效、智能的报表工具&#xff0c;用以快速搭建的企业级Web报表平台。 FineReport 报表主要功能介绍 ① 主要…

Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO

前言 Livox mid360需要使用Livox-SDK2&#xff0c;而非Livox-SDK&#xff0c;以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部分代码。 1. 安装Livox-SDK2 参考官方教程。 1.1. 安装CMake sudo apt install cmake1.2. 安装编译Livox-SDK2 git clone https://github…

BDA初级分析——可视化图形

一、时间趋势 时间趋势要如何呈现&#xff1f; Excel函数补充 YEAR&#xff1a;提取日期中的年份MONTH&#xff1a;提取日期中的月份DAY&#xff1a;提取日期中的天HOUR&#xff1a;提取时间中的小时 TEXT&#xff1a;将数值转换为按指定数字格式表示的函数 写法&#xff1…