li导航栏点击不同的li变色以及li之间间距解决

mac2024-05-09  23

实现的效果是点击不同li背景色变化 同时其他的li背景色褪去

<li @click="changePage(1)" class="myLi"><router-link to="/home/" tag="li">首页</router-link></li><li @click="changePage(2)" class="myLi"><router-link to="/auth" tag="li">权限管理</router-link></li><li @click="changePage(3)" class="myLi"><router-link to="/careMe" tag="li">关注我们</router-link></li>

因为我这里是实现了跳转的不去管,li写入点击事件,可以给他分别传参,写同一个事件就好了(使用vue router的小伙伴如果像我这样写了一定要给li加上class,不然后面获取dom节点很烦)

changePage(i) { var cat = document.getElementsByClassName("myLi"); cat = Array.prototype.slice.call(cat); cat.forEach((item, index) => { if (index == i - 1) { console.log(item); item.classList.add("liBack") }else{ item.classList.remove("liBack") } }); }

然后先获取所有的li的dom节点,将类数组转化成数组,写入index条件与i对应,然后使用classList添加和移出css就可以了,这里的liBack就是背景色。 然后有些小伙伴会发现li之间是有空隙的,网上有很多方法,我是直接把li写一行了就没间隙了。 参考li间距文章

最新回复(0)