指南
基础
- 安装
- 简介
- Vue 实例
- 模板语法
- 计算属性和侦听器
- 类和样式绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
组件深入
- 组件注册
- Props
- 自定义事件
- 插槽
- 动态和异步组件
- 处理边缘情况
过渡和动画
- 进入/离开和列表过渡
- 状态过渡
可重用性和组合
- 混入
- 自定义指令
- 渲染函数和 JSX
- 插件
- 过滤器
工具
- 单文件组件
- 测试
- TypeScript 支持
- 生产部署
扩展
- 路由
- 状态管理
- 服务器端渲染
- 安全
内部机制
- 深入响应性
迁移
- 从 Vue 1.x 迁移
- 从 Vue Router 0.7.x 迁移
- 从 Vuex 0.6.x 迁移到 1.0
- 迁移到 Vue 2.7
元数据
- 与其他框架的比较
- 加入 Vue.js 社区!
- 认识团队
类和样式绑定
数据绑定的一个常见需求是操作元素的类列表及其内联样式。由于它们都是属性,我们可以使用 v-bind
来处理它们:我们只需要使用表达式计算最终的字符串即可。但是,处理字符串连接很烦人且容易出错。为此,Vue 在 v-bind
用于 class
和 style
时提供了特殊的增强功能。除了字符串之外,表达式还可以计算为对象或数组。
绑定 HTML 类
对象语法
我们可以将一个对象传递给 v-bind:class
以动态切换类
|
上面的语法意味着 active
类的存在将由数据属性 isActive
的 真值 决定。
你可以通过在对象中添加更多字段来切换多个类。此外,v-bind:class
指令也可以与普通的 class
属性共存。因此,给定以下模板
|
以及以下数据
|
它将渲染
|
当 isActive
或 hasError
发生变化时,类列表将相应更新。例如,如果 hasError
变成 true
,类列表将变成 "static active text-danger"
。
绑定的对象不必是内联的
|
|
这将渲染相同的结果。我们也可以绑定到一个 计算属性,该属性返回一个对象。这是一个常见且强大的模式
|
|
数组语法
我们可以将一个数组传递给 v-bind:class
以应用一个类列表
|
|
这将渲染
|
如果你想在列表中也根据条件切换一个类,你可以使用三元表达式
|
这将始终应用 errorClass
,但只有在 isActive
为真值时才会应用 activeClass
。
但是,如果你有多个条件类,这可能有点冗长。这就是为什么在数组语法中也可以使用对象语法的原因
|
使用组件
本节假设你了解 Vue 组件。你可以跳过它,稍后再回来。
当你对自定义组件使用 class
属性时,这些类将被添加到组件的根元素。此元素上的现有类不会被覆盖。
例如,如果你声明了这个组件
|
然后在使用它时添加一些类
|
渲染的 HTML 将是
|
类绑定也是如此
|
当 isActive
为真值时,渲染的 HTML 将是
|
绑定内联样式
对象语法
v-bind:style
的对象语法非常简单 - 它看起来几乎像 CSS,只是它是一个 JavaScript 对象。你可以使用 camelCase 或 kebab-case(使用 kebab-case 时使用引号)作为 CSS 属性名称
|
|
直接绑定到样式对象通常是一个好主意,这样模板会更简洁
|
|
同样,对象语法通常与返回对象的计算属性一起使用。
数组语法
v-bind:style
的数组语法允许你将多个样式对象应用于同一个元素
|
自动添加前缀
当你使用 v-bind:style
中需要 供应商前缀 的 CSS 属性时,例如 transform
,Vue 将自动检测并添加适当的前缀到应用的样式中。
多个值
2.3.0+
从 2.3.0+ 开始,你可以为样式属性提供多个(带前缀的)值的数组,例如
|
这将只渲染数组中的最后一个值,该值是浏览器支持的。在这个例子中,它将为支持无前缀版本的 flexbox 的浏览器渲染 display: flex
。