Vue學習筆記3

qfstudy發表於2018-07-15

Class 與 Style 繫結

繫結 HTML Class

1.物件語法

<div id="app">
        <div class="static" v-bind:class="{ active: isActive, `text`: hasError }">
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: `#app`,
            data: {
                isActive: true,
                hasError: true
            }

繫結的資料物件可以不用內聯定義在模板裡,可以如下定義:

 <div id="app">
        <div class="static" v-bind:class="classObject">
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: `#app`,
            data: {
                classObject:{
                    active: true,
                    `text-danger`: true
                }
                
            }
        })
    </script>

2.陣列語法
我們可以把一個陣列傳給 v-bind:class,以應用一個 class 列表:

    <div id="app">
        <div v-bind:class="[activeClass, errorClass]"></div>
    </div>
    <script>
        var vm = new Vue({
            el: `#app`,
            data: {
                activeClass: `active`,
                errorClass: `text-danger`
            }
        })
    </script>

3.用在元件上

    <div id="app">
        <my-component class="baz boo"></my-component>
    </div>
    <script>
        Vue.component(`my-component`, {
            template: `<p class="foo bar">Hi</p>`
        })
        var vm = new Vue({
            el: `#app`,
            
        })
    </script>

繫結內聯樣式

1.物件語法
v-bind:style 的物件語法十分直觀——看著非常像 CSS,但其實是一個 JavaScript 物件。

    <div id="app">
        <div v-bind:style="{ color: activeColor, fontSize: fontSize + `px` }">hi</div>
    </div>
    <script>

        var vm = new Vue({
            el: `#app`,
            data: {
                activeColor: `red`,
                fontSize: 30
            }
        })
    </script>

直接繫結到一個樣式物件通常更好,這會讓模板更清晰:

    <div id="app">
        <div v-bind:style="styleObject">hello</div>
    </div>
    <script>
        var vm = new Vue({
            el: `#app`,
            data: {
                styleObject: {
                    color: `red`,
                    fontSize: `13px`
                }
            }
        })
    </script>

2.陣列語法
v-bind:style 的陣列語法可以將多個樣式物件應用到同一個元素上:

<div v-bind:style="[baseStyles, overridingStyles]"></div>

3.自動新增字首
v-bind:style 使用需要新增瀏覽器引擎字首的 CSS 屬性時,如 transform,Vue.js 會自動偵測並新增相應的字首。

相關文章