zoukankan      html  css  js  c++  java
  • VUE学习十五,Class与Style绑定

    一、绑定HTML Class

    1. 对象语法

    我们可以传给 v-bind:class 一个对象,以动态地切换 class:

    <div v-bind:class="{ active: isActive }">这是测试一</div>

    又或者:

    <div
      class="static"
      v-bind:class="{ active: isActive, 'text-danger': hasError }"
    ></div>

    当 isActive 或者 hasError 变化时,class 列表将相应地更新。

    甚至可以用如下方法:

    <div v-bind:class="classObject"></div>
      data: {
        isActive: false,
        isError: true
      },
      computed: {
      classObject: function () {
        return {
          active: this.isActive && !this.isError,
          'text-danger': this.isError
        }
      }

    整体代码参考:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>VUE简单示范</title>
    <script type="text/javascript" src="../js/vue.js" charset="utf-8"></script>
    </head>
    <body>
    <div id="app-6">
    <div v-bind:class="{ active: isActive }">这是测试一</div>
    <div v-bind:class="classObject">这是测试二</div>
    </div>
    <script>
    var app6 = new Vue({
      el: '#app-6',
      data: {
        isActive: false,
        isError: true
      },
      computed: {
      classObject: function () {
        return {
          active: this.isActive && !this.isError,
          'text-danger': this.isError
        }
      }
    }
    })
    </script>
    <style>
        .active { color:#FF0000;}
        .text-danger { font-size:100px;}
    </style>
    </body>
    </html>
    View Code

    2. 数组语法

    如果你也想根据条件切换列表中的 class,可以用三元表达式:

    <div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

    这样写将始终添加 errorClass,但是只有在 isActive 是 true 时才添加 activeClass

    二、绑定内联样式

    1. v-bind:style 的对象语法

    对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS property 名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:

    <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
    data: {
      activeColor: 'red',
      fontSize: 30
    }

    直接绑定到一个样式对象通常更好,这会让模板更清晰:

    <div v-bind:style="styleObject"></div>
    data: {
      styleObject: {
        color: 'red',
        fontSize: '13px'
      }
    }

    2. 数组语法

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

    3. 整体代码参考

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>VUE简单示范</title>
    <script type="text/javascript" src="../js/vue.js" charset="utf-8"></script>
    </head>
    <body>
    <div id="app-6">
    <div v-bind:class="{ active: isActive }">这是测试一</div>
    <div v-bind:class="classObject">这是测试二</div>
    <div  v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">这是测试三</div>
    <div v-bind:style="styleObject">这是测试四</div>
    </div>
    <script>
    var app6 = new Vue({
      el: '#app-6',
      data: {
        isActive: false,
        isError: true,
        activeColor: 'red',
        fontSize: 30,
        styleObject: {
            color: 'red',
            fontSize: '13px'
          }
      },
      computed: {
      classObject: function () {
        return {
          active: this.isActive && !this.isError,
          'text-danger': this.isError
        }
      }
    }
    })
    </script>
    <style>
        .active { color:#FF0000;}
        .text-danger { font-size:100px;}
    </style>
    </body>
    </html>
    View Code

    本文参考:

    https://cn.vuejs.org/v2/guide/class-and-style.html#%E7%BB%91%E5%AE%9A%E5%86%85%E8%81%94%E6%A0%B7%E5%BC%8F

  • 相关阅读:
    django:开发一个下载图片的接口
    django:cbv模式和fbv模式的区别
    java生成二维码/java解析二维码
    java如何台生成二维码详解
    html5 WebSocket的Js实例教程
    vue 组件传参
    Vue路由注意事项
    Vue全家桶
    浅谈vue对seo的影响
    vue打包详情
  • 原文地址:https://www.cnblogs.com/nayitian/p/14985664.html
Copyright © 2011-2022 走看看