Vue.js-----輕量高效的MVVM框架(六、Class與Style綁定)


 

這個相對來說簡單,看一遍代碼就懂。

一、完整片段:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <script type="text/javascript" src="js/vue.js"></script>
        <title>Class與Style綁定</title>
        <style type="text/css">
            .classA {
                /*紅色字體*/
                color: red;
            }
            
            .classB {
                /*斜體*/
                font-style: italic;
            }
            
            .classC {
                /*藍紫色字體*/
                color: blueviolet;
            }
            
            .classD {
                /*添加padding、margin*/
                margin: 5px;
                padding: 5px;
            }
            
            .classE {
                /*邊框*/
                border: 1px solid saddlebrown;
            }
            
            .classF {
                /*背景色*/
                background-color: lightgoldenrodyellow;
            }
            
            .drTransform {
                transform: rotate(7deg);
                -ms-transform: rotate(7deg);
                /* IE 9 */
                -moz-transform: rotate(7deg);
                /* Firefox */
                -webkit-transform: rotate(7deg);
                /* Safari 和 Chrome */
                -o-transform: rotate(7deg);
                transition-duration: 5s;
            }
        </style>
    </head>

    <body>
        <h2>綁定Html Class</h2>
        <p>盡管可以用 Mustache 標簽綁定 class,比如 class="{{ className }}",但是不推薦這種寫法和 v-bind:class 混用。兩者只能選其一!</p>
        <div id="dr01">
            <h4>#對象語法</h4>
            <p>給v-bind:class一個對象,通過true、false動態切換class,isA為false,true,所以div的class為static、classB</p>
            <!-- 下面是兩種方式,一種直接在v-bind:class里面展示對象,另外一種,在data里面添加classObj屬性,在v-bind:class里面賦值classObj對象 -->
            <div v-bind:class="{static:isStatic,classA:isA,classB:isB}">1、對象語法class test</div>
            <div v-bind:class="classObj">2、對象語法another class attribute bind</div>
        </div>

        <hr />

        <div id="dr02">
            <h4>#數組語法</h4>
            <div v-bind:class='["classC","classD","classE","classF"]'>1、數組語法,直接添加"className",不能動態更改,與class="classC classD classE classF"保持一致</div>
            <div v-bind:class='["classC","classD",isE?"classE":"","classF"]'>1、數組語法,直接添加"className",里面使用了三元表達式</div>
            <div v-bind:class='[drClassC,drClassD,drClassE,drClassF]'>2、數組語法,數組的元素在data里面有定義,挨個賦值className</div>
            <div v-bind:class='[drClassC,drClassD,drClassE,isF?drClassF:""]'>3、數組語法,里面使用了三元表達式</div>

            <hr />

            <h4>#對象語法、數組語法混合使用</h4>
            <div>
                <p>在 1.0.19+ 中,可以在數組語法中使用對象語法:{{cHtml}}</p>
                <span>classA: data定義(三元表達式), classB:直接引用(三元表達式),classC:data引用,classD:直接引用,EFGH是對象屬性,所以不論屬性名稱是否有引號,只要屬性值在data里面定義的是true,引用的都是屬性名,false不引用</span>
                <div v-bind:class='[isA?drClassA:"",isB?"classB":"",drClassC,"classD",{"classE":isE,drClassF:isF,"classG":isG,drClassH:isH}]'>
                    class屬性綜合測試
                </div>
            </div>
        </div>

        <hr />

        <h2>綁定內聯樣式</h2>
        <div id="dr03">
            <h4>#對象語法</h4>
            <div v-bind:style="{color:activeColor,fontSize:activeFontSize}">1、對象語法簡單測試</div>
            <div v-bind:style="styleObj">2、對象語法(在data下定義)</div>
        </div>
        <div id="dr04">
            <h4>#數組語法</h4>
            <div v-bind:style="[{color:'blue',fontSize:'15px'},{fontStyle:'italic',backgroundColor:'lightgoldenrodyellow'}]">2、數組語法簡單測試</div>
            <div v-bind:style="[styleObj01,styleObj02]">2、數組語法簡單測試</div>
        </div>
        <script>
            var dr01 = new Vue({
                el: "#dr01",
                data: {
                    isStatic: true,
                    isA: true,
                    isB: true,
                    classObj: {
                        static: true,
                        classA: true,
                        classB: true,
                    }
                }
            });
            var dr02 = new Vue({
                el: "#dr02",
                data: {
                    isA: true,
                    isB: true,
                    isE: true,
                    isF: true,
                    isG: true,
                    isH: true,
                    drClassA: "classA",
                    drClassB: "classB",
                    drClassC: "classC",
                    drClassD: "classD",
                    drClassE: "classE",
                    drClassF: "classF",
                    drClassG: "classG",
                    drClassH: "classH",
                    cHtml: '<div v-bind:class="[classA, { classB: isB, classC: isC }]">'
                }
            });
            var dr03 = new Vue({
                el: "#dr03",
                data: {
                    activeColor: "#ff0000",
                    activeFontSize: "20px",
                    styleObj: {
                        color: "red",
                        fontSize: "20px"
                    }
                }
            });
            var dr04 = new Vue({
                el: "#dr04",
                data: {
                    styleObj01: {
                        color: "blue",
                        fontSize: "15px"
                    },
                    styleObj02: {
                        fontStyle: "italic",
                        backgroundColor: "lightgoldenrodyellow"
                    }
                }
            });
    </script> </body> </html>

 

二、結果展示:

 

三、渲染后的html代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM