zoukankan      html  css  js  c++  java
  • Class 与 Style 绑定

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

    绑定样式:
                        1. class样式
                                    写法:class="xxx" xxx可以是字符串、对象、数组。
                                            字符串写法适用于:类名不确定,要动态获取。
                                            对象写法适用于:要绑定多个样式,个数不确定,名字也不确定。
                                            数组写法适用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用。
                        2. style样式
                                    :style="{fontSize: xxx}"其中xxx是动态值。
                                    :style="[a,b]"其中a、b是样式对象。
    代码举例:
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <title>Class 与 Style 绑定</title>
            <style>
                .basic{
                    width: 400px;
                    height: 100px;
                    border: 1px solid black;
                }
                
                .happy{
                    border: 4px solid red;;
                    background-color: rgba(255, 255, 0, 0.644);
                    background: linear-gradient(30deg,yellow,pink,orange,yellow);
                }
                .sad{
                    border: 4px dashed rgb(2, 197, 2);
                    background-color: gray;
                }
                .normal{
                    background-color: skyblue;
                }
    
                .wangxq1{
                    background-color: yellowgreen;
                }
                .wangxq2{
                    font-size: 30px;
                    text-shadow:2px 2px 10px red;
                }
                .wangxq3{
                    border-radius: 20px;
                }
            </style>
            <script type="text/javascript" src="../js/vue.js"></script>
        </head>
        <body>
            <!-- 准备好一个容器-->
            <div id="root">
                <!-- 绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定 -->
                <div class="basic" :class="mood" @click="changeMood">{{name}}</div> <br/><br/>
    
                <!-- 绑定class样式--数组写法,适用于:要绑定的样式个数不确定、名字也不确定 -->
                <div class="basic" :class="classArr">{{name}}</div> <br/><br/>
    
                <!-- 绑定class样式--对象写法,适用于:要绑定的样式个数确定、名字也确定,但要动态决定用不用 -->
                <div class="basic" :class="classObj">{{name}}</div> <br/><br/>
    
                <!-- 绑定style样式--对象写法 -->
                <div class="basic" :style="styleObj">{{name}}</div> <br/><br/>
                <!-- 绑定style样式--数组写法 -->
                <div class="basic" :style="styleArr">{{name}}</div>
            </div>
        </body>
    
        <script type="text/javascript">
            Vue.config.productionTip = false
            
            const vm = new Vue({
                el:'#root',
                data:{
                    name:'小妖怪',
                    mood:'normal',
                    classArr:['wangxq1','wangxq2','wangxq3'],
                    classObj:{
                        wangxq1:false,
                        wangxq2:false,
                    },
                    styleObj:{
                        fontSize: '40px',
                        color:'red',
                    },
                    styleObj2:{
                        backgroundColor:'orange'
                    },
                    styleArr:[
                        {
                            fontSize: '40px',
                            color:'blue',
                        },
                        {
                            backgroundColor:'gray'
                        }
                    ]
                },
                methods: {
                    changeMood(){
                        const arr = ['happy','sad','normal']
                        const index = Math.floor(Math.random()*3)
                        this.mood = arr[index]
                    }
                },
            })
        </script>
        
    </html>
  • 相关阅读:
    洛谷 P2362 围栏木桩
    洛谷 P1926 小书童——刷题大军
    COGS 1913. AC自动机
    洛谷 P2951 [USACO09OPEN]捉迷藏Hide and Seek
    洛谷 P2984 [USACO10FEB]给巧克力Chocolate Giving
    hdu 2896 病毒侵袭
    hdu 3065 病毒侵袭持续中
    JavaScipt30(第七个案例)(主要知识点:数组some,every,findIndex方法)
    JavaScipt30(第六个案例)(主要知识点:给数字加千分号的正则)
    JavaScipt30(第五个案例)(主要知识点:flex布局)
  • 原文地址:https://www.cnblogs.com/ftx3q/p/15320456.html
Copyright © 2011-2022 走看看