vue.js实战学习——v-bind 及class与 style绑定

注:此内容摘抄自:梁灏的《Vue.js实战》

注:记得要引入vue.js才能运行哦,文章中贴出的代码直接复制是不行的,html css js 都放在了一起,而且也没有引用vue.js。

DOM元素经常会动态的绑定一些class类名或style样式。

1.了解v-bind指令

它的主要用法是动态更新HTML元素上的属性。

在数据绑定中,最常见的两个需求就是元素的样式名称class和内联样式style的动态绑定,他们也是HTML的属性,因此可以使用v-bind指令。我们只需要用v-bind计算出表达式最终的字符串就可以,不过有时候表达式的逻辑比较复杂时,使用字符串拼接较难阅读和维护,所以Vue.js增强了对class和style的绑定。

2.绑定class的几种方式

2-1.对象语法

给v-bind:class设置一个对象,可以动态的切换class

<div class="app1">
    <div :class="{‘active‘:isActive}">我真的是黑色的!</div>
</div>

var app1=new Vue({
    el:‘.app1‘,
    data:{
        isActive:true
    }
});

上面的实例中,类名active依赖于数据isActive,当其为true时,div会拥有类名isActive,为false时则没有。

对象中也可以传入多个属性,来动态切换class。另外,:class 可以和普通的class共存

<div class="app2">
    <div class="static" :class="classes">我本来是黑色的……</div>
</div>

var app2=new Vue({
    el:‘.app2‘,
    data:{
        isActive:true,
        error:null
    },
    computed:{
        classes:function(){
            return {
                active:this.isActive && !this.error,
                ‘text-fail‘:this.error && this.error.type===‘fail‘
            }
        }
    }
});

当:class 的表达式过长或逻辑复杂时,还可以绑定一个计算属性,这是一种很友好和常见的用法,一把的那个条件多余两个时,都可以使用data或computed,上面的例子就是用使用的计算属性。

2-2.数组语法

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

<div class="app3">
    <div :class="[isActive ? activeCls:‘ ‘,errorCls]">三元表达式</div>
</div>

var app3=new Vue({
    el:‘.app3‘,
    data:{
        isActive:true,
        activeCls:‘active‘,
        errorCls:‘error‘
    }
});

也可以使用三元表达式来根据条件切换class,如上。

样式error会始终应用,当数据isActive为真时,样式activeCls才会被应用。class有多个条件时,这样写会比较烦琐,可以在数组语法中使用对象语法。

<div class="app4">
    <div :class="[{‘active‘:isActive},errorCls,classes]">我看看</div>
</div>

var app4=new Vue({
    el:‘.app4‘,
    data:{
        isActive:true,
        errorCls:‘error‘,
        size:‘large‘,
        disabled:true
    },
    computed:{
        classes:function(){
            return [
                ‘btn‘,
                {
                    [‘btn-‘+this.size]:this.size!==‘‘,
                    [‘btn-disabled‘]:this.disabled
                }
            ]
        }
    }
});         

当然,与对象语法一样,也可以使用data、computed和methods三种方法,如上。

2-3.在组件上使用

组件后面会讲,这里就不介绍了,跳过。

3.绑定内联样式

使用v-bind:style(即  :style)可以给元素绑定内联样式,方法与 :class 类似,也有对象语法和数组语法,看起来很像直接现在元素上写CSS

<div class="app5">
    <div :style="{‘color‘:color,‘fontSize‘:fontSize+‘px‘}">文本</div>
</div>

var app5=new Vue({
    el:‘.app5‘,
    data:{
        color:‘red‘,
        fontSize:14
    }
});

CSS属性名称使用驼峰命名或短横分格。

大多数情况下,直接写一长串的样式不便于阅读和维护,所以一般写在data或computed里

<div class="app6">
    <div :style="styles">文本</div>
</div>

var app6=new Vue({
    el:‘.app6‘,
    data:{
        styles:{
            color:‘red‘,
            fontSize:14+‘px‘
        }
    }
})

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

另外,使用 :style  时,Vue.js会自动给特殊的CSS属性名称增加前缀,比如transform。

最后给出今天要用到的所有css

<style type="text/css">
    .active{
        color:blueviolet;
        border: 2px solid #00f;
    }
    .error{
        color:red;
    }
    .static{
        background: #0f0;
    }
    .btn{
        outline: dashed;
    }
    .btn-large{
        background:#ddd ;
    }
    .btn-disabled{
        text-decoration:underline ;
    }
