四 Vue中class與style綁定

一曙蒸、 用對(duì)象的方法綁定class

  1. 說明
    • 設(shè)置一個(gè)對(duì)象,可以動(dòng)態(tài)地切換class
    • 對(duì)象中也可以傳入多個(gè)屬性损痰,來動(dòng)態(tài)切換class,另外,:class可以與普通class共存
    • class的表達(dá)式過長(zhǎng)或者邏輯復(fù)雜時(shí)候尘盼,還可以綁定一個(gè)計(jì)算屬性,這是一種友好和常見的用法肪凛,一般當(dāng)條件多于兩個(gè)時(shí)态蒂,都可以使用data或者computed
  2. 基礎(chǔ)使用
    <style type="text/css">
        .btn {
            padding: 6px 12px;
            font-size: 14px;
            font-weight: normal;
        }
    </style>
    <div id="app">
        <button :class="btnClass">綁定對(duì)象</button>
    </div>
    <script>
        /**
         * 靜態(tài)綁定
         */
        new Vue({
            el: "#app",
            data: {
                // 當(dāng)btnClass改變時(shí)將更新class
                btnClass:'btn'
            }
        })
    </script>
    <!--渲染之后 -->
    <button class="btn">綁定按鈕</button>
    
  3. 綁定對(duì)象
    <style>
        .btn {
            padding: 6px 12px;
            font-size: 14px;
            font-weight: normal;
        }
        .btn-default {
            color: #333;
            background-color: #fff;
            border-color: #ccc;
        }
    </style>
    <div id="app">
        <!-- 這里的active單引號(hào)可加不加可不加 多個(gè)對(duì)象用,逗號(hào)隔開 -->
         <!-- 注意使用-命名一定要加下 單引號(hào) '' -->
        <p class="btn" :class="{ 'active':isActive,'btn-default':isDefault }" v-text="shop.title"></p>
    </div>
    <div id="app">
        <button :class="{btn:isActive,'btn-default':isDefault}">綁定按鈕</button>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                isActive: false
                isDefault: true,
            }
        })
    </script>
    <!-- 渲染之后 -->
    <button class="btn btn-default">綁定對(duì)象</button>
    
  4. 綁定多個(gè)對(duì)象(data里面中聲明)
    :class="btnClass"
    <script>
        new Vue({
            el: "#app",
            data: {
               btnClass:{
                   btn:isActive,'btn-default':isDefault
               }
            }
        })
    </script>
    
  5. 綁定多個(gè)對(duì)象(computed里面中聲明)
     <style type="text/css">
            .btn {
                padding: 6px 12px;
                font-size: 14px;
                font-weight: normal;
            }
            .btn-default {
                color: #333;
                background-color: #fff;
                border-color: #ccc;
            }
            .active {
                background-image: none;
                outline: 0;
                -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
                box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
                color: #fff;
                background-color: #5cb85c;
                border-color: #4cae4c;
            }
    <div id="app">
        <button class="btn" :class="btnClass" @mouseenter="isEnter" @mouseleave="isLeave">綁定多個(gè)屬性</button>
    </div>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                isActive: false,
                isDefault: true,
            },
            computed: {
                btnClass: function () {
                    return {
                        'btn-default': this.isDefault,
                        'active': this.isActive,
                    }
                }
            },
            methods: {
                isEnter: function () {
                    this.isActive = true;
                },
                isLeave: function () {
                    this.isActive = false;
                }
            }
        })
    

二杭措、用數(shù)組的方法綁定class

  1. 說明
    當(dāng)需要應(yīng)用多個(gè)class,可以使用數(shù)組語(yǔ)法吃媒,給:class 綁定一個(gè)數(shù)組瓤介,應(yīng)用一個(gè)class列表
  2. 單純數(shù)組
    <style type="text/css">
        .btn {
            padding: 6px 12px;
            font-size: 14px;
            font-weight: normal;
        }
        .btn-default {
            color: #333;
            background-color: #fff;
            border-color: #ccc;
        }
        .active {
            background-image: none;
            outline: 0;
            -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
            box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
            color: #fff;
            background-color: #5cb85c;
            border-color: #4cae4c;
        }
    </style>
    <div id="app">
        <button class="btn" :class="['btn-default','active']">綁定多個(gè)屬性</button>
    </div>
    <script>
        const vm = new Vue({
            el: "#app",
        })
    </script>  
    <!--渲染之后 -->
    <button class="btn btn-default active">綁定多個(gè)屬性</button>
    
  3. 數(shù)組+對(duì)象+三則運(yùn)算
        <style type="text/css">
            .btn {
                padding: 6px 12px;
                font-size: 14px;
                font-weight: normal;
            }
            .btn-default {
                color: #333;
                background-color: #fff;
                border-color: #ccc;
            }
            .active {
                background-image: none;
                outline: 0;
                -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
                box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
                color: #fff;
                background-color: #5cb85c;
                border-color: #4cae4c;
            }
            .btn-danger {
                color: #fff;
                background-color: #d9534f;
                border-color: #d43f3a;
            }
        </style>
    </head>
    <body>
    <div id="app">
        <!--    注意 class最好加上單引號(hào),否則有可能不能正確渲染-->
        <!--    <button class="btn" :class="['btn-default','active']">綁定多個(gè)屬性</button>-->
        <!--    不能使用data里的對(duì)象,否則不能正確渲染-->
        <button class="btn" :class="[{active: isActive},isDanger ? 'btn-danger':'']">綁定數(shù)組</button>
    </div>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                btnDefault: 'btn-default',
                isActive: true,
                isDanger: true,
            },
        })
    </script>
    <!--渲染后 -->
    <button class="btn active btn-danger">綁定數(shù)組</button>
    

