v-bind 及 class 与 style 绑定

1. 绑定 class 的集中方式

1.1. 对象语法

给class设置一个对象,可以动态切换class。例如:

var app = new Vue({

el: '#app',

data: {

isActive: true

}

});

示例中,类名active依赖数据isActive,当isActive的值为true时,div标签会拥有active类,否者没有。最终渲染效果如下:

对象中也可以传入过个属性,可以动态切换class。此外,:class可以与普通class共存,例如:

var app = new Vue({

el: '#app',

data: {

isActive: true,

isError: false

}

});

当:class的表达式过长或者逻辑复杂时,还可以绑定一个计算属性,一般当条件多于两个小时,都可以使用data或computed,例如计算属性:

var app = new Vue({

el: '#app',

data: {

isActive: true,

error: null

},

computed: {

classes: function() {

return {

active: this.isActive && !this.error,

'text-fial': this.error && this.error.type === 'fial'

}

}

}

});

除了计算属性,还可以绑定一个Object类型的数据,或者使用类似计算属性的methods。

1.2. 数组语法

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

var app = new Vue({

el: '#app',

data: {

isActive: true,

error: null

},

computed: {

classes: function() {

return {

activeCls: 'active',

errorCls: 'error'

}

}

}

});

渲染结果为:

还可以使用三元表达式来切换class,例如:

var app = new Vue({

el: '#app',

data: {

isActive: true,

error: null

},

computed: {

classes: function() {

return {

isActive: true,

errorCls: 'error',

activeCls: 'active'

}

}

}

});

当然这样写也比较麻烦,可以在数组语法中使用对象语法:

var app = new Vue({

el: "#app",

data: {

isActive: true,

error: null

},

computed: {

classes: function() {

return {

isActive: true,

errorCls: "error"

};

}

}

});

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

1.3. 组件上使用

如果直接在自定义组件上使用class或:class,样式规则会直接应用到这个组件的根元素上,例如:

Vue.component("my-component", {

template: '

一些文本

'

});

var app = new Vue({

el: "#app",

data: {

isActive: true,

error: null

},

computed: {

classes: function() {

return {

isActive: true

};

}

}

});

最终渲染结果是:

一些文本

这种用法仅仅适合自定义组件的最外层是一个根元素,否者无效,当不满足这种条件还需要给子元素设置类名,那就需要借助于props来传递。

这种方式后续会讲解,此处不做详述。

1.4. 绑定内联样式

使用v-bind:style即:style可以给元素绑定内联样式,方法与:class类似,也有对象和数组语法。例如:

文本

Vue.component("my-component", {

template: '

一些文本

'

});

var app = new Vue({

el: "#app",

data: {

color: 'red',

fontSize: 14

}

});

CSS属性名称使用驼峰命名(camelCase)或短横线分隔命名(kebab-case),渲染后的结果为:

文本

很多时候样式都比较多,不方便维护,所以一般写在data或者computed里,以data为例改写示例:

文本

var app = new Vue({

el: "#app",

data: {

styles: {

color: 'red',

fontSize: 14 + 'px'

}

}

});

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

文本

在实际业务中,:style的数组语法并不常用,往往可以将样式写在一个对象里;比较常用的应当是计算属性。

2. 章节总结

本章主要讲了类名和样式的绑定,以及一个常用的绑定方式。在后面的内容中,将继续穿插使用这些特性。

当你的才华撑不起自己的野心,那就努力学习吧!

