在vue中:style 的使用方式匯總
在日常開發(fā)中:style的使用也是比較常見的:
親測有效
1.最通用的寫法
<p :style="{fontFamily:arr.conFontFamily,color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p>
2.三元表達式
<a :style="{height:(index==0?'89': ''),margin:(index == 0?'52px 37px':'')color:(index==0?arr.conFontColor:'#000')}" :href="con.subTitleHref" rel="external nofollow" target="_self">{{con.subTitle}}</a>
3. 還可以以上兩種方法結(jié)合起來
<p :style="{fontFamily:arr.conFontFamily,fontSize:(arr.conFontSize!=0.36?arr.conFontSize+arr.conFontUnit:''),color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p>
注意:這兩種方式有個弊端,當需要把很多個樣式添加到div上時,div看起來很臃腫
4.用計算屬性
結(jié)合計算屬性 將樣式都提出來 最后形成一個變量 把這個變量添加到div上
這里要做的工作分幾步:
- 通過計算屬性把要放到一起的樣式歸整一下
- 針對默認值是空值或者特定值的樣式 是不需要將這個樣式放到div上的。
- 舉例:如果div 已在css樣式里設(shè)置了font-size 是16px,那么div行內(nèi)樣式 就不要存在font-size:16px 這種重復沒有意義 就要做判斷去除
這里想到的辦法是:
用一個變量存入16 這里是conFontSize,如果conFontSize值等于16 那么就讓font-size:''為空 然后通過循環(huán)style 將為空的font-size 去掉。
如果不等于16 就是修改的,就要正常顯示
將:style="arr.styles.conTitleStyle"添加到div上
代碼如下:
html
<p :style="arr.styles.conTitleStyle">{{con.title}}</p>
js
data(){ return { arr:{ styles:{ //存放的是 動態(tài)修改的樣式 conTitleStyle:{},// 內(nèi)容標題總樣式 conLiStyle:{},//內(nèi)容li總樣式 }, pieceStyle:{ conFontFamily:"", conFontSize:16, conFontColor:"", conBgColor:"", conLineHeight:21,// Writing 專用 conLRCenter:"",// 對齊方式 conTopRow:0,//首行縮進 conLetterSpace:0,//字體間隔 conFontBold:"",//加粗 conSpace:""http://文字是否省略 } } } }, computed:{ diyConTitleStyle:function(){ var pieceD = this.arr.pieceStyle; var fontSizeNum; // 判斷對應(yīng)模塊fontSize的默認值 (默認值設(shè)置的和css fontsize一樣) 如果等于就讓這一項的css 為空 不等于就走conFontSize if(this.arr.mtype=='Imglist'){ fontSizeNum=(pieceD.conFontSize!=12) }else if(this.arr.mtype=='ImglistScroll'||this.arr.mtype=='NewsList2'){ fontSizeNum=(pieceD.conFontSize!=17) }else if(this.arr.mtype=='NavList'){ fontSizeNum=(pieceD.conFontSize!=18) }else if(this.arr.mtype=='NavDock'){ fontSizeNum=(pieceD.conFontSize!=14) }else if(this.arr.mtype=='NewsList2'){ fontSizeNum=(pieceD.conFontSize!=15) }else{ fontSizeNum=(pieceD.conFontSize!=16) } // 判斷對應(yīng)模塊lineheight的默認值 if(this.arr.mtype=='NewsList'){ var lhnum=(pieceD.conLineHeight!=16) }else if(this.arr.mtype=='Writing'){ var lhnum=(pieceD.conLineHeight!=21) } //console.log(lhnum) var dt={ "color":pieceD.conFontColor, "font-family":pieceD.conFontFamily, "font-size":fontSizeNum?pieceD.conFontSize+"px":"", "background-color":pieceD.conBgColor, "line-height":(lhnum?pieceD.conLineHeight+'px':''), "text-align":pieceD.conLRCenter, "text-indent":(pieceD.conTopRow!=0?pieceD.conTopRow+'px':''), "letter-spacing":(pieceD.conLetterSpace!=0?pieceD.conLetterSpace+'px':''), "font-weight":pieceD.conFontBold, "white-space":pieceD.conSpace } //過濾掉即刪除掉空值的參數(shù)和數(shù)值 for (var i in dt) { dt[i]==""?delete(dt[i]):1 } return dt } }, watch:{ arr:{ handler(newValue, oldValue) { // 監(jiān)聽是為了把更改后的樣式及時保存到arr.styles里,最后arr是要提交的 this.arr=newValue; this.arr.styles.conTitleStyle=this.diyConTitleStyle; this.arr.styles.conLiStyle=this.diyConLiStyle; } deep: true } }
最后成果 當font-size是16px時:
當font-size 不是16px時 行內(nèi)樣式出現(xiàn)font-size了
5.在:style放兩個class樣式怎么放
用&& 連接
<p :style="arr.styles.conTitleStyle&&arr.styles.conLiStyle">{{con.title}}</p> 錯誤
發(fā)現(xiàn)只有后面的那個生效。
我希望兩個都生效 所以得用數(shù)組:正確
<p :style="[arr.styles.conTitleStyle,arr.styles.conLiStyle]">{{con.title}}</p>
到此這篇關(guān)于在vue中:style 的幾種使用方式的文章就介紹到這了,更多相關(guān)vue :style使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue.js組件tree實現(xiàn)省市多級聯(lián)動
這篇文章主要為大家詳細介紹了Vue.js組件tree實現(xiàn)省市多級聯(lián)動的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12el-table多選toggleRowSelection不生效解決方案
這篇文章主要給大家介紹了關(guān)于el-table多選toggleRowSelection不生效的解決方案,文中通過圖文以及代碼將解決辦法介紹的非常詳細,需要的朋友可以參考下2023-08-08vue仿攜程輪播圖效果(滑動輪播,下方高度自適應(yīng))
這篇文章主要介紹了vue仿攜程輪播圖效果(滑動輪播,下方高度自適應(yīng)),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02uniapp中使用lottie實現(xiàn)JSON動畫的操作步驟
這篇文章主要介紹了如何在項目中使用JSON動畫組件,包括創(chuàng)建目錄結(jié)構(gòu)、下載JSON文件、編寫自定義組件代碼以及組件的使用方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-01-01