我们在学习js时有学到过如何去动态切换元素的样式,具体有以下步骤:

  1. 先获得元素

  2. 修改样式。通过className或者style修改

    <head>
    <style>.class1 {border: 1px solid black;height: 20px;width: 20px;}
    </style>
    </head>
    <body>
    <div id='app'></div>
    <button onclick="change()">更改样式</button>
    </body>
    <script>
    function change() {var app = document.querySelector("#app")app.className = 'class1'app.style = 'color:red'}
    </script>

用js能达到动态修改样式的效果,但是会有点繁琐不方便,当要动态修改的样式一多就会使代码变得特别冗长,不利于维护。说到这就要请出今天的主角vue大兄弟出来了,没错今天呢就要讲讲vue如何动态绑定class与style。

class动态绑定

为了证明这一方法好用就先改改上面的代码。

<head>
<style>.class1 {border: 1px solid black;height: 20px;width: 20px;}
</style>
</head>
<body><div id="app"><div :class="class1"></div><button @click="change">更改样式</button></div>
</body>
<script type="text/javascript">var app = new Vue({el: "#app",data: {class1: ''},methods: {change() {this.class1 = 'class1'}},})
</script>

vue中通过v-bind(:)动态绑定data属性class1,当点击按钮时便触发change方法将class1的值变换从而改变div的样式。从上面看来比原生js动态改变元素样式的方法方便的多。动态样式的实现其实也能理解成将class看成一个变量,通过改变class的值去动态切换样式。

对class动态绑定有了大概了解后,接下来再深入了解。

添加class

<div class="class1" :class="class2" ></div>

上面代码中有两个class不同的是后一个class增加了v-bind(:),猜想会有人认为class2会将class1的样式进行覆盖,但是因为增加了v-bind而使本应该覆盖的情况转换成了添加,也就是说后面div的样式会呈现出下面这样的效果

<div class="class1 class2" ></div>

添加class数组

如果需要为一个元素添加多个样式可以使用此种方法

<div :class="classNames"> hi,everyone!!</div>
data: {classNames: ['class1', 'class2', 'class3']}

使用数组的方法可以很快速的添加或者删除样式。

也可以使用以下这种方法,但是这种方法弊端多,不建议使用只做了解

<div :class="[class1,class2,class3]"> hi,everyone!!</div>

添加class对象

这种方法用于已确定使用的样式,但是现在某种样式不显示或显示

语法

对象名:{样式1:true|false,样式2:true|false
}

具体实现

要求样式1显示而样式2不显示

<div :class="objClass"> hi,everyone!!</div>
data:{objClass:{class1:true,class2:flase}
}

也可以使用以下这种方法,但是这种方法弊端多,不建议使用只做了解

<div :class="{class1:true,class2:flase}"> hi,everyone!!</div>

案例:实现多种样式间的随机切换

<style>.class1 {color: black;}.class2 {color: blue;}.class3 {color: green;}</style>
</head>
​
<body><div id="app"><div :class="className"> hi,everyone!!</div><button @click="change">更改样式</button></div>
</body>
<script type="text/javascript">var app = new Vue({el: "#app",data: {className: ''},methods: {change() {let arr = ['class1', 'class2', 'class3']let index = Math.floor(Math.random() * 3)this.className = arr[index]console.log(index)}},computed: {}})
​
</script>

style动态绑定

css中为一个元素添加内联样式一般用

<div style="font-size:40px"></div>

现在我们有需求希望将font-size的值改为动态绑定,因此我们可以使用vue中的style动态绑定,先来改动上面的代码。

<div id="app" :style="{fontSize:fsize+'px'}"
new Vue({el:'#app',data:{fsize:30}
})

可以看到在vue中将font-size改成了fontSize这是因为vue中命名规则需将以横线命名改为驼峰命名,另外,style中有多个属性所以要以对象的形式包装多个属性,以上style样式也可以写成这样

data:{style:{fontSize:'30px',color:'blue'}
}

style对象写法

对象中的属性必须是css包含有的属性,只需更改成vue认可的命名规则即可,如:fontSize(font-size)、backgroundColor(background-color)

<body><div id="app" :style="style">head,yes</div><script>new Vue({el: '#app',data: {style: {backgroundColor: 'green',color: 'red',width: '40px',height: '100px'}}})</script>
</body>

style数组的写法