</style>

注:此内容摘抄自:梁灏的《Vue.js实战》

时间: 2024-10-30 07:25:49

vue.js实战学习——v-bind 及class与 style绑定的相关文章

vue.js实战学习——指令与事件

注:此内容摘抄自:梁灏的<Vue.js实战> 1.指令是Vue.js模版中最常用的一项功能,它带有前缀 v- ,比如:v-if , v-html ,v-pre 等.指令的主要职责就是当其表达式的值改变时,相应的将某些行为应用到DOM上. <div class="app1"> <p v-if="show">哈喽?</p> </div> var app=new Vue({ el:'.app1', data:{

vue.js实战学习——内置指令(一)

注:此内容摘抄自:梁灏的<Vue.js实战> 注:记得要引入vue.js才能运行哦,文章中贴出的代码直接复制是不行的,html css js 都放在了一起,而且也没有引用vue.js.   1.v-cloak v-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display:none: 配合使用. <div class="app1" v-cloak> {{message}} </div> var app1

vue.js功能学习

vue.js是一个MVVM的框架,理解MVVM有利于学习vue.js. MVVM 拆分解释为: Model: 负责数据存储 View: 负责页面展示 View Model: 负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示 MVVM 要解决的问题是将业务逻辑代码与视图代码进行完全分离,使各自的职责更加清晰,后期代码维护更加简单 用图解的形式分析 Ajax请求回来数据后直接操作Dom来达到视图的更新的缺点,以及使用MVVM模式是如何来解决这个缺点的 Vue 中的 MVVM vu

热烈庆祝《Vue.js 实战教程 V2.x(一)基础篇》上线了!

课程简介 课程地址:https://ke.qq.com/course/432961 机构名称:大华软件学院 授课讲师:大强老师 课程名称:Vue.js 实战教程 V2.x(一)基础篇 课程简介:包括前端发展史.Vue.js简介.第一个Vue.js程序.安装环境和Vue.Vue实例.模板语法.计算属性和侦听器.Class与Style绑定.条件渲染.列表渲染.事件处理.表单输入绑定.组件基础等等. 适合人群: 1.初出茅庐,想学习前端开发的同学: 2.没用过Vue.js,想学习更多框架的同学: 3.

Vue.js 基础学习

今天我开始了Vue.js 的学习. 那么什么是Vue.js 呢? Vue.js是一套开发Web页面的JavaScript脚本框架.听起来感觉很难,不过据说,Vue.js是Web-Javascript脚本框架中最容易上手的框架.所以我便选择了先来学习这个. 要学习Vue.js首先就要获取库文件了,在网上有很多地方可以找到,我是在bootcdn上找到的 接下来我们通过Vue输出一串Hello World ! 首先引入vue. <script src="https://cdn.bootcss.c

vue.js的学习总结

一.vue.js的简介 vue.js是一套用于构建用户界面的渐进式框架.具体简介参考官方介绍,https://cn.vuejs.org/v2/guide/. 二.使用vue.js的学习总结 1.v-model在表单控件或者组件上创建双向绑定.随表单控件类型不同而不同.但是除表单以外就不能使用双向绑定,比如说表格中的标签不能使用v-model进行双向绑定,只能让数据从后台到前台单向的传输,展示用双花括号. 2.创建vue对象后自定义的方法需要写在methods中,方法中支持$.get()和$.aj

vue.js实战——购物车练习(包含全选功能)

vue.js实战第5章 54页的练习1 直接放代码好了,全选的部分搞了好久,代码好像有点啰嗦,好在实现功能了(*^▽^*) HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-sca

Vue.js 实战教程 V2.x(13)事件处理

13组件基础 13.1基本示例 Vue 组件的示例: // 定义一个名为 button-counter 的新组件 Vue.component('button-counter', { data: function () { return { count: 0 } }, template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>' }) 组件是可复用的 Vue

vue.js的学习

首先Vue.js是一个组件 他依赖于nodejs环境和npm   所以我们要先安装nodejs  npm也是依赖于nodejs的 对于nodejs呢   它有不同的版本   奇数版本不稳定  所以采用偶数版本   而我学习的是慕课网   它所用的是10版本  并且我们知道  版本必须是和api相匹配的 接下来呢我们就要按照nodejs'的安装先进行了  首先进入nodejs的官网下载  根据位数下载  我下载的是64位的  然后安装  安装时如果是自己的电脑建议直接用默认路径就是C盘   因为方