1. 程式人生 > >Vue實戰--v-bind以及動態繫結Class和style

Vue實戰--v-bind以及動態繫結Class和style

v-bind通常用來繫結屬性的,格式是v-bind:屬性名 = "值",簡寫:屬性名 = "值" 

之前我們知道v-bind主要就是動態更新DOM的屬性的,class作為DOM的屬性當然也不例外,那麼v-bind怎麼動態更新class呢,分為三種方法:物件語法和陣列語法,還有就是變數語法:

變數語法:v-bind:class = "變數",變數形式 ,這裡的變數的值,通常是在css定義好的類名;

陣列語法:v-bind:class= "[變數1,變數2]" ,陣列形式,其實跟上面差不多,只不過可以同時繫結多個class名;

物件語法:v-bind:class =  {classname1:boolean,classname2:boolean},物件形式,這裡的classname1(2)其實就是樣式表中的類名,這裡的boolean通常是一個變數,也可以是常量、計算屬性等,這種方法也是繫結class最常用的方式。

一,在物件語法下:

 用v-vind動態設定class名,其值是一個物件(如上例子,當isName為真的時候就會存在類fontCol):

HTML部分

<div id="container">
		<p :class="{fontCol:isName,setBack:!isAge}" class="weight">{{name}}</p>
		<i :class="addClass">{{name}}真好看!</i>
	</div>
JS部分
var myApp = new Vue({
			el:"#container",
			// 條件比較少
			data:{
				isName:true,
				isAge:false,
				name:"功守道"
			},
			// 條件多的時候
			computed:{
				addClass:function(){
					return {
						checked:this.isName&&!this.isAge
					}
				}
			}
		})

注意:既然是一個物件,那麼該物件內的屬性可能不唯一,但總是每一項為真的時候,對應的類名就會存在。

1.通過v-bind更新的類名和元素本身存在的類名不衝突,可以優雅的共存

2.不過當v-bind:class的表示式過長或者邏輯複雜(一般當條件多於兩個的時候,可以考慮採用計算屬性,返回一個物件)

二,在陣列語法下(一般用在當需要繫結多個class名的時候):
1.值是一個數組(不論採用何種方法,最後值是一個數組就行)
2.在陣列語法中可以使用物件語法,陣列中的某一項可以是一個物件,當然當條件比較多的時候建議使用計算屬性,返回一個數組即可(例子略),

3.陣列中的值也可以直接就是class名,也可來源於data項

HTML部分

<div id="container1">
		<!-- 僅僅陣列 -->
		<div  :class="[huClas,heClas]">{{name}}</div>
		<!-- 三元表示式 -->
		<div :class="[isAge?huClas:heClas,ju]">{{name}},還行吧!</div>
		<!-- 該模式下類名huijia一直存在,還有一個類名根據isAge的真假來判斷去留 -->
		<div :class="arrMethod">{{name}},有點不好看</div>
		<!-- 計算屬性huijia一直存在,其他的根據情況 -->
	</div>
JS部分
// 陣列語法:
		var myApp1 = new Vue({
			el:"#container1",
			// 當條件比較少的時候
			data:{
				judge1:false,
				isAge:true,
				name:"功夫熊貓",
				huClas:"haha",
				heClas:"heihei",
				ju:"huijia"
			},
			// 條件多的時候
			computed:{
				arrMethod:function(){
					return [
						this.ju,
						{
							heClas:this.judge1&&this.isAge,
							huClas:this.isAge
						}
					]
				}
			}
		})

v-bind繫結style屬性(不常用,僅作了解)

v-bind繫結style,有兩種寫法一種是物件寫法,如下例,一種是陣列寫法(不常用,陣列中的每一項其實都是一個樣式物件,其實直接寫在一個物件裡就行了。);

<!-- 直接繫結 -->
	<div id="container" :style="{color:color,fontSize:fontSize+'px'}">
		{{house}}
		<!-- 計算屬性 -->
		<h2 :style="style1">{{house}}</h2>
		<!-- data中的 -->
		<h3 :style="style">{{house}}</h3>
	</div>
	<script type="text/javascript" src="../../dist/vue.min.js"></script>
	<script type="text/javascript">
		var myApp = new Vue({
			el:"#container",
			data:{
				house:"世家星城二期",
				color:"red",
				fontSize:18,
				style:{
					background:"yellow",
					fontSize:24+"px"
				}
			},
			// 計算屬性
			computed:{
				style1:function(){
					return {
						fontSize:this.fontSize+"px",
						fontWeight:"italic",
						border:"1px solid #ff0000"
					}
				}
			}
		})
對於物件語法注意事項:

1.屬性名一般採用駝峰命名法,屬性值可以來源於data項,也可以是自己設定的固定值,
2.不建議直接在DOM中寫物件,因為不容易維護,可以將樣式物件寫在data項中或者是計算屬性中

相關推薦

Vue實戰--v-bind以及動態Classstyle

v-bind通常用來繫結屬性的,格式是v-bind:屬性名 = "值",簡寫:屬性名 = "值"  之前我們知道v-bind主要就是動態更新DOM的屬性的,class作為DOM的屬性當然也不例外,那麼v-bind怎麼動態更新class呢,分為三種方法:物件語法和陣列語法,還

第十一節:動態classstyle

