当前位置: 首页 > news >正文

vue中点击导航栏,动态改变样式,经典写法

vue中点击导航栏,动态改变样式,经典写法

在vue中,我们通常会有这样的情况,在多个子模块之间,点击其中一个子模块,修改当前点击的子模块的样式。如图,点击B模块时,模块B样式改变,其它样式还原啦:
在这里插入图片描述
在这里插入图片描述
具体怎么实现呢,主要是使用动态属性绑定来实现的,其中也涉及 静态属性和动态属性结合使用。未选中模块的样式我们看做是静态属性,动态属性是在点击后加进来的(覆盖)的样式属性

动态属性绑定

我们先了解下动态属性绑定:动态属性绑定就是用变量动态的添加属性,如下:

<div id="app"><div :class="{ 'active': isActive }"></div>
</div>
<script>
new Vue({el: '#app',data: {isActive: true}
})
</script>
<style>
.active {width: 100px;height: 100px;background: green;
}
</style>

这里的 .active样式是否生效,取决于 isActive这个变量值是否为true

静态样式和动态样式结合使用

我们要实现想要的效果,还需要结合静态样式,因为静态样式用来渲染其它未激活状态的子模块,动态样式用来渲染激活状态的子模块
写法如下,需要把绑定的class属性改成中括号形式,因为中括号形式表示样式数组,存放多个样式:

:class="['itemclass' ,  indexItem== index ? 'active' :'']"

第一个样式为 itemclass,第二个样式要看 indexItem== index 这个表达式是否成立,如果成立,则加入 active样式,表示激活状态,
如果不成立,则不加任何样式,表示非激活状态。
这样描述应该很容易理解哈。

完整代码

于是我们可以写出完整的代码, 其中,我用indexItem 表示(标识)当前是哪一项是选中激活状态,index是当前选项的数组下标。
indexItem == index 就是当前这个模块,是否等于激活状态下的模块,如果是,添加active属性,修改背景色。
其中,点击事件changeItem用来设置当前点击的模块激活状态的模块

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>Vue动态样式绑定</title><script src="https://cdn.staticfile.net/vue/2.2.2/vue.min.js"></script></head><body><div id="app" class="line"><divclass="static"@click="changeItem(index)"v-bind:class="['itemclass', index==indexItem ? 'active':'']"v-for="(item, index) in items">{{item.name}}</div></div><script>new Vue({el: "#app",data: {indexItem: 0,items: [{ name: "A" }, { name: "B" }, { name: "C" }],},methods: {changeItem(index) {this.indexItem = index;},},});</script><style>.itemclass {margin: 40px;width: 100px;height: 100px;text-align: center;font-size: 40px;background: rgb(191, 212, 222);}.active {background: rgb(37, 209, 198);}.line {width: 600px;height: 100px;display: flex;justify-content: center;align-items: center;flex-direction: row;}</style></body>
</html>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux网络:基于OS的网络架构
  • 【Kubernetes】k8s集群图形化管理工具之rancher
  • SourceTree远端!无法获取代码
  • 6. 数据结构—串的匹配算法
  • SpringBoot教程(二十二) | SpringBoot实现分布式定时任务之elastic-job
  • PMP到底有什么用?
  • C++的模板简介
  • JVM 类加载机制
  • Git的使用-初级
  • OJ-0819
  • C连接MySQL常用API
  • 【数据结构初阶】二叉树--基本概念
  • “解决Windows电脑无法投影到其他屏幕的问题:尝试更新驱动程序或更换视频卡“
  • Java--多线程(上)
  • 【OCPP】ocpp1.6协议第5.12章节Remote Stop Transaction的介绍及翻译
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 78. Subsets
  • docker容器内的网络抓包
  • echarts花样作死的坑
  • Fabric架构演变之路
  • IDEA常用插件整理
  • Java-详解HashMap
  • java中的hashCode
  • linux安装openssl、swoole等扩展的具体步骤
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Protobuf3语言指南
  • Selenium实战教程系列(二)---元素定位
  • 笨办法学C 练习34:动态数组
  • 翻译:Hystrix - How To Use
  • 分享一份非常强势的Android面试题
  • 官方解决所有 npm 全局安装权限问题
  • 简析gRPC client 连接管理
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 回归生活:清理微信公众号
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • # 计算机视觉入门
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 数仓建模:如何构建主题宽表模型?
  • #pragma multi_compile #pragma shader_feature
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Java数据结构)ArrayList
  • (k8s中)docker netty OOM问题记录
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (补充)IDEA项目结构
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (三)docker:Dockerfile构建容器运行jar包
  • (原創) 未来三学期想要修的课 (日記)
  • (转)ABI是什么
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)树状数组