在第六节《教你如何在html中绑定数据》的章节中,我们学会了如何给视图上的html标签绑定属性。

比如,给 <a> 标签绑定href属性,简单回忆一下:

 <!-- v-bind指令 --> <a v-bind:href="link"></a>

 <!-- v-bind的缩写 --> <a :href="link"></a>

我们用 v-bind 指令(以后都用缩写的形式)来动态绑定一个标签的属性。

而这一节,我们特意来学习一下样式的动态绑定,因为它与普通属性的绑定略有不同,并且在实际开发中,动态绑定样式是一定会用到的知识,所以,还是值得我们用一个章节来学习一下它。

老办法,我们先来准备一个vue实例:

 <div id="app">   <p>这是文字</p> </div> <script>    //创建一个实例vm    const vm = new Vue({        el:"#app",        data:{}    }); </script>

绑定class

对象语法:我们动态绑定的class的值是一个对象{ },具体怎么写我们来看看,在上面的代码上稍做修改:

 <div id="app">   <p :class="{'active':isActive}">这是文字</p> </div> <script>    //创建一个实例vm    const vm = new Vue({        el:"#app",        data:{            isActive:true        }    }); </script>

我们看到给class绑定的是一个对象:{ ‘active’ : isActive }isActive是我们vm实例的数据,值为true,这与我们平时看到的class是一个字符串值不一样,这种写法,最后会被渲染成什么样呢?

我们运行看看渲染后的效果:

咦?class的值最后被渲染成:“active”,原来,在对象中,若该属性对应的value为true,则该属性会被渲染出来,为false,则被渲染出来。

我们尽快验证一下,我们在上面的代码上再稍作修改:

 <p :class="{        'active':isActive,        'danger':isDanger,        'error':isError }">这是文字</p>

我们给class绑定的对象多了2个key和value,我们看看实例的数据data:

 data:{    isActive:true,    isDanger:true,    isError:false }

isActiveisDanger的值都为true,isError都为false,猜一下,渲染出来的结果是什么?

看效果:

正和我们所预测的一样,值为true的会被成功渲染出来,为false的则不会被渲染出来。这个时候,你就可以根据需要给渲染出来的class编写样式了。

一旦vm实例对应的数据发生变化,比如isActive的值由true变成false,视图上的’active’ 类也会被删除,这样就会实现动态绑定样式啦!

除了对象语法来绑定class之外,我们还有另一种写法。

数组语法:用数组语法和对象语法来绑定class,又稍有不同。说了是数组语法,那写法就肯定不一样,我们继续来看看:

 <p :class="[activeClass,errorClass]">    这是文字 </p>

这个时候,class绑定的值就是一个数组了,数组有两个元素[ activeClass , errorClass ],它们对应的值是vm实例的数据data,我们看看vm的数据data:

 data:{    activeClass:'active',    errorClass:'error' }

渲染的时候,activeClasserrorClass对应的值就会被渲染成class。看效果图:

效果跟我们预期一样。这样,我们就可以修改vm实例的数据data,来实现动态修改class的样式了。

绑定内联样式style

除了使用class类以外,我们还可以在style内联样式上下功夫。

绑定内联样式也有2种语法,对象语法和数组语法,但我们这里只介绍常用的对象语法。

 <p :style="{color:colorStyle}">   这是文字 </p> 

这个时候,我们绑定的就不是class了,是style属性。它的值是一个对象:{ color:colorStyle },同样,我们来看看vm实例的数据data:

 data:{    colorStyle:'red' } 

原来colorStyle我们vm实例的数据,值为red。那是不是我们style中的color对应的颜色是就是red呢?

没错,看来你已经会举一反三了。 看渲染效果,我们验证一样:

没毛病,成功渲染成:style=”color:red”。

因此,我们同样可以修改vm实例的数据data,来实现动态修改视图央视的效果。

本节小结

采取动态绑定class还是动态内联样式style,这个要根据需求分析来具体确定。但较为常用的还是使用绑定class。

扩展阅读

1.《ECMAScript 6 系列》原创教程