在第六節的章節中,我們學會了如何給檢視上的html標籤繫結屬性。比如,給 <a> 標籤繫結href屬性,簡單回憶一下:<!-- v-bind指令 --><a v-bind:href="link"></a><!-- v-bi

v-bind class style 的幾種方法

v-bind 繫結class  一、物件語法: 1. 資料屬性物件語法: <style> <!--新建一個active 的class--> .active{color:red} </style> <!--v-bind

給id屬性用v-bind動態物件字串

class和id 動態的繫結一個字串達到自定義名稱的方法::class="'字串'+item.value"  :id="'字串'+item.value" <!DOCTYPE html> <html> <head>   <meta c

Vue.js動態class Vue.js 動態class

轉發自部落格園—柳絮憑風的文章:《Vue.js 動態繫結class》,多多支援原創作者,我只是個搬運工。 Vue.js 的核心是一個響應的資料繫結系統,它允許我們在普通 HTML 模板中使用特殊的語法將 DOM “繫結”到底層資料。被繫結的DOM 將與資料保持同步,每當資料有改動,相應的DOM檢視也會更新。

vue.js v-model雙向資料vue.js form表單資料

vue.js v-model雙向資料繫結, vue.js form表單資料繫結   ================================ ©Copyright 蕃薯耀 2018年11月29日 http://fanshuyao.iteye.com/   &l

vue動態class的3種方式物件語法陣列語法

動態繫結class的幾種方式 1.物件語法 行內或計算屬性 <style> .static { width: 100px; height: 100px; background-color: #ccc; } .orange {

vue指令v-model(雙向資料)自動收集資料

前言:表單提交資料在網站頁面中是十分常見的,而這個表單資料的獲取在原生寫法甚至於JQ都是比較麻煩的(首先需要獲取DOM,然後獲取值)。 但是,在vue的專案環境下,表單資料的收集又該怎麼辦呢?(這種自己寫input元素的方法在實際專案中是不常用的哈,因為一般我們都會用一個UI庫,方便而快捷!

vue 通過動態class,改變樣式

根據輸入框或者下拉選擇框有沒有值,改變按鈕可不可用,及按鈕顏色 <el-select v-model="selectData.id" placeholder="請選擇"> <el-option label="請選擇" value=""><

vue動態class 選中當前列表變色

這個小技巧在工作當中是非常實用而且經常用到的  希望小夥伴兒們能學到。 先看看效果圖吧 接下來我們看看怎麼實現的吧 在methods中寫入一個方法 clickcategory(index){ // 這裡我們傳入一個當前值   this.categoryIndex = index

v-for中通過動態class來實現觸發效果。

vue動態繫結class練習。 在v-for中: :class=“{ ‘類名1’:條件表示式,‘類名2’:條件表示式… }” <template> <div class="app-*"> <ul> <li

vue.js 動態class的幾種方式

Vue.js 的核心是一個響應的資料繫結系統,它允許我們在普通 HTML 模板中使用特殊的語法將 DOM “繫結”到底層資料。被繫結的DOM 將與資料保持同步,每當資料有改動,相應的DOM檢視也會更新。基於這種特性,通過vue.js動態繫結class就變得非常簡單。 思路:以某一頁面樣式需要單獨

富文字編輯器TinyMCE在vue2.x中的使用以及動態(解決雙向後游標跳到最左側問題)

寫在前面 專案重構老管理後臺,使用vue作為前端框架,對於一直使用jsp+jquery開發管理後臺的我還是挺頭疼的… 之後在vue官網學習了一下基礎知識外加向前端同事討教,粗略瞭解了vue的使用,如果文中有錯誤地方請多多包涵。 由於不是專業的前端開發,所以並沒有

vue中的router-link不能動態class

剛剛才發現,vue中的router-link好像在動態繫結class方面有問題,如下圖 如果這個樣子動態繫結router-link的class和div的class,你會發現,div的class動態繫結沒有問題,當滑鼠經過div的時候,div的顏色會發生改變,但是如果你的滑鼠經過router-l

java多型總結以及動態機制

什麼是多型? 1.繼承體現了多型,JAVA裡沒有多繼承,一個類之能有一個父類。而繼承的表現就是多型。一個父類可以有多個子類,而在子類裡可以重寫父類的方法(例如方法print()),這樣每個子類裡重寫的程式碼不一樣,自然表現形式就不一樣。這樣用父類的變數去引用不同的子類,在呼

vue.js v-model資料雙向例項

vue.js的一大功能便是實現資料的雙向繫結,本文就表單處理時運用v-model指令實現雙向繫結做一個介紹: v-model這個指令只能用在<input>, <select>,<textarea>這些表單元素上,所謂雙向繫結,指的就是我們

vuev-model資料雙向

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script

轉載-vue.js動態class

資料繫結 vue指令以  v-  字首標標,資料繫結的指令  v-bind:屬性名,簡寫為  :屬性名,簡單的資料繫結例子如下: <a v-bind:href="http://www.cnblogs.com/">京津冀</a> 簡寫: &l

vue動態class

1.v-bind:class 一個物件,以動態地切換 class: <div class="static" v-bind:class="{ active: isActi

python3__面向物件__靜態方法 / 類方法 / 屬性方法 / 例項動態屬性方法 / 類動態屬性方法

0.普通方法 普通方法訪問類屬性:self.__class__.類屬性名稱 class Test(object): n = 123 def __init__(self, n): self.n = n def tell(self):