中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vuejs如何改變css

發布時間:2021-09-24 15:14:36 來源:億速云 閱讀:142 作者:小新 欄目:編程語言

小編給大家分享一下vuejs如何改變css,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

vuejs改變css的方法:1、使用“v-bind:class”或者“v-bind:style”指令修改css樣式;2、直接通過操作dom來對css樣式進行更改。

本文操作環境:Windows7系統、vue2.9.6版,DELL G3電腦。

vuejs怎么改變css?

Vue.js中對css的操作(修改)具體方式詳解

使用v-bind:class或者v-bind:style或者直接通過操作dom來對其樣式進行更改;

1.v-bind:class || v-bind:style

其中v-bind是指令,: 后面的class 和style是參數,而class之后的指在vue的官方文檔里被稱為'指令預期值'(這個不必深究,反正個人覺得初學知道他叫啥名有啥用就好了)同v-bind的大多數指令(部分特殊指令如V-for除外)一樣,除了可以綁定字符串類型的變量外,還支持一個單一的js表達式,也就是說v-bind:class的'指令預期值'除了字符串以外還可以是對象或者數組(‘v-bind:'中的v-bind可省略)。

1.1:對象語法:

通過對象來綁定v-bind:class=“{'css類名':控制是否顯示(true or false)}”

<template>
 <p>
 <p class='mycolor' :class="{'colordisplay':display}"><span>1.1我的對象更改&&綁定test</span></p>
 </p>
</template>
<script>
 export default {
 name: 'mytest',
 data() {
 return {
 display: true
 }
 },
 mounted() {},
 computed: {},
 methods:{}
 }
</script>
<style>
 .colordisplay {
 display: inline;
 background: red;
 border: 1px solid blue
 }
</style>

如果display為true,那么此時該部分的class就是 class="mycolor colordisplay",通過設置display的值就可以控制colordisplay的顯示

如果要設置綁定多個class的話就和正常的對象鍵值對一樣中間用逗號隔開就可以了v-bind:class="{'colordisplay':display,'ispay':pay}"

1.2:內聯樣式:

v-bind:style='mycolor'

template

<p :style='mypagestyle'><span>1.2我的樣式內聯更改&&綁定test</span></p>

data

mypagestyle:{color: 'yellow',background:"blue"},

1.3:數組語法:

也可以通過數組來綁定v-bind:style='[mycolor1,mycolor2]'

<p :style="[myarr,myarrtest]"><span>1.3我的數組更改&&綁定test</span></p>

然后設置返回的數據為

myarr:{color: 'white'},
myarrtest:{background:'#000',display:'inline'},

2.計算屬性

也可以通過計算屬性計算(適用于較為復雜判斷)樣式

<p class='computed' :class='compuretu'>2.計算屬性判斷</p>

將計算屬性的返回值作為類名,通過判斷serd和slid的值來控制樣式的顯示與否

 data() {
 return {serd:true,slid:true}
 }, 
 computed: {
 compuretu: function() {
 return {compuretu: this.serd && this.slid}
 }
 }

設置樣式

.compuretu{color:white;background: red}

3.操作節點

由于vue本身是虛擬dom如果通過document來進行節點樣式更改的時候有可能會出現'style' is not definde的錯誤,

這個問題的解決方式就必須得對vue 的理解要求更高一層了,它可以通過在vue本身的周期mounted函數里用ref和$refs 來獲取樣式,來完成對其樣式的更改:示例如下:

<template>
<p>
<p style=“color: green;” ref="abc"><span>我的test</span></p>
</p>
</template>
<script>
export default {
name: 'mytest',
data() {
return {}
},
mounted() {console.log(this.$refs.abc.style.cssText)}
}
<script>
<style>
</style>

說明:

1.ref被用來給元素(子組件)注冊引用信息;

2.vm.$refs 一個對象,持有已注冊過 ref 的所有子組件(或HTML元素);

使用:在 HTML元素 中,添加ref屬性,然后在JS中通過vm.$refs.屬性來獲取

上述會將style的內容全部輸出(color: green;)

這樣的話對其進行更改就可以對相應的屬性直接更改(this.$refs.abc.style.color=red

<template>
 <p>
 <p :class='{mycss}'><span>我的單個class屬性的test</span></p>
 <p class='mycolor' :class="{'colordisplay':display}"><span>1.1我的對象更改&&綁定test</span></p>
 <p :style='mypagestyle'><span>1.3我的樣式內聯更改&&綁定test</span></p>
 <p :style="[myarr,myarrtest]"><span>1.3我的數組更改&&綁定test</span></p>
 <p class='computed' :class='compuretu'>2.計算屬性判斷</p>
 <p style="color: green;" ref="abc"><span>3.我的dom更改test</span></p>
 </p>
</template>
<script>
 export default {
 name: 'mytest',
 data() {
 return {
 serd:true,
 slid:true,
 mycss: {
  color: ''
 },
 mypagestyle:{
  color: 'yellow',
  background:"blue"
 },
 myarr:{
  color: 'white'
 },
 myarrtest:{
  background:'#000',
  display:'inline'
 },
 display: true
 }
 },
 mounted() {  
 console.log(this.$refs.abc.style.cssText)
 this.$refs.abc.style.color = 'red' //修改屬性
 this.$refs.abc.style.background = 'black' //新增屬性
 this.$refs.abc.style.display = 'inline' 
 console.log(111) 
 console.log(this.$refs.abc.style.display) 
 },
 computed: {
 compuretu: function() {
 return {
  compuretu: this.serd && this.slid
 }
 }
 },
 methods:{
 
 }
 }
</script>
<style>
 .mycss {
 color: blue
 }
 
 .colordisplay {
 display: inline;
 background: red;
 border: 1px solid blue
 }
 
 .mycolor {
 color: orange
 }
 
 .computed {
 border: 1px solid yellow
 }
 .compuretu{
 color:white;
 background: red;
 }
</style>

以上是“vuejs如何改變css”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高邮市| 五河县| 梁河县| 集贤县| 洞口县| 贵阳市| 乌什县| 咸宁市| 上虞市| 凉山| 塔城市| 宜昌市| 保靖县| 通化市| 澳门| 绩溪县| 渭源县| 新邵县| 西藏| 连云港市| 竹北市| 盐城市| 三台县| 西乌| 涞水县| 黄浦区| 洪湖市| 宁阳县| 墨脱县| 屏山县| 当阳市| 抚顺市| 盘锦市| 富川| 化州市| 绥中县| 华安县| 通道| 临沂市| 千阳县| 禄劝|