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 星