css vue 内联_04-Vue基础-css和内联样式绑定相关推荐

  1. Vue.js 极简小例: 4 种方式样式绑定、style 的多种方式实现

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 代码: <template><div id="app"> ...

  2. Vue实现集成使用第三方Animate.css动画库详细教程(解决鼠标移入移出闪烁问题)

    vue通过第三方集成Animate.css简单快速的实现动画,通过类名引用,可以轻松实现Animate的所有动画,Animate.css是一款强大的预设css3动画库,Animate.css内置了很多 ...

  3. CSS文档流与块级元素和内联元素

    文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不 ...

  4. Vue 基础之常用内置指令

    Vue 基础之常用内置指令 描述 指令 内容渲染指令 {{}} 与 v-text 覆盖面积 v-text {{}} 闪现问题 {{}} v-text v-html 属性绑定指令 v-bind 简写 : ...

  5. vue中使用woo.js + animate.css

    安装 npm install animate.css --save npm i wowjs 引入并绑定到原型方法 import 'animate.css' import wow from 'wowjs ...

  6. vue动态加载js和css以及部分页面加载特定的js和css

    vue动态加载js和css以及部分页面加载特定的js和css vue项目第一次加载很慢的,发现在第一次加载要很大的js导致卡顿.可以使用cdn加速和其他gzip方式效果不是很明显.因此考虑每个页面动态 ...

  7. css引入报错,vue项目通过import引入外部css报错怎么办

    vue项目通过import引入外部css报错的解决办法:首先在[webpack.config.js]中添加相关内容,添加后重新npm run dev:然后json文件中查看是否存在[css-loade ...

  8. Vue引用第三方动画库animate.css

    搜索animate.css - npm 进入它的主页,就可以看到很多动画样式 在vscode中安装animate.css 在使用的组件上引用它 给要使用的元素加上animata_animated an ...

  9. vue 引用网络css_Vue 引入外部CSS文件

    1. 使用@import引入 缺点 无法实现scoped,且比价浪费资源 请看以下代码,我们在一个scoped空间里引入外部css文件 export default { name: "use ...

  10. 【Vue.js 知识量化】基础语法

    Vue.js 基础语法 Vue.js 安装 插值操作 Mustache​:将 data 中的文本数据插入到 HTML v-once:使元素和组件只渲染一次 v-html:解析 HTML 并展示 v-t ...

最新文章

  1. npm构建脚本_NPM脚本简介
  2. 人类与AI结合的最佳形态是什么样?|A16Z内部万字报告
  3. android service 学习(上)
  4. php中的interface和implements及其他
  5. MongoDB GridFS——本质上是将一个文件分割为大小为256KB的chunks 每个chunk里会放md5标识 取文件的时候会将这些chunks合并为一个整体返回...
  6. python3.8.2安装教程-在服务器上安装python3.8.2环境的教程详解
  7. Mysql 授权控制
  8. Js中 call() 与 apply() exports
  9. C算法编程题(二)正螺旋
  10. 使用Docker构建Oracle ADF应用程序
  11. mysql循环建表_MySQL 开发准则(总结自阿里巴巴开发手册)
  12. Linux下的进程管理——task_struct
  13. 计算机配置主板技术参数,i9-7900X/7920X配什么主板好?i9-7920X/7900X主板搭配与参数详解...
  14. sqlite可视化工具sqliteman的问题
  15. Markdown文件的标题分级自动编号——Typora
  16. take apart /ke back等动词词组
  17. Base64加密和解密使用
  18. 卡农,用敬仰和泪水思念着你~~~~~
  19. 步步为营——局域网调试NAS软路由“PVE+爱快+lede+黑群晖硬盘直通”并移植到宽带网(超详细,上篇)
  20. 软件定义存储的头部厂商也来了,XSKY 星辰天合加入龙蜥社区

热门文章

  1. matlab2015 产品目录,MathWorks发布包含MATLAB和Simulink产品系列的 Release 2015b-EDA/PCB-与非网...
  2. jquery实现群星闪烁的效果
  3. html 手机端瀑布流,移动端 瀑布流布局
  4. android横向瀑布流布局,ReCyclerView实现瀑布流布局
  5. potPlayer-windows安装包,皮肤,配置及使用
  6. 接口测试系列——转转交易业务场景接口测试实践
  7. html华为手机兼容问题,华为手机不兼容储存卡么
  8. 操作系统、乱码、驱动、键盘失灵、win7
  9. Ubuntu wget命令错误
  10. 数独Sudoku(DFS)