vue-class与style绑定

简介: 可以给v-bind:class传递一个对象,以动态地切换class

绑定 HTML class

对象语法

可以给v-bind:class传递一个对象,以动态地切换class

语法使用:

<div :class="{ active: isActive }"></div>

复制代码

active 这个 class 是否存在取决于 isActive 的布尔值代码演示:

<template>
  <div id="app">
    <div :class="{'active':isActive,'text-danger': hasError}"></div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      isActive: true,
      hasError: false
    }
  }
}
</script>
<style>
.active {
  border: 2px solid black;
  background-color: aqua;
  width: 200px;
  height: 200px;
}
.text-danger {
  border: 2px solid black;
  background-color: red;
  width: 200px;
  height: 200px;
}
</style>


运行结果:


网络异常,图片无法展示
|


打开开发者调试工具可以看出没有text-danger这个类名hasError值为false所以没有渲染这个类

绑定的数据对象如果比较复杂可以在数据属性中单独定义一个对象,然后绑定他

代码如下:

<template>
  <div id="app">
    <div :class="classObject"></div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      classObject: {
        active: true,
        'text-danger': false
      }
    }
  }
}
</script>


我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式:

代码如下:

<template>
  <div id="app">
    <div :class="classObject"></div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      classObject: {
        active: true,
        'text-danger': false
      }
    }
  }
}
</script>


运行的结果和上面一样。

数组语法

我们可以把一个数组传给 :class,以应用一个 class 列表:

代码演示:

<template>
  <div id="app">
    <div :class="[ activeClass,errorClass]"></div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      activeClass: 'active',
      errorClass: 'text-danger'
    }
  }
}
</script>
<style>
.active {
  border: 2px solid black;
  background-color: aqua;
  width: 200px;
  height: 200px;
}
.text-danger {
  background-color: red;
}
</style>

复制代码

运行结果:


网络异常,图片无法展示
|


打开开发者调试工具可以看出渲染了activetext-danger这两个类名

如果你想根据条件切换列表中的 class,可以使用三元表达式:代码如下:

<template>
  <div id="app">
    <div :class="[ isActive ? activeClass :errorClass]"></div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      activeClass: 'active',
      errorClass: 'text-danger',
      isActive: true
    }
  }
}
</script>
<style>
.active {
  border: 2px solid black;
  background-color: aqua;
  width: 200px;
  height: 200px;
}
.text-danger {
  border: 2px solid black;
  background-color: red;
  width: 200px;
  height: 200px;
}
</style>


当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象语法:

<div :class="[{ active: isActive }, errorClass]"></div>


绑定内联样式

对象语法

:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名

代码演示:

<template>
  <div id="app">
    <div :style="{color:activeColor,'fontSize' :fontsize+'px'}">绑定内联样式</div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      activeColor: 'red',
      fontsize: 30
    }
  }
}
</script>
<style>
</style>

复制代码

运行结果:


网络异常,图片无法展示
|


直接绑定到一个样式对象通常更好,这会让模板更清晰:

代码如下:

<template>
  <div id="app">
    <div :style="
    styleobject">绑定内联样式</div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      styleobject: {
        color: 'red',
        fontSize: '30px'
      }
    }
  }
}
</script>
<style>
</style>

复制代码

数组语法

:style 的数组语法可以将多个样式对象应用到同一个元素上

代码演示:

<template>
  <div id="app">
    <div :style="[baseStyles,moreStyles]">绑定内联样式</div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      baseStyles: {
        border: '2px black solid'
      },
      moreStyles: {
        width: '200px',
        height: '200px',
        backgroundColor: 'aqua'
      }
    }
  }
}
</script>
<style>

复制代码


网络异常,图片无法展示
|


自动添加前缀

我们知道 css3 中有一些样式属性并不被所有的浏览器所支持,Vue 将自动侦测并添加相应的前缀。Vue 是通过运行时检测来确定哪些样式的属性 是被当前浏览器支持的。如果浏览器不支持某个属性,Vue 会进行多次测试以找到支持它的前缀。

多重值

