Vue 在for循环中动态添加类名及style样式集合

2023-11-07

介绍

vuefor 循环中,经常会使用到动态添加类名或者样式的情况,实现给当前的选中的 div 添加不同的样式。

动态添加类名

提示: 所有动态添加的类名,放在表达式里都需要添加引号,进行包裹。

  • 通过 对象 的形式,使用花括号进行包裹。
    使用方法:{'类名': boolean}
    第一个参数是需要添加的类名,第二个参数是一个 boolean值。
    优点是: 可以通过逗号进行分割,即可添加多个类名
    代码如下:
<template>
  <div class="index">
    <div v-for="(item,index) in state.list" :key="index" class="list-box">
    <!-- 通过list数组里isActive属性,给p元素添加active类名;-->
    <p :class="{'active': item.isActive">{{ item.title }}</p>
    <!-- 给p元素添加active类名;
    	通过list数组里isRed属性,给p元素添加red类名;
       (这里添加了两个类名,通过逗号进行分隔的)-->
      <p :class="{'active': item.isActive, 'red': item.isRed}">{{ item.title }}</p>
    </div>
    <div></div>
  </div>
</template>
<script setup>
import {reactive} from 'vue';
const state = reactive({
  list: [
    {
      id: 0,
      title: '星期一',
      isActive: true,
      isRed: false,
    },{
      id: 1,
      title: '星期二',
      isActive: false,
      isRed: true,
    }
  ]
})
</script>
<style lang="less" scoped>
  .list-box {
    padding: 0 20px;
    p {
      margin-top: 20px;
    }
    .active {
      font-size: 20px;
    }
    .red {
      color: red;
    }
  }
</style>

实现效果如下:
在这里插入图片描述

  • 通过 数组 的形式,使用 []进行包裹。
    使用方法:
    使用方法:[判断成立的情况 ? '类名1' : '类名2']
    第一个参数是判断条件成立的表达式,第二个参数是表达式成立的情况下添加的类名,第三个表达式是情况不成立的情况下的类名。
    代码如下:
<template>
  <div class="index">
    <div v-for="(item,index) in state.list" :key="index" class="list-box">
    <!-- 通过list数组里isRed属性,为true时给p元素添加red类名的样式,否则不添加;
    	(这里添加了两个类名,通过逗号进行分隔的)
    -->
     <p :class="[item.isRed ? 'red' : '']">{{ item.title }}</p>
     <!-- 三元同时添加多个类名,使用空格进行隔开就行 如下所示 -->
     <p :class="[item.isRed ? 'red blue' : '']">{{ item.title }}</p>
    </div>
    <div></div>
  </div>
</template>
<script setup>
import {reactive} from 'vue';
const state = reactive({
  list: [
    {
      id: 0,
      title: '星期一',
      isRed: false,
    },{
      id: 1,
      title: '星期二',
      isRed: true,
    }
  ]
})
</script>
<style lang="less" scoped>
  .list-box {
    padding: 0 20px;
    p {
      margin-top: 20px;
    }
     .red {
      color: red;
    }
  }
</style>

实现效果如下:
在这里插入图片描述

  • 通过 方法 的形式,在方法当中返回想要的类名。
    使用方法:methods(),直接写方法名。
    提示:逻辑多的时候建议用方法来添加类名,只有一个判断的时候建议用三元。
    代码如下:
<template>
  <div class="index">
    <div v-for="(item,index) in state.list" :key="index" class="list-box">
    	<!-- 直接返回方法名,例如这里我的方法是 isred -->
   		<p :class="isRed(item)">{{ item.title }}</p>
    </div>
    <div></div>
  </div>
</template>
<script setup>
import {reactive} from 'vue';
const state = reactive({
  list: [
    {
      id: 0,
      title: '星期一',
      isRed: false,
    },{
      id: 1,
      title: '星期二',
      isRed: true,
    }
  ]
})
// 在方法里写自己的判断,然后返回对应的类名;
const isRed = (item) => {
  return item.isRed ? 'red' : ''
}
</script>
<style lang="less" scoped>
  .list-box {
    padding: 0 20px;
    p {
      margin-top: 20px;
    }
     .red {
      color: red;
    }
  }
</style>

实现效果如下:
在这里插入图片描述

动态添加style样式

提示: 在vue中,动态添加 style 样式

  • 所有的样式名必须是 驼峰写法;比如 font-size必须写成 fontSize;
  • 除了绑定的值以外,属性都得用引号括起来,比如 fontSize: '12px'
  1. 通过对象 的形式,
    代码如下:
