zoukankan      html  css  js  c++  java
  • 508 v-bind:基础,语法糖,绑定class,绑定style

    v-bind介绍

    前面我们学习的指令主要作用是将值插入到我们模板的内容当中。
    但是,除了内容需要动态来决定外,某些属性我们也希望动态来绑定。

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

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

    作用:动态绑定属性
    缩写:
    预期:any (with argument) | Object (without argument)
    参数:attrOrProp (optional)

    下面,我们就具体来学习v-bind的使用。


    v-bind基础

    v-bind用于绑定一个或多个属性值,或者向另一个组件传递props值(这个学到组件时再介绍)
    我的补充:v-bind属性值可以不是变量:

    {{msg}}

    ,.bd {background-color: pink;}

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

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

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


    v-bind语法糖

    v-bind有一个对应的语法糖,也就是简写方式
    在开发中,我们通常会使用语法糖的形式,因为这样更加简洁。
    简写方式如下:


    v-bind绑定class(一)

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

    • 当数据为某个状态时,字体显示红色。
    • 当数据另一个状态时,字体显示黑色。

    绑定class有两种方式:

    • 对象语法
    • 数组语法
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    
    <body>
    
        <div id="app">
            <!-- 错误的做法: 这里不可以使用mustache语法-->
            <!--<img src="{{imgURL}}" alt="">-->
            <!-- 正确的做法: 使用v-bind指令 -->
            <img v-bind:src="imgURL" alt="">
            <a v-bind:href="aHref">百度一下</a>
            <!--<h2>{{}}</h2>-->
    
            <!--语法糖的写法-->
            <img :src="imgURL" alt="">
            <a :href="aHref">百度一下</a>
        </div>
    
        <script src="../js/vue.js"></script>
        <script>
            const app = new Vue({
                el: '#app',
                data: {
                    message: '你好啊',
                    imgURL: 'https://img11.360buyimg.com/mobilecms/s350x250_jfs/t1/20559/1/1424/73138/5c125595E3cbaa3c8/74fc2f84e53a9c23.jpg!q90!cc_350x250.webp',
                    aHref: 'http://www.baidu.com'
                }
            })
        </script>
    
    </body>
    
    </html>
    

    v-bind绑定class(二)

    绑定方式:对象语法

    • 对象语法的含义是: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>
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <style>
            .active {
                color: red;
            }
        </style>
    </head>
    
    <body>
        <div id="app">
            <!--<h2 class="active">{{message}}</h2>-->
            <!--<h2 :class="active">{{message}}</h2>-->
    
            <!--<h2 v-bind:class="{key1: value1, key2: value2}">{{message}}</h2>-->
            <!--<h2 v-bind:class="{类名1: true, 类名2: boolean}">{{message}}</h2>-->
            <h2 class="title" v-bind:class="{active: isActive, line: isLine}">{{message}}</h2>
            <!-- 这里getClasses要加括号()才能调用 -->
            <h2 class="title" v-bind:class="getClasses()">{{message}}</h2>
            <button v-on:click="btnClick">按钮</button>
        </div>
    
        <script src="../js/vue.js"></script>
        <script>
            const app = new Vue({
                el: '#app',
                data: {
                    message: '你好啊',
                    isActive: true,
                    isLine: true
                },
                methods: {
                    btnClick: function () {
                        this.isActive = !this.isActive
                    },
                    getClasses: function () {
                        return { active: this.isActive, line: this.isLine }
                    }
                }
            })
        </script>
    
    </body>
    
    </html>
    

    v-bind绑定class(三)

    绑定方式:数组语法

    • 数组语法的含义是: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>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    
    <div id="app">
      <h2 class="title" :class="[active, line]">{{message}}</h2>
      <h2 class="title" :class="getClasses()">{{message}}</h2>
    </div>
    
    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: '#app',
        data: {
          message: '你好啊',
          active: 'aaaaaa',
          line: 'bbbbbbb'
        },
        methods: {
          getClasses: function () {
            return [this.active, this.line]
          }
        }
      })
    </script>
    
    </body>
    </html>
    

    v-bind绑定style(一)

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <style>
        .title {
          font-size: 50px;
          color: red;
        }
      </style>
    </head>
    
    <body>
    
      <div id="app">
        <!--<h2 :style="{key(属性名): value(属性值)}">{{message}}</h2>-->
    
        <!--'50px'必须加上单引号, 否则是当做一个变量去解析-->
        <!--<h2 :style="{fontSize: '50px'}">{{message}}</h2>-->
    
        <!--finalSize当成一个变量使用-->
        <!--<h2 :style="{fontSize: finalSize}">{{message}}</h2>-->
        <h2 :style="{fontSize: finalSize + 'px', backgroundColor: finalColor}">{{message}}</h2>
        <h2 :style="getStyles()">{{message}}</h2>
      </div>
    
      <script src="../js/vue.js"></script>
      <script>
        const app = new Vue({
          el: '#app',
          data: {
            message: '你好啊',
            finalSize: 100,
            finalColor: 'red',
          },
          methods: {
            getStyles: function () {
              return { fontSize: this.finalSize + 'px', backgroundColor: this.finalColor }
            }
          }
        })
      </script>
    
    </body>
    
    </html>
    

    v-bind绑定style(二)

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    
    <div id="app">
      <h2 :style="[baseStyle, baseStyle1]">{{message}}</h2>
    </div>
    
    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: '#app',
        data: {
          message: '你好啊',
          baseStyle: {backgroundColor: 'red'},
          baseStyle1: {fontSize: '100px'},
        }
      })
    </script>
    
    </body>
    </html>
    
  • 相关阅读:
    mysql性能调优
    java面试大全
    JVM调优总结
    大数据行业跳槽面试前你需要做什么
    什么是分布式锁?实现分布式锁的方式
    如何保障mysql和redis之间的数据一致性?
    数据倾斜的原因和解决方案
    hive优化
    c# 系统换行符
    12种增强CSS技能并加快开发速度的资源
  • 原文地址:https://www.cnblogs.com/jianjie/p/13522632.html
Copyright © 2011-2022 走看看