可以为 style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值,例如:

<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

复制代码

这样写只会渲染数组中最后一个被浏览器支持的值。在本例中,如果浏览器支持不带浏览器前缀的 flexbox,那么就只会渲染 display: flex


目录
相关文章
|
算法 物联网 定位技术
基于WIFI指纹的室内定位算法matlab仿真
基于WIFI指纹的室内定位算法matlab仿真
|
Python
【python】PyQt5实现生成二维码并保存的功能(附源码,带注释)
【python】PyQt5实现生成二维码并保存的功能(附源码,带注释)
421 0
|
Java 数据处理
技术分享:高效与灵活并存——Java版通用树形结构转换工具的实现与应用
在软件开发中,树形结构的数据表现形式无处不在,从文件系统的目录树到组织架构的部门树,再到各类产品的分类结构。处理这些具有层级关系的数据时,将其转换为树形结构以便展示和操作显得尤为重要。Java作为一门成熟的编程语言,虽然提供了强大的集合框架,但并未直接提供树形结构转换的内置工具。因此,开发一个高效且灵活的通用树形结构转换工具成为许多项目中的必备需求。
423 2
|
消息中间件 缓存 Java
避免消息积压的终极指南:四个关键技巧
本文作者小米分享了避免消息积压的四个策略:1) 提高消费并行度,可通过增加消费者实例和利用分区机制;2) 批量消费,利用消息中间件的批量API或自定义批量处理逻辑;3) 减少组件IO交互次数,如使用本地缓存和合并IO操作;4) 优先级消费,设置消息优先级并使用优先级队列。通过这些方法,可以优化消息处理效率,防止消息积压,确保关键业务的顺利进行。
282 5
|
人工智能 前端开发 JavaScript
人工智能文生图技术介绍
文生图技术将文字描述转化为图像,免除了设计师的参与。它分为&quot;代码式&quot;和&quot;AI&quot;两类。代码式如PlantUML、Mermaid和Reveal.js,适合开发人员通过特定语法创建图表。AI文生图如MidJourney和文心一言,能根据文本生成图像,MidJourney在文生图领域表现突出。这些工具为不同工作场景提供了便利。
人工智能文生图技术介绍
|
存储 API 数据库
手机号注册登录(保姆级)
在uni-app中,登录流程分为三个主要步骤:1) 发送登录请求至`/api/admin/loginUser`,检查返回的`code`是否为200;2) 如果`code`为200,将用户信息存入vuex并持久化到localStorage;3) 提供登录、注册及找回密码的界面元素,如表单验证、按钮点击事件处理,其中注册涉及验证码验证、新用户添加到数据库。登录成功后,用户信息会被用于后续的接口调用身份验证。
376 2
|
机器学习/深度学习 编解码 人工智能
论文精读 TransGAN:两个纯粹的Transformer可以组成一个强大的GAN(TransGAN:Two Pure Transformers Can Make One Strong GAN)
TransGAN是UT-Austin、加州大学、 IBM研究院的华人博士生构建了一个只使用纯 transformer 架构、完全没有卷积的 GAN,并将其命名为 TransGAN。该论文已被NeruIPS(Conference and Workshop on Neural Information Processing Systems,计算机人工智能领域A类会议)录用,文章发表于2021年12月。 该文章旨在仅使用Transformer网络设计GAN。Can we build a strong GAN completely free of convolutions? 论文地址:https://
论文精读 TransGAN:两个纯粹的Transformer可以组成一个强大的GAN(TransGAN:Two Pure Transformers Can Make One Strong GAN)
|
弹性计算 Ubuntu Linux
阿里云ECS服务器,如何一键部署幻兽帕鲁游戏教程
本文分享阿里云ECS服务器,如何一键部署幻兽帕鲁游戏教程。
582 5
|
SQL 弹性计算 分布式计算
DataWorks常见问题之网络一直不通如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
机器学习/深度学习 算法 vr&ar
【数学建模竞赛】预测类赛题常用算法解析
【数学建模竞赛】预测类赛题常用算法解析
521 0