22.Vue绑定class样式

article/2025/10/2 17:38:02

目录

1.绑定class样式-字符串写法(适用于样式的类名不确定,需要动态指定)

2.绑定class样式-数组写法(适用于样式的个数不确定,名字也不确定)

3.绑定class样式-对象写法(适用于样式的个数确定,名字也确定,但要动态决定用不用)


为了讲好class样式,我们这里提前准备了7个样式作为例子来讲解。 

        .basic{width:400px;height:100px;border: 1px solid black;}.happy{border:4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg,yellow,pink,orange,yellow);}.sad{border:4px dashed rgb(2,197,2);background-color: gray;}.normal{background-color: skyblue;}.add1{background-color: yellowgreen;}.add2{font-size: 30px;text-shadow: 2px 2px 10px red;}.add3{border-radius:20px;}

basic就是最基本的边框。happy,sad,normal代表了3种心情,这三种心情在设置的时候需要3选一。这三个不能同时应用。

而add1,add2,add3是可以同时使用的

咱们先看看这两部分样式的效果:

互斥部分:

兼容部分:

讲到这里7个样式我们就说完了,接下来我们就操作一下。

1.绑定class样式-字符串写法(适用于样式的类名不确定,需要动态指定)

需求1:basic是基础的,点击div将样式从normal切换为happy

这个时候有人就会想这样去实现,给这个div绑定点击事件,在事件中根据这个div的id获取元素,然后修改className = 'basic happy'。

这样写虽然可以实现功能,但是对于Vue来说是违规的。 因为这样操作相当于我们自己去操作DOM,而Vue的思想恰恰是不让用户自己去操作DOM。

basic是固定不变的,normal和happy是动态变化的,为了解决这样的问题,Vue允许用户这样去做。不变的属性正常写,变化的属性通过绑定属性来写,最终它会将两个属性合并为一个属性进行展示。如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>绑定样式</title><!--引入Vue--><script type="text/javascript" src="../js/vue.js"></script><style>.basic{width:400px;height:100px;border: 1px solid black;}.happy{border:4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg,yellow,pink,orange,yellow);}.sad{border:4px dashed rgb(2,197,2);background-color: gray;}.normal{background-color: skyblue;}.add1{background-color: yellowgreen;}.add2{font-size: 30px;text-shadow: 2px 2px 10px red;}.add3{border-radius:20px;}</style>
</head>
<body><!--准备好一个容器--><div id="root"><div class="basic" :class="mood" @click="changeMood">{{name}}</div></div>
</body><script type="text/javascript">Vue.config.productionTip = false //阻止Vue在启动时生成生产提示new Vue({el:'#root',data:{name:'class样式',mood:'normal'},methods: {changeMood(){this.mood = 'happy'}},})
</script>
</html>

实现效果:

需求2:点击div,随机切换心情样式。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>绑定样式</title><!--引入Vue--><script type="text/javascript" src="../js/vue.js"></script><style>.basic{width:400px;height:100px;border: 1px solid black;}.happy{border:4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg,yellow,pink,orange,yellow);}.sad{border:4px dashed rgb(2,197,2);background-color: gray;}.normal{background-color: skyblue;}.add1{background-color: yellowgreen;}.add2{font-size: 30px;text-shadow: 2px 2px 10px red;}.add3{border-radius:20px;}</style>
</head>
<body><!--准备好一个容器--><div id="root"><div class="basic" :class="mood" @click="changeMood">{{name}}</div></div>
</body><script type="text/javascript">Vue.config.productionTip = false //阻止Vue在启动时生成生产提示new Vue({el:'#root',data:{name:'class样式',mood:'normal'},methods: {changeMood(){const arr = ['happy','sad','normal']const index = Math.floor(Math.random()*3)this.mood = arr[index]}},})
</script>
</html>

实现效果:

2.绑定class样式-数组写法(适用于样式的个数不确定,名字也不确定)

 需求:basic是基础的,将add1,add2,add3的样式进行绑定,便于以后增加删除

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>绑定样式</title><!--引入Vue--><script type="text/javascript" src="../js/vue.js"></script><style>.basic{width:400px;height:100px;border: 1px solid black;}.happy{border:4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg,yellow,pink,orange,yellow);}.sad{border:4px dashed rgb(2,197,2);background-color: gray;}.normal{background-color: skyblue;}.add1{background-color: yellowgreen;}.add2{font-size: 30px;text-shadow: 2px 2px 10px red;}.add3{border-radius:20px;}</style>
</head>
<body><!--准备好一个容器--><div id="root"><div class="basic" :class="mood" @click="changeMood">{{name}}</div> <br><div class="basic" :class="classArr" >{{name}}</div></div>
</body><script type="text/javascript">Vue.config.productionTip = false //阻止Vue在启动时生成生产提示new Vue({el:'#root',data:{name:'class样式',mood:'normal',classArr:['add1','add2','add3']},methods: {changeMood(){const arr = ['happy','sad','normal']const index = Math.floor(Math.random()*3)this.mood = arr[index]}},})
</script>
</html>