<body><div id="app" ><div :style="[style,style1,style2]">head,yes<div>//数组格式方法一<div :style="styleArr">head</div>//数组格式方法二</div><script>new Vue({el: '#app',data: {style: {backgroundColor: 'green',  height: '100px'},style1:{color: 'red'},style2:{width: '40px'},styleArr:[{color: 'red'},{width: '40px'}]     }})</script>
</body>

Vue动态绑定class相关推荐

  1. vue 动态绑定 video src,不能正常播放问题

    vue 动态绑定 video src,不能正常播放问题 通过 vm.$refs vm.$refs 一个对象,持有注册过 ref attribute 的所有 DOM 元素和组件实例. 核心代码 let ...

  2. Vue动态绑定class与设置style

    我自己总结的 1.三元运算符实现 方法一 //花括号可省略 :class="{ 类名: 条件 ? true : false }" :class="{ listItemSe ...

  3. VUE动态绑定Css样式、Style行内样式

    VUE动态绑定Css样式.Style样式 一.背景 这两天做的uniapp项目开发的时候遇到了动态写css样式的问题了,因为uniapp的语法是vue的语法,所以uniapp的样式问题主要也就是vue ...

  4. Vue 动态绑定组件

    Vue 动态绑定组件 <div class="client"><component :params="showData" :is=" ...

  5. vue动态绑定类样式ClassName知多少

    对于动态绑定类样式,之前用的最多的也就是:class="{'classA':true}" ,今天遇到一种情况,就是要给元素动态添加一个保存在数据源中的类样式,那前边的这种写法显然满 ...

  6. [Vue][:class]Vue动态绑定class错误分析

    问题 我使用 :class 动态绑定样式表,出现以上问题 看代码 它的父级我在 Vue 应用里已经绑定了 并且 data 中包含 activeWho 属性 但是它依然报错,说是这个属性没有定义 但是代 ...

  7. vue动态绑定background

    background是background-color,background-image,background-repeat,background-attachment,background-posi ...

  8. VUE 动态绑定class

    第一种:通过一个布尔值判断样式类是否生效 //isActive 是在data里面布尔值,   rotateRight 是 class 样式类  //isActive 为true时样式类 rotateR ...

  9. 【视频】vue动态绑定css样式

    P3vue动态绑定css样式 https://www.bilibili.com/video/av91679349?p=3

最新文章

  1. python图片处理裁剪大小、旋转、镜像
  2. 《How Tomcat Works》读书笔记(三)Connector
  3. (王道408考研操作系统)第二章进程管理-第三节4:信号量机制(整型、记录型信号量和P、V操作)
  4. 安卓开发监听外部蓝牙设备断开_这软件能让你的蓝牙耳机,用上 AirPods 的功能...
  5. 简单树组织数据格式化为标准树组织数据
  6. 服务端客户端均采用epoll模式,建立3万TCP连接对内存的影响。
  7. JSP程序设计习题4-3.6
  8. 钢结构节点板计算小程序_节点应用程序目录结构
  9. PDF怎么转换成Word文字
  10. 新浪离职员工写给新浪各位高层的信
  11. 漫威漫画公司(Marvel Comics)简介
  12. UC浏览器极速版V22.3.26-艳云脚本云控系统
  13. Github的远程项目如何下载到本地
  14. MongoDB 文档字段增删改
  15. 牛客网机试题-神奇的口袋
  16. 生产者与消费者模式的概念、运用、3种实现
  17. E71-433MS30芯片(CC1310无线模块 )mosbus协议通信(主机)
  18. 《分析服务从入门到精通读书笔记》第一章、数据分析基础(1)
  19. 最大公约数-最小公倍数
  20. 2021年全球与中国液压缸行业市场规模及发展前景分析

热门文章

  1. 搜索小技巧,八大搜索技巧
  2. Linux压缩备份相关命令
  3. 复旦大学苏教授火了!扯出600多个假博士
  4. 超简单工具puer——“低碳”的前后端分离开发
  5. 【河海大学863】22年考研真题及解析
  6. SQL语句中DATEDIFF()函数的用法
  7. 电竞Dota2数据API接口 - 【战队列表】API调用示例代码
  8. LTSPICE调用下载的lib文件步骤
  9. 4.19构建一个类book,含有两个私有成员qu和price
  10. html 简繁替换,js简繁转换,两种实现方式,妥妥的~