使用Vue綁定class和style樣式的幾種寫法總結(jié)
綁定class樣式
首先寫一個簡單的class樣式,和一個div容器方便調(diào)試 這些class樣式簡單說下用途:basic是最基本的樣式,我們可以配合另外一個class樣式使用,也就是happy,sad,normal這三個其中一個配合使用,hello1,hello2,hello3這三個樣式我們可以一起使用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>初始vue</title> <style> .basic{ width: 300px; 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 solid cyan; background-color: rgba(12, 23, 0, 0.644); background: linear-gradient(30deg,rgb(178, 60, 5),rgb(168, 72, 88),rgb(155, 47, 146),rgb(114, 40, 40)); } .normal{ border:4px solid rgba(12, 107, 107, 0.608); background-color: rgba(12, 23, 0, 0.644); background: linear-gradient(30deg,rgb(178, 60, 5),rgb(121, 142, 38),rgb(157, 67, 150),rgb(239, 169, 169)); } .hello1{ background-color: orchid } .hello2{ font-size: 40px; } .hello3{ color:red } </style> <!-- 引入vue.js --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <div id="root"> <div>test</div> </div> <script type="text/javascript"> </script> </body> </html>
在頁面上給元素增加class樣式
不同的樣式配置效果也是不同的
三個hello樣式一起使用,效果就更豐富
由于basic樣式是最基本的,所以我們可以直接把它寫上,完善下代碼
現(xiàn)在提出需求:這個div有兩個樣式方案,一開始div的class樣式是basic和normal,如果點(diǎn)擊div則換成basic和happy
錯誤演示:使用demo操作,如果我們親自使用demo獲取對象,那么就違背了vue的設(shè)計(jì),雖然可以實(shí)現(xiàn)效果,但是這種方式是不可取的
我們分析需求,其實(shí)不變的是basic,改變的是normal,所以我們可以把class樣式定義一個屬性,通過單擊事件去切換樣式
字符串寫法
特點(diǎn):適用于樣式的類名不確定,需要動態(tài)指定
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>初始vue</title> <style> .basic{ width: 300px; 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 solid cyan; background-color: rgba(12, 23, 0, 0.644); background: linear-gradient(30deg,rgb(178, 60, 5),rgb(168, 72, 88),rgb(155, 47, 146),rgb(114, 40, 40)); } .normal{ border:4px solid rgba(12, 107, 107, 0.608); background-color: rgba(12, 23, 0, 0.644); background: linear-gradient(30deg,rgb(178, 60, 5),rgb(121, 142, 38),rgb(157, 67, 150),rgb(239, 169, 169)); } .hello1{ background-color: orchid } .hello2{ font-size: 40px; } .hello3{ color:red } </style> <!-- 引入vue.js --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <div id="root"> <!-- 綁定class樣式 --字符串寫法,適用于樣式的類名不確定,需要動態(tài)指定 --> <div class="basic " :class="mood" @click="changeMood">{{name}}</div> </div> </body> <script type="text/javascript"> new Vue({ el:'#root', data:{ name:'vue', mood:'normal' }, methods: { changeMood(){ // 獲取div改變class樣式 this.mood='happy' } }, }) </script> </html>
現(xiàn)在又有一個需求,就是點(diǎn)擊div隨機(jī)切換class樣式
我們可以把多個樣式定義成一個數(shù)組,隨機(jī)使用下標(biāo)作為樣式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>初始vue</title> <style> .basic{ width: 300px; 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 solid cyan; background-color: rgba(12, 23, 0, 0.644); background: linear-gradient(30deg,rgb(178, 60, 5),rgb(168, 72, 88),rgb(155, 47, 146),rgb(114, 40, 40)); } .normal{ border:4px solid rgba(12, 107, 107, 0.608); background-color: rgba(12, 23, 0, 0.644); background: linear-gradient(30deg,rgb(178, 60, 5),rgb(121, 142, 38),rgb(157, 67, 150),rgb(239, 169, 169)); } .hello1{ background-color: orchid } .hello2{ font-size: 40px; } .hello3{ color:red } </style> <!-- 引入vue.js --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <div id="root"> <!-- 綁定class樣式 --字符串寫法,適用于樣式的類名不確定,需要動態(tài)指定 --> <div class="basic " :class="mood" @click="changeMood">{{name}}</div> </div> </body> <script type="text/javascript"> new Vue({ el:'#root', data:{ name:'vue', mood:'normal' }, methods: { changeMood(){ // 獲取div改變class樣式 const arr=['happy','sad','normal'] const index=Math.floor(Math.random()*3) this.mood=arr[index] } }, }) </script> </html>
點(diǎn)擊div就會隨機(jī)切換圖片
數(shù)組寫法
特點(diǎn):適用于要綁定的樣式個數(shù)不確定,名字也不確定 現(xiàn)在又有一個需求,新增一個div,基本樣式還是basic,這個div樣式可能有多個 可以把多個class定義成一個數(shù)組
可以通過vue管理工具切換動態(tài)刪除新增樣式
對象寫法
特點(diǎn):適用于要綁定的樣式個數(shù)確定,名字也確定,但是用動態(tài)決定用不用 又提出一個新的需求:新增一個div,這個div可以使用的樣式可以是同時hello1,hello2,也可以是只有hello1,或者只有hello2,或者兩個樣式一個也沒有 這種情況我們可以把需要用到的樣式定義成一個對象
我們可以點(diǎn)擊復(fù)選框切換屬性或者手動輸入切換
綁定style樣式
樣式的綁定不僅僅有class選擇器,還有行內(nèi)style樣式
<div class="basic" :style="{fontSize:fSize+'px'}">{{name}}</div><br><br>
但是這樣太單調(diào)了,通常我們是把多個是style樣式放在一個對象里面
style的對象寫法
注意:如果key是一個單詞就正常寫即可,如果是多個單詞,需要遵循駝峰寫法。比如font-size要寫成fontSize
由vue管理的屬性,可以自由切換值
style的數(shù)組寫法
style也可以使用數(shù)組寫法,只是這種寫法寫的比較少
總結(jié)
綁定樣式: 1 class樣式 寫法:class='xxx' xxx可以是字符串,對象,數(shù)組 字符串寫法適用于:類名不確定,要動態(tài)獲取 對象寫法適用于:要綁定多個樣式,個數(shù)不確定,名字也不確定 數(shù)組寫法適用于:要綁定多個樣式,個數(shù)確定,名字也確定,但不確定用不用 2 style樣式 :style="fontSize:xxx",其中xxx是動態(tài)值,fontSzie=font-size,如果只有一個單詞正常寫即可,如果多個需要使用駝峰命名 :style="[a,b]",其中a,b是樣式對象
以上就是使用Vue綁定class和style樣式的幾種寫法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于使用Vue綁定class和style的資料請關(guān)注腳本之家其它相關(guān)文章!
- vue3如何實(shí)現(xiàn)在style中使用響應(yīng)式變量
- Vue3如何利用xlsx、xlsx-js-style導(dǎo)出Excel表格使用(適合新手)
- Vue3中使用styled-components的實(shí)現(xiàn)
- 在 Vue3 中如何使用 styled-components
- Vue使用xlsx和xlsx-style導(dǎo)出表格出現(xiàn)部分樣式缺失的問題解決
- vue使用xlsx庫和xlsx-style庫導(dǎo)入導(dǎo)出excel、設(shè)置單元格背景色、文字居中、合并單元格、設(shè)置列寬
- vue如何在style標(biāo)簽中使用變量(數(shù)據(jù))詳解
- 在VUE style中使用data中的變量的方法
- 在vue中:style 的使用方式匯總
相關(guān)文章
vue 實(shí)現(xiàn)左右拖拽元素并且不超過他的父元素的寬度
這篇文章主要介紹了vue 實(shí)現(xiàn)左右拖拽元素并且不超過他的父元素的寬度,需要的朋友可以參考下2018-11-11vue2.0 如何在hash模式下實(shí)現(xiàn)微信分享
這篇文章主要介紹了vue2.0 如何在hash模式下實(shí)現(xiàn)微信分享,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01Vue 2.0的數(shù)據(jù)依賴實(shí)現(xiàn)原理代碼簡析
本篇文章主要介紹了Vue 2.0的數(shù)據(jù)依賴實(shí)現(xiàn)原理代碼簡析,主要從初始化的數(shù)據(jù)層面上分析了Vue是如何管理依賴來到達(dá)數(shù)據(jù)的動態(tài)響應(yīng),有興趣的可以了解一下2017-07-07vue中render函數(shù)和h函數(shù)以及jsx的使用方式
這篇文章主要介紹了vue中render函數(shù)和h函數(shù)以及jsx的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08