码迷,mamicode.com
首页 > 其他好文 > 详细

5.7v-bind

时间:2020-04-15 21:15:28      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:开发   技术   作用   over   btn   base   对象类型   head   数组   

v-bind

基础

前面我们学习的指令主要作用是将值插入到我们模板的内容当中.

? ?

但是, 除了内容需要动态来决定外, 某些属性我们也希望动态来绑定.

? ?

比如动态绑定a元素的href属性

比如动态绑定img元素的src属性

这个时候, 我们可以使用v-bind指令:

作用: 动态绑定属性

缩写: :

预期: any (with argument) | Object (without argument)

参数: attrOrProp (optional)

? ?

v-bind用于绑定一个或多个属性值, 或者向另一个组件传递props值(这个学到组件时再介绍)

? ?

在开发中, 有哪些属性需要动态进行绑定呢?

? ?

还是有很多的, 比如图片的链接src, 网站的链接href, 动态绑定一些类, 样式等等

比如通过Vue实例中的data绑定元素的src和href, 代码如下:

? ?

技术图片

? ?

技术图片

? ?

v-bind语法糖

v-bind有一个对应的语法糖, 也就是简写方式

在开发中, 我们通常会使用语法糖的形式, 因为这样更加简洁.

简写方式如下:

? ?

技术图片

? ?

v-bind绑定class

很多时候, 我们希望动态的来切换class, 比如:

当数据为某个状态时, 字体显示红色.

当数据另一个状态时, 字体显示黑色.

绑定class有两种方式:

对象语法

数组语法

(1)绑定方式: 对象语法

? ?

对象语法的含义是:class后面跟的是一个对象.

对象语法有下面这些用法:

? ?

用法一: 直接通过{}绑定一个类

<h2 :class="{‘active‘: isActive}">Hello World</h2>

? ?

用法二: 也可以通过判断, 传入多个值

<h2 :class="{‘active‘: isActive, ‘line‘: isLine}">Hello World</h2>

? ?

用法三: 和普通的类同时存在, 并不冲突

注: 如果isActive和isLine都为true, 那么会有title/active/line三个类

<h2 class="title" :class="{‘active‘: isActive, ‘line‘: isLine}">Hello World</h2>

? ?

用法四: 如果过于复杂, 可以放在一个methods或者computed中

注: classes是一个计算属性

<h2 class="title" :class="classes">Hello World</h2>

? ?

技术图片

? ?

(2)绑定方式: 数组语法

? ?

数组语法的含义是:class后面跟的是一个数组.

数组语法有下面这些用法:

? ?

用法一: 直接通过{}绑定一个类

<h2 :class="[‘active‘]">Hello World</h2>

? ?

用法二: 也可以传入多个值

<h2 :class="[‘active‘, ‘line‘]">Hello World</h2>

? ?

用法三: 和普通的类同时存在, 并不冲突

注: 会有title/active/line三个类

<h2 class="title" :class="[‘active‘, ‘line‘]">Hello World</h2>

? ?

用法四: 如果过于复杂, 可以放在一个methods或者computed中

注: classes是一个计算属性

<h2 class="title" :class="classes">Hello World</h2>

? ?

技术图片

? ?

? ?

案例: vue v-for出来的列表, 点击当前, 当前被点击的字体变颜色

? ?

<!DOCTYPE html>

<html lang="en">

? ?

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

<style>

.active {

color: red;

}

</style>

<script src="../../js/vue.js"></script>

</head>

? ?

<body>

<div id="app">

<ul>

<li v-for="(m,item) in movies">

<a @click="btnClick(item)" :key="item" :class="{active:i===item}">{{item}}--{{m}}</a></li>

</ul>

</div>

? ?

<script>

//创建Vue实例,得到 ViewModel

var vm = new Vue({

el: ‘#app‘,

data: {

movies: [‘海王‘, ‘星际穿越‘, ‘大话西游‘, ‘少年派‘, ‘盗梦空间‘],

i: 0,

},

methods: {

btnClick: function (index) {

this.i = index;

},

}

});

</script>

</body>

? ?

</html>

v-bind 动态绑定style

我们可以利用v-bind:style来绑定一些CSS内联样式.

? ?

在写CSS属性名的时候, 比如font-size

? ?

我们可以使用驼峰式 (camelCase) fontSize

或短横线分隔 (kebab-case, 记得用单引号括起来) ‘font-size‘

绑定class有两种方式:

? ?

对象语法

数组语法

(1)绑定方式一: 对象语法

? ?

:style="{color: currentColor, fontSize: fontSize + ‘px‘}"

? ?

style后面跟的是一个对象类型

? ?

对象的key是CSS属性名称

对象的value是具体赋的值, 值可以来自于data中的属性

(2)绑定方式二: 数组语法

? ?

<div v-bind:style="[baseStyles, overridingStyles]"></div>

? ?

style后面跟的是一个数组类型

? ?

多个值以","分割即可

5.7v-bind

标签:开发   技术   作用   over   btn   base   对象类型   head   数组   

原文地址:https://www.cnblogs.com/edfg/p/12708273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!