vue元素根据不同条件切换多个class

news/2024/7/10 2:42:27 标签: vue

做需求遇到一个样式问题,横向的菜单tab在非管理员模式下有7个,在管理员模式下有8个,每个tab在中英文状态下的长度又有长有短,用弹性布局搞了好久总是不如意,最后决定用%写死每个tab的width,记录踩坑如下:

1、最开始给每个元素的style绑定一个变量,切换语言时判断各种条件,更改变量值,不为所动= =失败

2、以为是style的问题,换成class绑变量值,同样改动不生效= =失败

3、查阅资料发现官方这样推荐:

v-bind:class="{ active: isActive, 'text-danger': hasError }"

其中active和text-danger是想动态绑定的两个类名,isActive和hasError是控制其:前边类名是否显示的动态变量

但是这种isActivehasError只能取true或者false两种值,也就是说这个class的样式要么生效要么不生效,但是我一个class至少有4种样式。。(逐渐暴躁)

4、又是一顿翻资料,发现了这个:(绑定一个返回对象的计算属性:Vue.js 将绑定表达式限制为一个表达式。如果需要多于一个表达式的逻辑,应当使用计算属性。)

<div v-bind:class="classObject"></div>

data: {

    isActive: true, error: null

},

computed: {

    classObject: function () {

          return { active: this.isActive && !this.error, 'text-danger': this.error && this.error.type === 'fatal' }

   }

}

套用一下:

这里是8个标签

对应8个计算属性

以home为例,在4种条件下的width分别为13%,11%,10%,9%,于是定义4个对应的class:home1234

 

计算属性判断方法如下:

这样就大功告成了,由于计算属性会自动监听变量变化,也不需要在点击切换中英文的时候做什么处理了~~

 

好久没写博客了,最近发现什么小技巧就直接点个收藏,这个真的把我折磨到觉得不记一下都对不起我这大半天的时间。。。希望以此为契机继续开始写博客吧~~~在打工人的路上努力前行!


http://www.niftyadmin.cn/n/1846052.html

相关文章

matlab显示.mat格式多光谱图像

matlab显示.mat格式多光谱图像 一个简单的MATLAB代码示例&#xff0c;用于加载包含多光谱图像数据的.mat文件并显示它&#xff1a; %加载.mat文件 load(your_file_name.mat);%查看多光谱图片 imshow(your_image_data, []);%可选&#xff1a;选择要显示的波段 selected_band …

将.mat格式的高光谱图像转换成png或jpg格式

将.mat格式的高光谱图像转换成png或jpg格式 使用MATLAB打开.mat文件&#xff0c;并读取高光谱图像数据。 如果高光谱图像数据为三维矩阵&#xff0c;将其转置为&#xff08;宽度&#xff0c;高度&#xff0c;波段数&#xff09;的形式。这是因为MATLAB中高光谱图像通常是以&am…

[前端面试套餐css+js+vue+es6]第七天

前端面试套餐css:元素水平垂直居中得方法有哪些&#xff1f;如果元素不定宽高呢&#xff1f;居中元素宽高已知table布局利用定位margin&#xff1a;负值居中元素宽高未知利用定位margin&#xff1a;auto利用定位transformflex布局grid布局js&#xff1a;Javascript中的继承&…

两种websocket实践

以前对websocket能躲则躲&#xff0c;两个项目都被逼着用了websocket之后觉得也算了入了个门&#xff0c;分别记录一下两个项目中的使用方式&#xff0c;好记性不如烂笔头&#xff5e; 零、基础知识 WebSocket对象的“readyState”属性记录连接过程中的状态值 属性值 属性常量…

java中 this 和 super的区别

2019独角兽企业重金招聘Python工程师标准>>> 1、this 在普通方法&#xff1a;this 代表当前对象 super 代表当前对象的父类对象this.属性 或 this.方法都是访问当前对象的 super.属性 或 super.方法访问的是当前对象的父类对象属性或方法 在构造方法中 this…

【vue cli2 3】 本地代理解决跨域问题

一、vue-cli2 在config/index.js中修改proxyTable&#xff1a; module.exports {dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,// proxyTable: {},//原来为空proxyTable: {//这里自定义/api: { //自己命名target: "https://xxx.com", //要代理的…

Unity3D之移植学习笔记:移植到Android平台

首先&#xff0c;我们需要一台已经配置好可以开发Android应用的计算机&#xff0c;这里我使用的是Windows系统EclipseADT的开发环境&#xff0c;当然也可以使用Android Studio或者使用Mac系统都可以。 导出到Eclipse 设置U3D工程 首先需要设置游戏的平台为Android&#xff1a; …

el-table懒加载树形数据,实现整行点击的展开

做项目遇到一个需求&#xff0c;根据集团层级展现一组数据&#xff0c;每个层级都可以点开看更详细的拆分数据&#xff0c;第一想法是用el-table的树形数据来展示&#xff0c;大概下面这个样子&#xff1a; 用过这个组件的应该知道这个只能通过点击每一行前面的小箭头实现伸缩&…