DOM元素经常会动态地绑定一些class类名或style样式。

基本用法

<div id="app">
<a v-bind:href="url">链接</a>
<img v-bind:src="imgUrl">
<!-- 缩写为 -->
<a :href="url">链接</a>
<img :src="imgUrl">
</div>
<script>
var app = new Vue({
el: '#app',
data: {
url:'https://www.github.com',
imgUrl:'http://xxx.xx/img.png'
}
})
</script>

  链接的href属性和图片的src属性都被动态设置了,当数据变化时,就会重新渲染。

  在数据绑定中,最常见的两个需求就是元素的样式名称class和内联样式style的动态绑定,它们也是HTML的属性,因此可以使用v-bind指令。我们只需要用v-bind计算出表达式最终的字符串就可以,不过有时候表达式的逻辑比较复杂,使用字符串拼接方法较难维护和阅读,所以Vue.js增强了对class和style的绑定。

绑定class

1.对象语法

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

<div id="app">
<div :class="{'active':isActive}"></div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
isActive:true
}
})
</script>

  上面的示例中,类名active依赖于数据isActive,当其为true时,div会拥有类名Active,为false时则没有,所以上例最终渲染完的结果是:

<div :class="active"></div>

  对象中也可以传入多个属性,来动态切换class。另外。:class可以与普通class共存。

<div id="app">
<div class="static" :class="{'active':isActive,'error':isError}"></div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
isActive:true,
isError:false
}
})
</script>

  :class内的表达式每项为真时,对应的类名就会加载,上面渲染后的结果为:

<div :class="static active"></div>

  当数据isActive或isError变化时,对应的class类名也会更新。比如当isError为true时,渲染后的结果为:

<div :class="static active error"></div>

  当:class的表达式过长或逻辑复杂时,还可以绑定一个计算属性,这是一种很友好和常见的用法,一般当条件多于两个时,都可以使用data或computed

<div id="app">
<div :class="classes"></div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
isActive:true,
error:null
},
computed:{
classes: function(){
active:this.isActive && !this.error,
'text-fail':this.error && this.error.type === 'fail'
}
}
})
</script>

2.数组语法

  当需要应用多个class时,可以使用数组语法,给:class绑定一个数组,应用一个class列表:

<div id="app">
<div :class="[activeCls,errorCls]"></div>
</div>

  使用计算属性给元素动态设置类名,在业务中经常用到,尤其是在写复用的组件时,所以在开发过程中,如果表达式较长或逻辑复杂,应该尽可能地优先使用计算属性。

绑定内联样式

  使用v-bind:style(即:style)可以给元素绑定内联样式,方法与:class类似。

<div id="app">
<div :style="{'color':color, 'fontSize': fontSize + 'px'}">文本</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
color:'red',
fontSize:14
}
})
</script>

  CSS属性名称使用驼峰命名或短横分隔命名,渲染后的结果为:

<div style="color:red; font-size:14px;"></div>

  大多数情况下,直接写一长串的样式不便于阅读和维护,所以一般写在data或computed里。

<div id="app">
<div :style="styles">文本</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
styles: {
color:'red',
fontSize:14 + 'px'
}
}
})
</script>

  应用多个样式对象时,可以使用数组语法:

<div :style="[styleA,styleB]">文本</div>

  使用:style时,Vue.js会自动给特殊的CSS属性名称增加前缀,比如transform。

Vue 2.0学习(五)v-bind及class与style绑定的更多相关文章

  1. Vue学习笔记-Vue.js-2.X 学习(五)===>脚手架Vue-CLI(PyCharm)

    Vue项目在pycharm中配置 退出运行: ctrl+c Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明)

  2. Vue学习计划基础笔记(三)-class与style绑定,条件渲染和列表渲染

    Class与style绑定.条件渲染和列表渲染 目标: 熟练使用class与style绑定的多种方式 熟悉v-if与v-for的用法,以及v-if和v-for一起使用的注意事项 class与style ...

  3. Vue学习(二):class与style绑定

    <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml&q ...

  4. Vue 2.0 学习路线

    「 Vue很难学吗 」 对于我这种从0.x版本就开始体验 vuejs 的人来说,当然不算难,那时候没各种脚手架和复杂搭配,仅仅是一个mvvm的解决方案库而已,解决了jq带来的繁琐操作dom痛点,所以就 ...

  5. Vue 2.0学习(七)方法与事件

    基本用法 以监听一个按钮的点击事件为例,设计一个计数器,每次点击都加1: <div id = "app"> 点击次数:{{ counter }} <button ...

  6. Vue 2.0学习(四)计算属性

    {{}}模板内的表达式常用于简单的运算,当运算过长或逻辑复杂时,会难以维护. <div> {{ text.split(',').reverse().join('') }} </div ...

  7. Vue 2.0学习(二)数据绑定

    Vue实例对象 创建一个vue应用很简单,通过构造函数Vue就能创建一个Vue的根实例: var app = new Vue({ el: '#app', data: { message: 'Hello ...

  8. Vue 2.0学习(一)简介

    简介 Vue是一套用于构建用户界面的渐进式框架.简单小巧( 压缩后仅17KB),Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手,还便于与第三方库或既 ...

  9. Vue 2.0学习(六)内置指令

    基本指令 1.v-cloak v-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display:none配合使用. <div id="ap ...

随机推荐

  1. JAVA多线程基础学习三:volatile关键字

    Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个 ...

  2. windows 安装elasticsearch-head插件

    es5以上版本安装head需要安装node和grunt(之前的直接用plugin命令即可安装) (一)从地址:https://nodejs.org/en/download/ 下载相应系统的msi,双击 ...

  3. LintCode之二叉树的最大节点

    分治问题,可以把整棵树看做是由一颗颗只有三个节点组成的小树,一颗树的构成是根节点.左子树.右子树,这样只需要从左子树找出一个最大的节点,从右子树找出一个最大的节点,然后与根节点三个取个最大的,就是最终 ...

  4. python常用库之base64

    1. 什么是base64 base64是一种将不可见字符转换为可见字符的编码方式. 2. 如何使用 最简单的使用方式 import base64 if __name__ == '__main__': ...

  5. Vue修改mint-ui默认样式(默认风格)

    加入my-mint.css 我这里用的postcss的变量定义,如果亲们用的是其他预处理器,要改成其他处理器的定义方式 覆盖mint-ui的primary颜色,改为自己UI的主题色 --main-co ...

  6. 深入理解Spring系列之四:BeanDefinition装载前奏曲

    转载 https://mp.weixin.qq.com/s?__biz=MzI0NjUxNTY5Nw==&mid=2247483835&idx=1&sn=276911368d4 ...

  7. ActiveMQ-Prefetch机制和constantPendingMessageLimitStrategy

    首先简要介绍一下prefetch机制.ActiveMQ通过prefetch机制来提高性能,这意味这 客户端的内存里可能会缓存一定数量的消息.缓存消息的数量由prefetch limit来控 制.当某个 ...

  8. 用于启动 Windows Phone 8 内置应用的 URI 方案

    本主题列出了可用于启动内置应用的 URI 方案.许多内置于 Windows Phone 的应用,都可以通过调用 LaunchUriAsync(Uri) 和传入一个使用与要启动应用相关的方案的 URI, ...

  9. Oracle常用sql语句(三)之子查询

    子查询 子查询要解决的问题,不能一步求解 分为: 单行子查询 多行子查询 语法: SELECT select_list FROM table WHERE expr operator (SELECT s ...

  10. Bootstrap开发模板

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...