• (5)vue 增强绑定Class和Style


    由于Class和Style绑定使用频繁,字符串拼接麻烦且易错。因此,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。

    一、Class

    1.对象

    (1)对象语法

        <style>
            .active{
                color:blue
            }
            .line{
                text-decoration:underline
            }
        </style>
        <div id="example">
            <div v-bind:class="{ active: isActive, line:isLine}">abc</div>
        </div>
        <script>
            var vm = new Vue({
                el:'#example',
                data: {
                    isActive: true,
                    isLine: true
                },
            })
        </script>

    isActive,isLine是bool值,用来控制该类是否有此名称

    运行

    (2)绑定类和非绑定类共存

    <div class="active" v-bind:class="{ line:line}">abc</div>

    (3)也可以只传一个对象

        <div id="example">
            <div  v-bind:class="classObject">abc</div>
        </div>
        <script>
            var vm = new Vue({
                el:'#example',
                 data: {
                  classObject: {
                    active: true,
                    line: true
                  }
                }
            })
        </script>

    (4)常用模式

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

     

    2.数组

    (1)数组语法

    我们可以把一个数组传给 v-bind:class,以应用一个 class 列表:

        <div id="example">
            <div v-bind:class="[activeClass,lineClass]">abc</div>
        </div>
        <script>
            var vm = new Vue({
                el:'#example',
                 data: {
                    activeClass: 'active',
                    lineClass: 'line'
                }
            })
        </script>

    (2)三元表达式

    这样写将始终添加 errorClass,但是只有在 isActive 是 truthy[1] 时才添加 activeClass

        <div id="example">
            <div v-bind:class="[isActive ? activeClass : '', lineClass]">abc</div>
        </div>
        <script>
            var vm = new Vue({
                el:'#example',
                data: {
                    isActive: true,
                    activeClass: 'active',
                    lineClass: 'line'
                }
            })
        </script>

    或者简写成

    <div v-bind:class="[{ active: isActive }, lineClass]">abc</div>

    (3)组件上使用

    ??

    二、Style

    1.对象 

    (1)基本语法

        <div id="example">
            <div v-bind:style="{color:colorStyle, 'fontSize':sizeStyle}">abc</div>
        </div>
        <script>
            var vm = new Vue({
                el:'#example',
                data: {
                    colorStyle: 'blue',
                    sizeStyle: '30px'
                }
            })
        </script>
    </body>

     或者

        <div id="example">
            <div v-bind:style="objectStyle">abc</div>
        </div>
        <script>
            var vm = new Vue({
                el:'#example',
                data: {
                    objectStyle:{
                    color: 'blue',
                    fontSize: '30px'
                    }
                }
            })
        </script>

    2.数组

    (1)多个样式

        <div id="example">
            <div v-bind:style="[objectStyle1, objectStyle2]">abc</div>
        </div>
        <script>
            var vm = new Vue({
                el:'#example',
                data: {
                    objectStyle1:{
                    color: 'blue',
                    },
                    objectStyle2:{
                    fontSize: '30px'
                    }
                }
            })
        </script>

    (2)自动添加前缀

    当 v-bind:style 使用需要添加浏览器引擎前缀的 CSS 属性时,如 transform,Vue.js 会自动侦测并添加相应的前缀

    ??

    (3)多重值

    ??

  • 相关阅读:
    注册系统
    android登录界面
    android作业 购物界面
    第六周jsp作业
    JSP第四周
    JSP第二次作业
    JSP第一次作业
    第一周软件测试
    第九次安卓
    购物菜单
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/12273029.html
Copyright © 2020-2023  润新知