实现效果:

3.绑定class样式-对象写法(适用于样式的个数确定,名字也确定,但要动态决定用不用)

需求:有两个样式add1和add2,但这两个样式用不用是可以动态组合的。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>绑定样式</title><!--引入Vue--><script type="text/javascript" src="../js/vue.js"></script><style>.basic{width:400px;height:100px;border: 1px solid black;}.happy{border:4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg,yellow,pink,orange,yellow);}.sad{border:4px dashed rgb(2,197,2);background-color: gray;}.normal{background-color: skyblue;}.add1{background-color: yellowgreen;}.add2{font-size: 30px;text-shadow: 2px 2px 10px red;}.add3{border-radius:20px;}</style>
</head>
<body><!--准备好一个容器--><div id="root"><div class="basic" :class="mood" @click="changeMood">{{name}}</div> <br><div class="basic" :class="classArr" >{{name}}</div> <br><div class="basic" :class="classObj" >{{name}}</div></div>
</body><script type="text/javascript">Vue.config.productionTip = false //阻止Vue在启动时生成生产提示new Vue({el:'#root',data:{name:'class样式',mood:'normal',classArr:['add1','add2','add3'],classObj:{add1:false,add2:false}},methods: {changeMood(){const arr = ['happy','sad','normal']const index = Math.floor(Math.random()*3)this.mood = arr[index]}},})
</script>
</html>

实现效果:


http://chatgpt.dhexx.cn/article/GLpfcJv2.shtml

相关文章

Vue基础知识总结 2:vue 动态绑定

&#x1f3c6;作者简介&#xff1a;哪吒&#xff0c;CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家&#x1f4aa;&#xff0c;专注Java硬核干货分享&#xff0c;立志做到Java赛道全网Top N。 &#x1f3c6;本文收录于&#xff0c;Java基础教程系列…

SQL语句:将查询结果合并一起,语句优化

需求驱动 为了使得表格更好看些&#xff0c;我需要把查询结果合在一起&#xff0c;这样看起来就是一体的了。主要是性能测试有需求&#xff1a; 1、查询当前库设备 2、查询新增设备 3、计算每秒鉴权数 这个对我来说比较简单&#xff0c;分开查询就可以了。但我对自己不能要求这…

sql查询将多个结果合并成一个字符串(GROUP_CONCAT和CONCAT)

完整语法如下 group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator 分隔符]) SELECT * FROM testgroup 表结构与数据如上 现在的需求就是每个id为一行 在前台每行显示该id所有分数 group_concat 上场&#xff01;&#xff01;&#xff01; SELECT…

Mysql合并两个sql结果

第一条sql及结果 SELECT value4 AS ‘压缩机功率’, create_date AS ‘时间’ FROM gree_data WHERE data_belong ‘External_05’ AND create_date > ‘2019-10-23 17:03:59’ ORDER BY create_date 结果展示&#xff1a; 第二条sql及结果 SELECT value2 AS ‘工作模…

sql——合并两个sql的结果

表结构 iot_street_road表&#xff1a; iot_street_staff_road表&#xff1a; iot_street_tree表: 想得到结果&#xff1a; road_namestaff_counttree_count街道名工人数量苗木数量 实现方法&#xff1a; 把表一和表二、表一和表三分别按road_id聚合&#xff0c;得到的结果合…

SQL查询结果拼接

Sql查询结果进行拼接 对查询结果进行拼接&#xff0c;可使用group_concat()&#xff0c;concat()&#xff0c;concat_ws()函数。简单介绍下如何应用。 Mysql中的group_concat() 功能&#xff1a;可以group by产生的同一分组的值连接起来,返回一个字符串。 参数格式&#xff…

sql查询结果合并

使用group_concat合并多行查询结果为一行select gs.id id,gs.gs_no gs_no,gs.apply_date apply_date,gs.create_by create_by,group_concat(gd.name) name,gs.apply_description apply_description,gd.unit_name unit_name,gs.apply_status apply_status,gs.apply_by apply_by …

oracle 将多个查询结果合并

