JS中如何制作面包屑导航

简介: JS中如何制作面包屑导航

制作面包屑,首先我肯要先知道什么是面包屑导航,其原理是什么。

面包屑导航这个概念来自于一个童话故事《汉赛尔和格莱特》,他们兄妹俩在穿过森林时不小心迷路了,但是却发现在沿途走过的地方都撒下面包屑,这些面包屑可以来帮助他们找到回家的路。

所以面包屑导航的用意就是告知用户所处的当前网页的位置,方便用户可以通过该导航快速返回上一页。

1.先写一个树形菜单的大概样式

当我们点击树形菜单时,导航栏会出现一个面包屑(说明在树形菜单的点击事件里,每点击一次都会渲染一个)

<div class="item">
          <div class="head">
            <div style="display: flex;">
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页</p>
              </li>
              <img style="width: 15px; height: 15px;" src="./img/箭头 下 down (1).png" alt="" />
            </div>
            <div>
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页2</p>
              </li>
            </div>
          </div>
          <div class="head">
            <div style="display: flex;">
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页</p>
              </li>
              <img style="width: 15px; height: 15px;" src="./img/箭头 下 down (1).png" alt="" />
            </div>
            <div>
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页2</p>
              </li>
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页3</p>
              </li>
            </div>
          </div>
          <div class="head">
            <div style="display: flex; ">
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页</p>
              </li>
              <img style="width: 15px; height: 15px;" src="./img/箭头 下 down (1).png" alt="" />
            </div>
            <div>
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页2</p>
              </li>
              <li class="img">
                <img src="./img/房子 (5).png" alt="" />
                <p>首页3</p>
              </li>
            </div>
          </div>
        </div>

2.大概写一个面包屑的结构

<!-- 面包屑 -->
        <div class="top_two">
          <div class="bread" onmouseover="breadder()" onmouseleave="breadders()">
            <div class="breads">
              <img id="home" src="./img/房子 (3).png" alt="" />
              <p id="shouye">首页</p>
              <div class="pop">
                <img id="pops" onmouseover="cheap()" onmouseleave="cheaps()" src="./img/叉号.png"
                  alt="" />
              </div>
            </div>
            <div class="bind"></div>
          </div>
          <img id="image" src="./img/应用中心.png" alt="" />
        </div>

我的树形菜单和面包屑的数据是同一个数据,点击树形菜单时会渲染一块面包屑,但是再次点击时不能重复渲染把,所以这就需要我们“去重”。对比面包屑数据里是否有相同的,有的话删掉,没有就渲染。

<script>
            // 给一个空数组(用途:将创建的对象尾部添加到空数组里)
      let boo = [];
      let aoo = [];
      // 点击渲染事件(传的是title和路径)
      // path是名字(name),name是title,puth是带/的路径
      function header(path, name, puth) {
        console.log(path);
        console.log(name);
        // let len = boo.length;
        console.log(boo.length);
        // 判断数组内查找名字的下标,当找负一时(也就是没有这个名字,就渲染上去)
        // 否则(有名字的时候)没有操作
        if (boo.indexOf(path) == -1) {
          let arr = "";
          // 渲染的面包屑块儿
          arr += `
              <div class="bread" onmouseover="one()" onmouseleave="two()">
                <div class="breads">
                  <img id="home" src="./img/房子 (4).png" alt="" />
                  <p id="shouye">${path}</p>
                  <div class="pop">
                    <img src="./img/叉号.png"alt="" />
                  </div>
                </div>
                <span class="bind"></span>
              </div>
              `;
          document.getElementsByClassName('top_two')[0].innerHTML += arr;
        }
        // for循环boo数组的长度
        for (let i = 0; i < boo.length; i++) {
          for (let j = 0; j < boo.length; j++) {
            // 判断当boo里找到有相同的名字时
            if (boo[i] == boo[j]) {
              // 就剪切掉一个
              boo.splice(j, 1);
              j--;
            }
          }
        }
        </script>

面包屑的作用

  • 便于用户了解当前页面的所处位置,以及当前页面在整个网站中的所处位置
  • 便于用户了解网站的层次结构,提高用户的体验
  • 降低跳出率,用户通过面包屑导航可以看到自己感兴趣的内容从而吸引用户留在网站中继续进行浏览,降低网站的跳出率
  • 有利于网站内链的建设,促进优化排名

以上呢是一个大概的,具体功能的实现不仅仅只是这一点,我写的不全面,请自己思考把。

目录
相关文章
|
9月前
|
JavaScript 前端开发 Python
分享77个JS菜单导航,总有一款适合您
分享77个JS菜单导航,总有一款适合您
61 0
|
9月前
|
JavaScript iOS开发 Python
分享114个JS菜单导航,总有一款适合您
分享114个JS菜单导航,总有一款适合您
87 0
|
9月前
|
移动开发 JavaScript 前端开发
分享113个JS菜单导航,总有一款适合您
分享113个JS菜单导航,总有一款适合您
94 0
|
JSON 前端开发 Java
Mock.js之Element-ui搭建首页导航与左侧菜单
Mock.js之Element-ui搭建首页导航与左侧菜单
97 0
|
JavaScript 开发者 容器
Vue Router:构建交互性Vue.js应用的导航之道
在Vue.js应用程序开发中,导航是一个关键概念,它允许用户在不同视图之间进行无缝切换和交互。而Vue Router是Vue.js官方提供的路由管理库,为开发者提供了强大的工具来管理应用程序的导航和路由。在本博客中,我们将深入研究Vue Router的概念、核心功能、工作原理,以及如何使用Vue Router来构建具有高度交互性的Vue.js应用。
129 0
|
6月前
|
JavaScript
js之面包屑
js之面包屑
44 1
|
9月前
|
移动开发 JavaScript 前端开发
分享111个JS菜单导航,总有一款适合您
分享111个JS菜单导航,总有一款适合您
184 0
|
8月前
|
JavaScript 前端开发 程序员
探索Vue.js宝库:解锁基础知识与实用技能之门(1. 数据绑定与响应式 2. 条件与循环 3. 组件化开发;1. 路由管理与导航 2. 状态管理与Vuex 3. Vue.js的生命周期)
探索Vue.js宝库:解锁基础知识与实用技能之门(1. 数据绑定与响应式 2. 条件与循环 3. 组件化开发;1. 路由管理与导航 2. 状态管理与Vuex 3. Vue.js的生命周期)
60 1
|
8月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的校园导航微信小程序附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的校园导航微信小程序附带文章和源代码部署视频讲解等
79 6
|
JSON 前端开发 JavaScript
Element UI搭建首页导航和左侧菜单以及Mock.js和(组件通信)总线的运用
Element UI搭建首页导航和左侧菜单以及Mock.js和(组件通信)总线的运用
123 0

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    Node.js 中实现多任务下载的并发控制策略
    32
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    25
  • 4
    【JavaScript】深入理解 let、var 和 const
    48
  • 5
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    44
  • 6
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    52
  • 7
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    55
  • 8
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    71
  • 9
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55
  • 10
    JavaWeb JavaScript ③ JS的流程控制和函数
    62