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

news2024/11/25 11:35:24

介绍

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里定义数据即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git ---- Git 分支操作

Git ---- Git 分支操作1. 什么是分支2. 分支的好处3. 分支的操作1. 查看分支2. 创建分支3. 修改分支4. 切换分支5. 合并分支5. 产生冲突4. 创建分支和切换分支图解1. 什么是分支 在版本控制过程中&#xff0c;同时推进多个任务&#xff0c;为每个任务&#xff0c;我们就可以创…

【已解决】安装cv2时Building wheel for opencv-python终端卡死

目录1 问题背景2 问题探索3 问题解决4 告别Bug1 问题背景 环境&#xff1a; Ubuntu20.04Python3.6 现象&#xff1a;终端输出类似下面的命令&#xff0c;并卡住不动 Building wheel for opencv-python (PEP 517) ... 2 问题探索 首先&#xff0c;OpenCV较旧的Python版本不需要…

什么是自动化运维?为什么选择Python做自动化运维?

“Python自动化运维”这个词&#xff0c;想必大家都听说过&#xff0c;但是很多人对它并不了解&#xff0c;也不知道是做什么的&#xff0c;那么你对Python自动化运维了解多少呢?跟着蛋糕往下看。 什么是Python自动化运维? 随着技术的进步、业务需求的快速增长&#xff0c;…

网友爆料奇葩leader:日报要精确到0.5小时,每晚检查!每周写周计划,评审ABCD等级,午休不许刷手机、看视频、玩游戏!...

这样的leader你能接受吗&#xff1f;一位网友吐槽&#xff1a;一个团队6个人&#xff0c;加上leader一共7个人。leader要求每天写日报&#xff0c;并且要精确到0.5小时&#xff0c;格式必须正确&#xff0c;每天晚上都看&#xff0c;下班后各种问进度。每周一要写周计划&#x…

IM即时通讯构建企业协同生态链

在当今互联网信息飞速发展的时代&#xff0c;随着企业对协同办公要求的提高&#xff0c;协同办公的定义提升到了智能化办公的范畴。大多企业都非常重视构建连接用户、员工和合作伙伴的生态平台&#xff0c;利用即时通讯软件解决企业内部的工作沟通、信息传递和知识共享等问题。…

Pytorch 网络结构的可视化

在构建网络的过程中&#xff0c;需要查看网络结构&#xff0c;以便于优化&#xff0c;使用Pytorch常用的可视化工具有 1.Hidden layer myNet U_Net() print(myNet)# ## 可视化卷积神经网络,MyConvnet是定义的神经网络结构 hl_graph hl.build_graph(myNet, torch.zeros([1, 3…

国产蓝牙耳机哪个好用?国产好用的蓝牙耳机推荐

现如今&#xff0c;国产蓝牙耳机越来越受到人们关注&#xff0c;国产蓝牙耳机近几年的发展愈发迅猛&#xff0c;配置上相对于非国产蓝牙耳机来说也毫不逊色。那么&#xff0c;国产蓝牙耳机哪个好用&#xff1f;下面&#xff0c;我来给大家推荐几款好用的蓝牙耳机&#xff0c;一…

电脑应用程序在c盘怎么转移到d盘?建议先收藏

电脑应用程序在c盘怎么转移到d盘&#xff1f;很多小伙伴第一反应就是直接剪切&#xff0c;这种方法对于普通文件来说很简单、也很方便&#xff0c;只需执行CtrlX就能办到&#xff0c;然而对于已安装的应用程序&#xff0c;这并不是明智的做法。因为直接剪切粘贴后&#xff0c;应…

【概念辨析】二维数组传参的集中可能性

一、二维数组传参竟然不是用二级指针进行接收&#xff1f; 今天进行再一次的二级指针学习时&#xff0c;发现了一条以前没怎么注意过的知识点&#xff1a;二维数组进行传参只能用二维数组&#xff08;不能省略列&#xff09;进行接收或者是数组指针。 问题复现代码如下&#xf…

ChatGPT 编写模式:如何高效地将思维框架赋予 AI ?