三赘那、用對(duì)象的方式實(shí)現(xiàn)style綁定

  1. 說明
    使用v-bind:style="" 或者:style語(yǔ)法,style與class類似氯质,可以給元素綁定內(nèi)聯(lián)樣式,也有對(duì)象語(yǔ)法和數(shù)組語(yǔ)法,看起來很直接在元素上寫CSS
  2. 基本使用
    <div id="app">
        <a href="#" :style="{'color':color,'font-size':fontSize + 'px','text-decoration':textDecoration}">綁定內(nèi)聯(lián)樣式</a>
    </div>
    <script>
        /**
         * 靜態(tài)綁定
         */
        new Vue({
            el: "#app",
            data: {
                color: 'red',
                fontSize: 18,
                textDecoration: 'none'
            }
        })
    </script>
    
  3. 綁定對(duì)象動(dòng)態(tài)修改
    <div id="app">
        <a href="#" :style="aStyle"  @mouseover="aMouseOver" @mouseout="aMouseOut">直接使用對(duì)象</a>
    </div>
    <script>
        /**
         * 靜態(tài)綁定
         */
        new Vue({
            el: "#app",
            data: {
                color: 'red',
                fontSize: 18,
                textDecoration: 'none',
                //    或者
                aStyle: {
                    color: 'black',
                    fontSize: 18 + 'px',
                    textDecoration: 'none',
                },
            },
            methods: {
                aMouseOver: function () {
                    this.aStyle.color = 'red'
                },
                aMouseOut: function () {
                    this.aStyle.color = 'black'
                }
            }
        })
    
  4. 綁定數(shù)組
    <div id="app">
    <!-- 在實(shí)際業(yè)務(wù)中, :style的數(shù)組語(yǔ)法并不常用,因?yàn)橥梢詫懺谝粋€(gè)對(duì)象里面 -->
        <a href="#" :style="[aBase,aFont]">綁定數(shù)組</a>
    </div>
    <script>
        /**
         * 靜態(tài)綁定
         */
        new Vue({
            el: "#app",
            data: {
                aBase: {
                    color: 'red',
                },
                aFont: {
                    fontSize: 16 + 'px',
                    textDecoration: 'none',
                },
            },
        })
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末募舟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子闻察,更是在濱河造成了極大的恐慌拱礁,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辕漂,死亡現(xiàn)場(chǎng)離奇詭異呢灶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钉嘹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門鸯乃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跋涣,你說我怎么就攤上這事缨睡。” “怎么了陈辱?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵奖年,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我沛贪,道長(zhǎng)陋守,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任利赋,我火速辦了婚禮水评,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隐砸。我一直安慰自己之碗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布季希。 她就那樣靜靜地躺著褪那,像睡著了一般幽纷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上博敬,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天友浸,我揣著相機(jī)與錄音,去河邊找鬼偏窝。 笑死收恢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祭往。 我是一名探鬼主播伦意,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼硼补!你這毒婦竟也來了驮肉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤已骇,失蹤者是張志新(化名)和其女友劉穎离钝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褪储,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卵渴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鲤竹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浪读。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宛裕,靈堂內(nèi)的尸體忽然破棺而出瑟啃,到底是詐尸還是另有隱情,我是刑警寧澤揩尸,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布蛹屿,位于F島的核電站,受9級(jí)特大地震影響岩榆,放射性物質(zhì)發(fā)生泄漏错负。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一勇边、第九天 我趴在偏房一處隱蔽的房頂上張望犹撒。 院中可真熱鬧,春花似錦粒褒、人聲如沸识颊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)祥款。三九已至清笨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刃跛,已是汗流浹背抠艾。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桨昙,地道東北人检号。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蛙酪,于是被迫代替她去往敵國(guó)和親齐苛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354