<template>
  <div class="index">
  	<!-- 页面直接添加样式 -->
    <div :style="{fontSize: '20px', color: 'red'}">哈哈哈</div>
    <!-- vue 动态添加样式,通过数据的双向绑定 -->
    <div :style="{fontSize: state.activeSize  + 'px', color: state.activeColor}">嘿嘿嘿</div>
  </div>
</template>
<script setup>
import {reactive} from 'vue';
const state = reactive({
  activeSize: 14,
  activeColor: 'blue'
})
</script>

效果如下:
在这里插入图片描述

  1. 通过数组 的形式,
    代码如下:
<template>
  <div class="index">
  	<div :style="[state.sizeStyle,state.colorStyle]">哈哈哈</div></div>
  </div>
</template>
<script setup>
import {reactive} from 'vue';
const state = reactive({
 sizeStyle: {
    fontSize: '18px',
    height: '40px',
    lineHeight: '40px',
    width: '80px',
    textAlign: 'center'
  },
  colorStyle: {
    color: 'red',
    border: '1px solid green'
  }
})
</script>

效果如下:
在这里插入图片描述

  1. 通过 三元判断的形式,进行添加
    代码如下:
<template>
  <div class="index">
  	<div :style="state.active ? 'color: red': ''">哈哈哈</div>
  </div>
</template>
<script setup>
import {reactive} from 'vue';
const state = reactive({
  active: true,
})
</script>
<style>
.active {
	color: red;
}
</style>

效果如下所示:
在这里插入图片描述
4. 通过 方法的形式,进行返回。
代码如下:

<template>
  <div class="index">
  	<div :style="setStyle()">哈哈哈</div>
  </div>
</template>
<script setup>
const setStyle = () => {
  return 'background: red; height: 40px;line-height: 40px; width: 70px;color: #fff; text-align: center;'
}
</script>

效果如下:
在这里插入图片描述

总结