第十一节:动态绑定class和style相关推荐

  1. 第三百九十一节,Django+Xadmin打造上线标准的在线教育平台—404,403,500页面配置...

    第三百九十一节,Django+Xadmin打造上线标准的在线教育平台-404,403,500页面配置 路由映射 在全局也就是根目录里的urls.py里配置404路由映射 注意:不是写在urlpatte ...

  2. 第二百四十一节,Bootstrap进度条媒体对象和 Well 组件

    第二百四十一节,Bootstrap进度条媒体对象和 Well 组件 学习要点: 1.Well 组件 2.进度条组件 3.媒体对象组件 本节课我们主要学习一下 Bootstrap 的三个组件功能:Wel ...

  3. vue.js项目实战运用篇之抖音视频APP-第十一节: 注册登录及验证码功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  4. 《从0到1上线微信小游戏》第十一节 接入微信小游戏广告

    第十一节 接入微信小游戏广告 申请公测 开通流量主并创建广告位 广告代码接入实战 广告组件审核 接入广告是小游戏实现盈利的一种方式.笔者会在这一小节讲解如何接入,并列出接入时需要注意的一些问题. 申请 ...

  5. 大白话5分钟带你走进人工智能-第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6)...

                                第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6) 我们回忆一下,之前咱们讲什么了?梯度下降,那么梯度下降是一种什么算法呢?函数最优化 ...

  6. Python编程基础:第五十一节 将函数赋值给变量Assign Functions to Variables

    第五十一节 将函数赋值给变量Assign Functions to Variables 前言 实践 前言 简而言之,将函数赋值给变量就是为函数重命名,定义方式为新的函数名称=旧的函数名称,重命名后的新 ...

  7. Python编程基础:第三十一节 文件读取Read a File

    第三十一节 文件读取Read a File 前言 实践 前言 当我们检测到文件之后就可以读取其中的内容,读取所用到的函数是read(). 实践 我们依然以上一节的lyric.txt为例展示如何读取文件 ...

  8. Python编程基础:第二十一节 函数返回Return

    第二十一节 函数返回Return 前言 实践 前言 编程往往是用于实现某种计算并将计算结果进行返回,例如我们定义了一个函数用于计算两个数的和,那么最终的目的是将计算结果返回给用户.所以我们这里要进一步 ...

  9. Python编程基础:第十一节 for循环For Loops

    第十一节 for循环For Loops 前言 实践 前言 比起while循环,我们可能对for循环更加熟悉.在for循环中我们可以更方便地控制循环次数以及终止条件.本节中我们以倒计时为例介绍for循环 ...

  10. 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解

       第二十一节 牛顿法和L-BFGS求函数最优解 这一节中,我们讲解一个新的求函数最优化的方法就是L-BFGS.以下是本节目录.            目录 1-L-BFGS算法简介 2-牛顿法求根 ...

最新文章

  1. 339所!中国内地高校ESI排名出炉:国科大、清华、北大位列前三!
  2. 什么是线程安全,你真的了解吗?
  3. python 扯线木偶_Python计算器求助~求大神指导~QAQ急!
  4. leetcode刷题 2.两数相加
  5. 网络通信 route(公司局域网配置)
  6. 华为机试HJ35:蛇形矩阵
  7. 1-22 在“终端”里,运行“top”命令
  8. 软件基本功:开发测试中的穷举归纳法
  9. 单片机与PC通信:USB转TTL、USB转RS232、RS232转TTL等情况的分析
  10. 关于ele框架样式修改
  11. 100M宽带能下载多快? 关于带宽的下载速度研究
  12. java实现积分抽奖_java毕业设计_springboot框架的超市消费积分抽奖
  13. oracle删sequen,Oracle中如何创建使用SEQUENCES
  14. 深圳大学物计算机黄yilin,中国科学引文数据库(CSCD)收录本校教师论文情况.doc...
  15. html背景音乐教程pdf,HTML插入背景音乐方法【全】
  16. win10家庭版系统 修改docker为国内镜像
  17. 雪花飘落代码java_JS实现的雪花飘落特效示例
  18. 全面质量管理理论中的五个影响产品质量的主要因素
  19. 独数,python,C代码实现
  20. NVIDIA Jetson TX2 解决奥比中光 Astra pro相机的ros 打不开深度信息/camera/depth/image

热门文章

  1. 作者:鲍玉斌(1968-),男,博士,东北大学计算机科学系教授
  2. “大数据标准”征稿通知
  3. 作者:王海洋(1980-),男,中国科学院计算技术研究所网络数据科学与技术重点实验室、烟台中科网络技术研究所工程师。...
  4. 作者:孔新川,杭州迈宁数据科技有限公司创始人、CEO。
  5. 《大数据》第2期“应用”——医疗健康大数据:应用实例与系统分析
  6. 火柴棒等式(洛谷P1149题题解,Java语言描述)
  7. 埃氏筛秒素数题(洛谷P5723题题解,Java语言描述)
  8. 【Java】对JTable里的元素进行排序
  9. 在SharePoint网站中访问Webservice被拒绝的解决方法
  10. Swift教程之继承