首先要区分一个概况&#xff0c;多个查询结果分两种&#xff0c;一种是一条sql查询多个结果&#xff0c;还有一种是多条sql语句查询出多个结果。 先看第一个&#xff0c;一条语句查询出多个结果&#xff0c;将多个结果合并成一条记录&#xff1a; 在oracle中有一个wm_concat()函…

mysql 合并两个查询结果

合并两个查询结果 查询结果1&#xff1a; select date(complete_time) as time,sum(amt) as amount_out from withdraw where state3 group by date(complete_time) 查询结果2 select date(update_time) as time,sum(transfer_amount) as amount_in from user_charge where st…

SQL合并查询数据,以逗号分隔

功能描述&#xff1a; 将查询到的数据合并为一条数据&#xff0c;以逗号分隔 案例&#xff1a; 功能描述&#xff1a; 现有三张表&#xff1a; Student&#xff08;学生表&#xff09; Course&#xff08;课程表&#xff09; Student-Course&#xff08;学生课程关联表&am…

MySQL合并查询结果

利用 UNION 关键字&#xff0c;可以给出多条 SELECT 语句&#xff0c;并将它们的结果组合成单个结果集。合并 时&#xff0c;两个表对应的列数和数据类型必须相同。各个 SELECT 语句之间使用 UNION 或 UNION ALL 关键字分隔。UNION 不使用关键字 ALL&#xff0c;执行的时候删除…

SQL如何使两个select语句查询结果合并一个

SQL如何使两个select语句查询结果合并一个&#xff1f; ——在网上看到别人遇到的情况&#xff0c;觉得有点意思&#xff0c;先收集下来~ 解决办法&#xff1a; select isnull(a.unit,b.fine_units) unit,isnull(a.number,0) number,isnull(b.fine_number,0) fine_numberfrom…

sqlsever2019:union合并多个查询结果

文章目录 一、前言二、区别union和连接三、union实例四、union all合并表五、union中的oder by子句六、union自动数据类型转换七、使用union合并不同类型的数据八、union合并不同列数的两个表九、union多表合并 一、前言 表的合并操作将两个表的行合并到一个表中&#xff0c;不…

SQL 列不同的表查询结果合并

两个不同的表进行查询&#xff0c;需要把结果合并&#xff0c; 比如table1的列为 id, user_id, type_id,pro_id&#xff1b; table2的列为 id,user_id,collect_id&#xff1b;分别如下图所示 table1&#xff1a; table2&#xff1a; 将两个表的查询结果合并到一起的查询语…

SQL多个查询结果拼接

今天有一个需求&#xff0c;我有三张表&#xff0c;一张学生表&#xff0c;一张教师表&#xff0c;一样辅导员。 它们都有编号&#xff0c;都有密码&#xff0c;但是字段名不一样&#xff0c;我想一次查询出三张表里面这些编号和密码放在一个查询结果集里面&#xff01; 我们可…

各数据库SQL查询结果多行数据合并成一行

SQL查询结果多行数据合并成一行 一、Oracle函数多行数据合并成一行二、Mysql函数多行数据合并成一行三、sqlserver函数多行数据合并成一行四、postgresql函数多行数据合并成一行 业务需要需要在oracle函数里把多行数据合并成一行&#xff0c;顺道发挥下常用的几种方法。 一、O…

【sql语句基础】——查(select)(合并查询)

目录 合并查询单独查询合并查询——UNION ALLUNION ALL定义UNION ALL代码示例UNION ALL查询结果 合并查询——UNION ALLUNION 定义UNION 代码示例UNION 查询结果 合并查询 当我们需要将多个select查询结果合并在一起的时候&#xff0c;可以使用集合操作符号&#xff1a;union …

微信小程序-循环语句的使用

循环语句的使用 小程序中的循环语句 for&#xff0c;就是在.js中定义循环的数组&#xff0c;把要循环的数据写到数组里面&#xff0c;然后再到*.wxml中进行逐一展示就行了。这里结合一下icon标签的属性来演示 循环语句的基本使用。 重点需要明白的是&#xff1a;小程序中的 fo…

微信小程序-页面FOR循环和嵌套循环

单个循环 <view wx:for"{{pinpaiTishi}}" wx:key"{{xxx}}"><view wx:if"{{item.name!null}}" wx:key"{{xxxx}}">//判断name是否为null<view class"tr"><view class"td-left"></view&…

微信小程序如何双重循环

微信小程序解决双重循环 准备知识 wx:for : 使用数组中各项的数据重复渲染该组件 当前项的下标变量名默认为 index&#xff0c;当前项的变量名默认为 item 可使用 wx:for-item 指定当前元素的变量名&#xff0c;使用 wx:for-index 指定当前下标的变量名 wx:key : 指定列表中项…