这里我用的是 vue3的一些写法,在vue2里,用法一样,在data里定义数据即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue 在for循环中动态添加类名及style样式集合 的相关文章

  • Angular 4 过滤器搜索自定义管道

    所以我试图构建一个自定义管道来在 ngFor 循环中执行多个值的搜索过滤器 我花了几个小时寻找一个好的工作示例 其中大多数都是基于以前的版本 并且似乎不起作用 所以我正在构建管道并使用控制台为我提供值 但是 我似乎无法显示输入文本 以下是我
  • Eslint 从另一个文件确定全局变量

    我试图以这样的方式设置 ESLint 使其在对实际目标文件进行 linting 之前解析全局声明文件 这样我就不必将所有确实是全局的函数和变量声明为全局 而是让解析器弄清楚 In 一些 模块 js function do something
  • 使用 Firefox 插件 sdk 的 nsISocketTransportService

    我正在尝试使用 Firefox 来读取 SSH 横幅 IE 当您最初连接到 SSH 服务器时 服务器会向您发送其横幅 标识服务器软件 并且您向 SSH 服务器发送您的横幅 标识您的客户端软件 为此 我使用以下 URL 中的示例 firefo
  • 在 R 传单中添加不透明度滑块

    如何在 R leaflet 应用程序中添加滑块来控制特定图层的不透明度 对于这个应用程序 我不想使用闪亮 这里建议 在 R 传单应用程序中添加滑块 https stackoverflow com questions 37682619 add
  • 如何使 d3 饼图响应式?

    我有一个 PIE 图表 它工作正常 但我无法使其具有响应能力和可调整大小 我需要它与移动浏览器和 iPad 等兼容 div div
  • 在javascript中访问函数内的实例变量?

    如何以最简单的方式访问函数内的实例变量 function MyObject Instance variables this handler Methods this enableHandler function var button doc
  • 此页面上的脚本导致 ie 运行缓慢

    问题就在标题中 IE 行为异常 并说有一个脚本运行缓慢 FF 和 Chrome 没有这个问题 我怎样才能找到问题所在 那个页面有很多JS 手动检查不是一个好主意 EDIT 这是我正在处理的一个项目的页面 但我需要一个工具来查找问题 End
  • 访问 nuxt 配置文件中的存储

    我想添加通过 Nuxt 静态生成的动态路由 我定义了一个客户端 服务器端存储asyncData方法 我想将这个存储值 一个数组 映射到我的nuxt config js文件使其成为 动态 静态 路线图nuxt generate命令 但如何访问
  • React JS 服务器端问题 - 找不到窗口

    你好 我正在尝试在我的reactJS项目中使用react rte 我有服务器端渲染 每次我想使用这个包时 我都会得到 return msie 6 9 b test window navigator userAgent toLowerCase
  • 如何在 select 和 option 标签中添加 JSON 数据?

    我有这个html代码 div class searchfilter div class searchwrapper div div
  • karma/jasmine 控制台更详细的测试结果

    我使用 Karma 和 Jasmine 进行 javascript 单元测试 假设我有一个失败的测试 如下所示 expect objectA toEqual expectedObjectA 当失败时 我看到控制台上转储了两个对象 并显示一条
  • 全局传递 xhr onload 函数的值

    在我正在创建的应用程序中 我有以下 XMLHttpRequest 并且我正在尝试传递结果data在 的里面xhr onload 到在同一父函数中创建的数组中 var url http api soundcloud com resolve j
  • 如何仅显示/隐藏此 bootstrapvue 表的第二列和第三列?

    下面的代码将显示 隐藏 a 中的所有列BootstrapVue桌子 代码的来源就是这里的答案 使用 bootstrap vue 组件和 bootstrap 3 动态显示 隐藏列 https stackoverflow com questio
  • ES6继承:使用`super`访问父类的属性

    JavaScript 的super关键字 当我在 Chrome Babel TypeScript 上运行代码时 得到了不同的结果 我的问题是哪个结果是正确的 规范的哪一部分定义了这种行为 下面的代码 class Point getX con
  • 模板中带有 ng-if 的 angularjs 指令

    我正在构建一个在模板内使用 ng if 的指令 奇怪的是 提供给链接函数的元素没有扩展ng if代码 它只是ng if的注释行 经过一番尝试 我发现通过将链接代码包装在 timeout 中似乎可以使其正常工作 但我想知道这是否不是正确的处理
  • webpack中动态加载外部模块失败

    我正在尝试建立以下架构 一个核心 React 应用程序 它具有一些基本功能 并且能够在运行时加载其他 React 组件 这些额外的 React 组件可以按需加载 并且它们在构建核心应用程序时不可用 因此它们不能包含在核心应用程序的捆绑包中
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • 如何在 webpack 中渲染嵌套的 SASS?

    采取以下CSS MyComponent color blue Button color red 以及以下 React 组件 import React from react import classes from MyComponent sc
  • 如何重复 ajax 请求,直到满足 RxJS Observable 的条件?

    我正在尝试重复请求 直到响应包含使用 RxJS 的数据 此时我想调用成功 或失败 处理程序 但我在使用 RxJS 时遇到了麻烦 这是我目前的方法 redux observable action observable mergeMap gt
  • ng-include 和 ng-view 不同时加载

    下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒

