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. 在外网使用ssh连接内网中的多台Linux服务器

    最近因为要对全球工控机网络进行协议扫描,需要在实验室配置几台服务器,因为我们只有一个IP地址,所以是用路由器搭建了一个内网(拓扑结构如下图).但是这样做了之后无法在宿舍通过ssh直接连接服务器,因为那 ...

  2. iOS网络基础---iOS-Apple苹果官方文档翻译

    CHENYILONG Blog iOS网络基础---iOS-Apple苹果官方文档翻译 iOS网络基础 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http: ...

  3. HDU 1081 To The Max (dp)

    题目链接 Problem Description Given a two-dimensional array of positive and negative integers, a sub-rect ...

  4. Xcode下 gdb 调试命令

    Xcode的调试器为用户提供了一个GDB的图形化界面,GDB是GNU组织的开放源代码调试器.您可以在Xcode的图形界面里做任何事情:但是,如果您需要您可以在命令行里使用GDB的命令,且gdb可以在终 ...

  5. AUC画图与计算

    利用sklearn画AUC曲线 from sklearn.metrics import roc_curve labels=[1,1,0,0,1] preds=[0.8,0.7,0.3,0.6,0.5] ...

  6. tp5 r3 一个简单的SQL语句调试实例

    tp5 r3 一个简单的SQL语句调试实例先看效果核心代码 public function index() { if (IS_AJAX && session("uid&quo ...

  7. Linux下用到数据库sqlite3

    最近在Linux下用到数据库sqlite3,于是开始了该方面的学习. 0. 引言 我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理, 包括创建数据库.创建 ...

  8. MGR Switch single-Primary to Muti_primary

    MGR single_primary 切换 Muti-Primary 模式 root@localhost [(none)]>select * from performance_schema.re ...

  9. pip安装使用详解【转】

    转自:pip安装使用详解 – 运维生存时间http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa/ pip类似RedHat里面的yum ...

  10. HDU 6201 2017沈阳网络赛 树形DP或者SPFA最长路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6201 题意:给出一棵树,每个点有一个权值,代表商品的售价,树上每一条边上也有一个权值,代表从这条边经过 ...