vue通过router.push跳转 怎么添加Class来改变点击选中的效果
顶部一个nav导航组件,点击一次跳转页面,然后nav上的被点击项添加类名。例如从某一页面点击E,跳转到E页面同时添加类名。nav中的每个item是v-for出来的
正在回答
同学你好, 根据你的代码, 可以结合老师前两次给你的思路修改
1、在navbar组件中, 通过在点击事件传入对应的index值

2、在changePage_Color中, 通过传入的index值, 判断需要跳转到那个页面, 通过query属性传递参数给父组件

3、在父组件中通过this.$route.query获取传递的参数, 然后在通知子组件当前显示的哪一个页面

4、 子组件中通过props接收父组件传递的消息,修改current值, 让当前选项卡添加类名focus,字体变红色

最后实现如下所示


同学可以结合示例代码修改一下自己代码,要灵活运用所学知识, 在编写代码的过程中需要仔细一点哦
如果帮助到了你, 欢迎采纳~~~
祝学习愉快~~~
<template>
<div>
<ul>
<li
v-for="(item, index) in list"
:key="index"
:value="index"
:class="{focus: index === current}"
@click="changePage_Color"
>{{item}}</li>
</ul>
</div>
</template>
<script>
export default {
name: 'NavBar',
data () {
return {
list: ['A', 'B', 'C', 'D', 'E', 'F'],
current: ''
}
},
mothods: {
changePage (e) {
this.color(e)
this.page(e)
},
color (e) {
this.current = e.target.value
},
page (e) {
if (e.target.innerText === 'A') {
this.$router.push('/a')
}
if (e.target.innerText === 'B') {
this.$router.push('/b')
}
}
}
}
</script>
<style scoped>
ul {
width: 500px;
border: 1px solid red;
padding: 5px;
display: flex;
justify-content: space-between;
}
li {
margin: 5px;
border: 1px solid #000;
font-size: 30px;
cursor: pointer;
}
.focus {
color: red;
}
</style><template>
<div>
<nav-bar/>
<div class="content">A页面</div>
</div>
</template>
<script>
import NavBar from './navbar'
export default {
name: 'APage',
components: {
NavBar
}
}
</script><template>
<div>
<nav-bar/>
<div class="content">B页面</div>
</div>
</template>
<script>
import NavBar from './navbar'
export default {
name: 'BPage',
components: {
NavBar
}
}
</script>同学你好, 请问你这里是想实现类似tab切换的效果吗? 如果是这样的话, 老师这里给你提供一个简单的思路
1、 通过动态的设置class值,判断index与isActive值是否相等,为选项卡添加active类名。
2、定义一个变量isActive,默认是0,第一个选项卡添加类名active
3、 在nav上绑定点击事件,将index值传入,在点击的时候修改isActive的值,让被点击的选项卡拥有active这个类名, 示例:

同学可以自己下去测试一下哦
如果同学不是指这里, 建议: 可以详细的描述一下指的是哪里, 再次提问, 我们会继续为你解答的
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
- 参与学习 人
- 提交作业 209 份
- 解答问题 3299 个
本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星