随机推荐

  • 关于调用Callable时的一个问题分享--总是只输出最后一次数据

    问题描述 我本来想使用线程池 ExecutorService Callable实现多线程处理数据 测试过程发现 只循环2到3次时 最终输出的数据只有最后一次遍历的数据 很奇怪 遇到问题解决问题 1 首先把我的测试代码贴出来 1 1 测试代码
  • Java导出压缩文件

    在很多场景需要导出很多的文件 将其压缩成zip是一个很不错的选择 先将要压缩的文件路径和名称得到 然后用工具类将其压缩 代码逻辑清晰 使用得修改一些文件路径 实现类中导出方法中 String zipFileName 工单附件 new Sim
  • 剑指 Offer 12. 矩阵中的路径

    题解 dfs 对棋盘里的每个点都dfs一遍 看是否有合适的字符串 当找到最后一个字符位置 并且最后一个字符 并且当前字符串匹配 那么为真 注意回溯之后的标记需要改成false 因为需要回溯进行查找 class Solution public
  • Hive启停脚本

    bin bash HIVE LOG DIR HIVE HOME logs if d HIVE LOG DIR then mkdir p HIVE LOG DIR fi 检查进程是否运行正常 参数 1 为进程名 参数 2 为进程端口 func
  • Spring Cloud Alibaba Sentinel 整合 nacos 进行规则持久化

    上篇文章Spring Cloud Alibaba Sentinel 初体验介绍了Sentinel 的简单使用 在使用过程中我们发现在Sentinel 控制台中配置了规则之后 随着服务的重启 配置的规则也随之消失 Sentinel 控制台控制
  • 写成生成以给定的p为参数的伯努利样本的程序,并写出由样本计算p的程序

    根据给定的参数p 编写伯努利样本的程序如下 def bernoulli sample p 定义一个变量x x 0 产生一个0 1之间的随机数 r random random 若随机数小于等于p 则x 1 if r lt p x 1 返回x
  • python判断一个字符串是不是ip地址

    文章目录 一 解决思路 二 判断代码 一 解决思路 满足什么条件的叫ip地址 1 先判断它是不是由4段数字用点号 分隔开 2 再判断每段数字的十进制是不是在0 255之间 满足以上条件就是正确的IP地址 那么解决思路就来了 1 拿到IP 先
  • 如何过掉前端Chrome的debugger反调试

    1 禁用浏览器断点 点击图中按钮 之后将不会再命中任何断点 这种方法虽然可以防止无限循环命中debugger断点 但是也存在很大的缺陷 因为对于其他代码 我们还是需要断点调试功能的 所以这个方法仅限于静态分析 2 直接使用debugger指
  • 唯品会测试工程师面试

    秋招 笔试题是后台 前端 测试同一套的题 考基础 面试 2014 09 25 一面 为什么做测试 测试遇到的最大的困难 python和java做的网站的区别 参加过什么社团活动 有没有上唯品会买过东西要你测怎么测 有哪些测试方法举例说 HR
  • 解决 深度学习docker 端口连接被对方重设

    在容器中启动 jupyter notebook 的时候 请指定 ip 为 0 0 0 0 aka 原因 docker启动的时候 我们的命令是 p 8888 8888 比如 sudo nvidia docker run it p 8888 8
  • 输入年份,判断输入的年份是否是闰年。(闰年的条件是能被 4 整除,但不能被 100 整除;或能被 400 整除。)

    public class Task 10101003 02 public static void main String args Scanner input new Scanner System in System out println
  • Charles证书-手机刷入系统信任证书

    最近面试需要 重新捡起了爬虫 在抓包的时候发现尽管按照Charles的要求去安装证书 还是会抓不到https的包 最后发现需要把用户信任证书是不够的 需要系统信任证书才行 第一步 把代理设置成Charles的代理 具体做法 Help SSL
  • 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

    机器学习基本理论 详解最大似然估计 MLE 最大后验概率估计 MAP 以及贝叶斯公式的理解 https mp weixin qq com s 6H0gmMWvTExySMraroLVlQ 最大似然估计 Maximum likelihood
  • 使用teamviewer搭建内网服务器。

    目录 起因 下载并安装teamviewer 服务器安装ccproxy 客户端使用SwitchyOmega 起因 学习的时候 学习视频必须使用校内的网络才能连接观看 校外无法观看 所以使用teamviewer和proxy搭建一个方便访问的服务
  • 绝对定位的元素宽度自动撑开

    position absolute white space nowrap
  • java传输json数据用md5加密过程

    1 加密过程 客户端传输数据 包含两部分 一部分原始数据 一部分签名 签名就是对原始数据MD5加密后的字节序列 而原始数据就是普通的string字符串 2 服务器端呢 将收到的原始数据 进行MD5加密后得到字节序列 将这个字节序列与传输过来
  • UDP客户端程序(C语言)

    UDP客户端程序 与UDP服务器端程序配合使用 Visual Stdio 运行 UDP客户端 cpp 定义控制台应用程序的入口点 include stdafx h include
  • 使用libevent编写高并发HTTP server

    libevent库使得高并发响应HTTP Server的编写变得很容易 整个过程包括如下几部 初始化 创建HTTP Server 指定callback 进入事件循环 另外在回调函数中 可以获取客户端请求 request的HTTP Heade
  • 多线程同步之生产者---消费者模型

    额 腾讯二面的时候 被问到了这个模型 很不幸啊 不会用代码来实现 生产者消费者模型 对于多线程程序来说 不管任何编程语言 生产者和消费者模型都是最经典的 就像学习每一门编程语言一样 Hello World 都是最经典的例子 实际上 准确说应
  • Vue 在for循环中动态添加类名及style样式集合

    介绍 在vue的 for 循环中 经常会使用到动态添加类名或者样式的情况 实现给当前的选中的 div 添加不同的样式 动态添加类名 提示 所有动态添加的类名 放在表达式里都需要添加引号 进行包裹 通过 对象 的形式 使用花括号进行包裹 使用