zoukankan      html  css  js  c++  java
  • Vue之样式绑定

    在前端开发中,设置元素的 class 列表和内联样式是基本要求。本文主要讲解vue开发中,样式列表和内联样式的绑定,仅供学习分享使用,如果有不足之处,还请指正。

    概述

    vue操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是属性,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。

    绑定 html Class

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

    <div v-bind:class="{red:isred,bold:isbold}">混合样式1--绑定数据属性</div>

    上面的语法表示 red 这个 class 存在与否将取决于数据属性 isred 的 是否为true。你可以在对象中传入更多属性来动态切换多个 class。此外,v-bind:class 指令也可以与普通的 class 属性共存。

    绑定的数据对象采用复合样式的效果,不必内联定义在模板里,如下所示:

    <div v-bind:class="multi">混合样式2---复合对象</div>

    其中multi是一个复合数据对象,如下所示:

    <script type="text/JavaScript">
        var vm=new Vue({
            el:"#app",
            data:{
                bg:'yellow',
                isbold:true,
                isred:true,
                multi:{
                    red:true,
                    bold:true,
                }
            }
    
        });
    </script>

    以上两种,结果渲染是一样的,如下所示:

    <div class="red bold"></div>

    广州设计公司https://www.houdianzi.com 我的007办公资源网站https://www.wode007.com

    绑定计算属性

    我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式:

    <div v-bind:class="cmpstyle">混合样式3---计算属性</div>

    其中cmpstyle是一个计算属性,返回的对象,如下所示:

    <script type="text/JavaScript">
        var vm=new Vue({
            el:"#app",
            computed:{
                cmpstyle:function(){
                    return {
                        red:true,
                        bold:true,
                    }
                }
            }
        });
    </script>
     

    css数组语法

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

    <div v-bind:class="arrcss">混合样式4---数组绑定样式</div>

    其中arrcss是一个数组样式,如下所示:

    <script type="text/javascript">
        var vm=new Vue({
            el:"#app",
            data:{
                arrcss:['red','bold'],
            }
        });
    </script>
     

    绑定内联样式

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

    <div v-bind:style="{color:bg2}">内联样式2--属性</div>

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

    <div v-bind:style="bg3">内联样式3--绑定对象</div>

    其中,bg3是一个对象,如下所示:

    <script type="text/javascript">
        var vm=new Vue({
            el:"#app",
            data:{
                bg2:'green',
                bg3:{
                    color:'red',
                    fontSize:'30px'
                }
            }
        });
    </script>
     

    内联样式数组语法

    v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上:

    <div v-bind:style="[bg3,bg4]">内联样式4--绑定对象</div>

    多重值

    从 2.3.0 起你可以为 style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值,例如:

    <div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

    这样写只会渲染数组中最后一个被浏览器支持的值。在本例中,如果浏览器支持不带浏览器前缀的 flexbox,那么就只会渲染 display: flex。

  • 相关阅读:
    LeetCode OJ 107. Binary Tree Level Order Traversal II
    LeetCode OJ 116. Populating Next Right Pointers in Each Node
    LeetCode OJ 108. Convert Sorted Array to Binary Search Tree
    LeetCode OJ 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode OJ 98. Validate Binary Search Tree
    老程序员解Bug的通用套路
    转载 四年努力,梦归阿里,和大家聊聊成长感悟
    转载面试感悟----一名3年工作经验的程序员应该具备的技能
    Web Service和Servlet的区别
    关于spring xml文件中的xmlns,xsi:schemaLocation
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/13830994.html
Copyright © 2011-2022 走看看