如何理解 Prompt &#xff1f;Prompt Enginneeringprompt 通常指的是一个输入的文本段落或短语&#xff0c;作为生成模型输出的起点或引导。prompt 可以是一个问题、一段文字描述、一段对话或任何形式的文本输入&#xff0c;模型会基于 prompt 所提供的上下文和语义信息&#x…

现有安全技术

现有的安全技术 防火墙技术 数据机密性技术 防火墙技术比较静态地保护网络支付涉及的客户端网络商家网络、金融专用网络等网络级的安全&#xff0c;数据传输过程中的安全性则需要数据机密性技术进一步给以保护 我们将源信息称为明文。为了保护明文&#xff0c;将其通过某种…

LMR23630APQDRRTQ1应用INA2181A1QDGSRQ1电流检测放大器电路图

LMR23630/LMR23630-Q1 SIMPLE SWITCHER降压转换器是易于使用的36V、3A同步降压稳压器。该器件的宽输入电压范围为 4.5V 至 36V&#xff0c;适用于调节从工业到汽车等各类应用中非稳压电源的电源调理。采用了峰值电流模式控制&#xff0c;以实现对环路补偿和逐周期电流限制的简单…

Docker 容器命令 和安装各种镜像环境

CentOS安装Docker 1.1.卸载&#xff08;可选&#xff09; 如果之前安装过旧版本的Docker&#xff0c;可以使用下面命令卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotat…

Qt-FFmpeg开发-保存视频流裸流(11)

Qt-FFmpeg开发-保存视频流裸流&#x1f4c0; 文章目录Qt-FFmpeg开发-保存视频流裸流&#x1f4c0;1、概述&#x1f4f8;2、实现效果&#x1f4bd;3、FFmpeg保存裸流代码流程&#x1f4a1;4、主要代码&#x1f50d;5、完整源代码&#x1f4d1;更多精彩内容&#x1f449;个人内容…

【HTML】我的花儿我做主~ 指定花瓣的数量,生成花朵~

效果图 前言&#xff08;赛时灵感&#xff09; 在比赛开始前&#xff0c;就一直没有灵感&#xff0c;不知道参与哪个赛道。也还不知道用啥去做。 直到比赛开始&#xff0c;还是没想到。 最后在比赛快要结束的第五天三更半夜的时候&#xff1b; 突然想到&#xff0c;既然要浪漫&…

每日学术速递2.23

Subjects: Robotics 1.On discrete symmetries of robotics systems: A group-theoretic and data-driven analysis ​ 标题&#xff1a;关于机器人系统的离散对称性&#xff1a;群论和数据驱动分析 作者&#xff1a;Daniel Ordonez-Apraez, Mario Martin, Antonio Agudo, F…

python中的取整、四舍五入和输出小数点后n位

各种取整 1.int是向下取整 2.math.ceil(num)是向上取整 3.math.floor(num)是向下取整 4.round(num)一般情况下是四舍五入取整&#xff08;round毛病多&#xff09; 四舍五入 1.round()可以四舍五入 2.int()也可以 这样写&#xff08;数后面0.5&#xff09;&#xff1a…

Python 爬虫通用代码框架代码示例

刚开始入门学习python爬虫会遇到各种各样的问题&#xff0c;如果以当时的学识想必处理起来也十分困难&#xff0c;那么&#xff0c;如果你拥有良好的编程习惯会让你轻松很多。 当我们在使用Requests库时经常遇到的问题无非是网络问题&#xff0c;连接的超时问题&#xff0c;或…

设计模式C++实现25:解释器模式(Interpreter)

部分内容参考大话设计模式第27章&#xff1b;本实验通过C语言实现。 一 基本原理 意图&#xff1a;给定一个语言&#xff0c;定义其文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。 上下文&#xff1a;如果业务规则频繁变…

Netty核心组件创建源码浅析

pipeline&#xff0c;Handler&#xff0c; HandlerContext创建源码剖析 源码解析目标 Netty中的ChannelPipeline&#xff0c;ChannelHandler和ChannelHandlerContext是核心组件&#xff0c;从源码解析来分析 Netty是如何设计三个核心组件分析Netty是如何创建和协调三个组件三…