Vue.js,學(xué)習(xí)心得(五)

學(xué)習(xí)心得,
Class 與 Style,

直接上代碼了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Class 與 Style 綁定</title>
    <style>
        .active{
            color:red;
        }
        .text-danger{
            font-weight: bold;
        }
    </style>
    <script src="../js/vue.js"></script>
</head>
<body>
<div id="app-1-1" v-bind:class="{ active: isActive, 'text-danger': hasError }">
    {{msg}}
</div>
<hr>

<div id="app-1-2" v-bind:class="classObj">
    {{msg}}
</div>
<hr>

<div id="app-1-3" v-bind:class="classObj">
    {{msg}}
</div>
<hr>

<div id="app-2-1" v-bind:class="[activeClass,errorClass]">
    {{msg}}
</div>
<br>
<div id="app-2-2" v-bind:class="[isActive ? activeClass : '', errorClass]">
    {{msg}}
</div>
<br>
<div id="app-2-3" v-bind:class="[{ active: isActive }, errorClass]">
    {{msg}}
</div>
<hr>

<div id="app-3-1">
    <my-zujian class="baz boo"></my-zujian>
</div>
<br>
<div id="app-3-2">
    <my-zujian v-bind:class="{active:isActive}"></my-zujian>
</div>
<hr>

<div id="app-4-1" v-bind:style="{color:activeColor,fontSize:activeSize+'px'}">{{msg}}</div>
<br>
<div id="app-4-2" v-bind:style="styleObject">{{msg}}</div>
<br>
<div id="app-4-3" v-bind:style="[styleOne,styleTwo]">{{msg}}</div>
<hr>

<div id="app-5" v-bind:style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }">
    {{msg}}
</div>
<hr>

<script>
    //v-bind:class="xxx:xxx",動態(tài)綁定class
    var app1 = new Vue({
        el:"#app-1-1",
        data:{
            msg:"添加上屬性會變色",
            isActive:true,
            hasError:false
        }
    });
    //v-bind:class="",不一定要綁定在模板里,可以把模板設(shè)置對象然后傳對象
    var app2 = new Vue({
        el:"#app-1-2",
        data:{
            msg:"添加上屬性會變色",
            classObj:{
                active:true,
                'text-danger':true
            }
        }
    });
    //v-bind:class="",也可以返回一個對象
    var app3 = new Vue({
        el:"#app-1-3",
        data: {
            msg:"添加上屬性會變色",
            isActive: true,
            error: null
        },
        computed: {
            classObj: function () {
                return {
                    active: this.isActive && !this.error,
                    'text-danger': this.error && this.error.type === 'fatal'
                }
            }
        }
    });

    //數(shù)組語法
    var app4 = new Vue({
        el:"#app-2-1",
        data:{
            msg:'添加上屬性會變色',
            activeClass:'active',
            errorClass:'text-danger'
        }
    });

    //數(shù)組語法,如果你也想根據(jù)條件切換列表中的 class,可以用三元表達(dá)式:
    var app5 = new Vue({
        el:"#app-2-2",
        data:{
            msg:'添加上屬性會變色,三元,isActive為true時',
            isActive:true,
            activeClass:'active',
            errorClass:'text-danger'
        }
    });

    //數(shù)組語法,當(dāng)有多個條件 class 時這樣寫有些繁瑣。所以在數(shù)組語法中也可以使用對象語法:
    var app6 = new Vue({
        el:'#app-2-3',
        data:{
            msg:'添加上屬性會變色,對象,isActive判斷active的存在,為false時',
            isActive:false,
            errorClass:'text-danger'
        }
    })

    //用在組件上,當(dāng)在一個自定義組件上使用 class 屬性時,這些類將被添加到根元素上面。這個元素上已經(jīng)存在的類不會被覆蓋。
    Vue.component('my-zujian',{
        template:'<p class="foo bar">HI~~</p>'
    });
    var app7 = new Vue({
        el:'#app-3-1',
        data:{

        }
    });
    //對于帶數(shù)據(jù)綁定 class 也同樣適用:
    var app8 = new Vue({
        el:'#app-3-2',
        data:{
            isActive:true
        }
    });

    //v-bind:style 的對象語法十分直觀——看著非常像 CSS,
    // 但其實是一個 JavaScript 對象。
    // CSS 屬性名可以用駝峰式 (camelCase) 或短橫線分隔 (kebab-case,記得用單引號括起來) 來命名:
    var app9 = new Vue({
        el:'#app-4-1',
        data:{
            msg:'我愛你悅悅',
            activeColor:'red',
            activeSize:'26'
        }
    });
    //v-bind:style="{xxx}"也可以寫成對象
    // 直接綁定到一個樣式對象通常更好,這會讓模板更清晰:
    var app10 = new Vue({
        el:'#app-4-2',
        data:{
            msg:'我愛你悅悅',
            styleObject:{
                color:'red',
                fontSize:'26px'
            }

        }
    });
    //v-bind:style 的數(shù)組語法可以將多個樣式對象應(yīng)用到同一個元素上:
    var app11 = new Vue({
        el:'#app-4-3',
        data:{
            msg:'我愛你悅悅',
            styleOne:{
                color:'red',
                fontSize:'26px'
            },
            styleTwo:{
                fontWeight:'bold'
            }

        }
    });
    //自動添加前綴
    //當(dāng) v-bind:style 使用需要添加瀏覽器引擎前綴的 CSS 屬性時,
    // 如 transform,Vue.js 會自動偵測并添加相應(yīng)的前綴。


    //多重值
    //從 2.3.0 起你可以為 style 綁定中的屬性提供一個包含多個值的數(shù)組,
    // 常用于提供多個帶前綴的值,例如:
    var app12 = new Vue({
        el:'#app-5',
        data:{
            msg:'悅悅我愛你'
        }
    })
</script>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容