制作面包屑,首先我肯要先知道什么是面包屑导航,其原理是什么。
面包屑导航这个概念来自于一个童话故事《汉赛尔和格莱特》,他们兄妹俩在穿过森林时不小心迷路了,但是却发现在沿途走过的地方都撒下面包屑,这些面包屑可以来帮助他们找到回家的路。
?所以面包屑导航的用意就是告知用户所处的当前网页的位置,方便用户可以通过该导航快速返回上一页。
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>
以上呢是一个大概的,具体功能的实现不仅仅只是这一点,我写的不全面,请自己思考把。