中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Vue中如何動(dòng)態(tài)添加類名

小編給大家分享一下Vue中如何動(dòng)態(tài)添加類名,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)公司擁有十載成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),對(duì)于網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、重慶APP開(kāi)發(fā)公司、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開(kāi)發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名與空間等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

能夠向組件添加動(dòng)態(tài)類名是非常強(qiáng)大的功能。它使我們可以更輕松地編寫(xiě)自定義主題,根據(jù)組件的狀態(tài)添加類,還可以編寫(xiě)依賴于樣式的組件的不同變體。

添加動(dòng)態(tài)類名與在組件中添加 prop :class="classname"一樣簡(jiǎn)單。無(wú)論classname的計(jì)算結(jié)果是什么,都將是添加到組件中的類名。

當(dāng)然,對(duì)于Vue中的動(dòng)態(tài)類,我們可以做的還有很多。在本文中,我們將討論很多內(nèi)容:

  • 在 Vue 中使用靜態(tài)和動(dòng)態(tài)類

  • 如何使用常規(guī)的 JS 表達(dá)式來(lái)計(jì)算我們的類

  • 動(dòng)態(tài)類名的數(shù)組語(yǔ)法

  • 對(duì)象語(yǔ)法

  • 快速生成類名

  • 如何在自定義組件上使用動(dòng)態(tài)類名

靜態(tài)和動(dòng)態(tài)類

在Vue中,我們可以向組件添加靜態(tài)類和動(dòng)態(tài)類。

靜態(tài)類是那些永遠(yuǎn)不會(huì)改變的乏味類,它們將始終出現(xiàn)在組件中。另一方面,我們可以在應(yīng)用程序中添加和刪除動(dòng)態(tài)類。

添加靜態(tài)類與在常規(guī)HTML中所做的是完全相同的

<template>
  <span class="description">
    This is how you add static classes in Vue.
  </span>
</template>

動(dòng)態(tài)類非常類似,但是我們必須使用Vue的特殊屬性語(yǔ)法v-bind,以便將 JS 表達(dá)式綁定到我們的類:

<template>
  <span v-bind:class="'description'">
    This is how you add static classes in Vue.
  </span>
</template>

這里你會(huì)注意到,我們必須在動(dòng)態(tài)類名周圍添加額外的引號(hào)。

這是因?yàn)?code>v-bind語(yǔ)法接受我們作為 JS 值傳遞的任何內(nèi)容。添加引號(hào)可以確保Vue將其視為字符串。

Vue還有一個(gè)v-bind的簡(jiǎn)寫(xiě)語(yǔ)法:

<template>
  <span :class="'description'">
    This is how you add static classes in Vue.
  </span>
</template>

真正奇妙的是,您甚至可以在同一個(gè)組件上同時(shí)擁有靜態(tài)類和動(dòng)態(tài)類。靜態(tài)類用于我們知道不會(huì)更改的內(nèi)容,比如定位和布局,動(dòng)態(tài)類用于主題之類的:

<template>
  <span    class="description"
    :class="theme"
  >
    This is how you add static classes in Vue.
  </span>
</template>

export default {
  data() {    return {
      theme: 'blue-theme',
    };
  }
};
----------------------------------------
.blue-theme {
  color: navy;
  background: white;
}

在本例中,theme是包含我們將應(yīng)用的類名的變量。

有條件的類名

由于v-bind可以接受任何 JS 表達(dá)式,因此我們可以用它做一些非??岬氖虑椤N易钕矚g的是在模板中使用三元表達(dá)式,它往往是非常干凈和可讀的。

<template>
  <span    class="description"
    :class="darkMode ? 'dark-theme' : 'light-theme'"
  >
    This is how you add dynamic classes in Vue.
  </span>
</template>

如果darkModetrue,則將dark-theme用作我們的類名。 否則,我們選擇light-theme。

使用數(shù)組語(yǔ)法

如果需要?jiǎng)討B(tài)添加許多不同的類,可以使用數(shù)組或?qū)ο?。這兩種方法都很有用,我們先來(lái)看數(shù)組方式。

因?yàn)槲覀冎皇窃谟?jì)算一個(gè) JS 表達(dá)式,所以可以將我們剛剛學(xué)到的表達(dá)式與數(shù)組語(yǔ)法結(jié)合起來(lái)

<template>
  <span    class="description"
    :class="[
      fontTheme,
      darkMode ? 'dark-theme' : 'light-theme',
    ]"
  >
    This is how you add dynamic classes in Vue.
  </span>
</template>

我們使用數(shù)組在這個(gè)元素上設(shè)置兩個(gè)動(dòng)態(tài)類名。fontTheme的值是一個(gè)類名,它將改變字體的外觀。在前面的例子中,我們?nèi)匀豢梢允褂?code>darkMode變量在dark-themelight-theme之間切換。

使用對(duì)象語(yǔ)法

我們甚至可以使用對(duì)象來(lái)定義動(dòng)態(tài)類的列表,這給了我們更多的靈活性。

對(duì)于任何值為真的鍵/值對(duì),它將把鍵用作類名。讓我們看一個(gè)對(duì)象語(yǔ)法的例子:

<template>
  <span    class="description"
    :class="{
      'dark-theme': darkMode,
      'light-theme': !darkMode,
    ]"
  >
    This is how you add dynamic classes in Vue.
  </span>
</template>

我們的對(duì)象包含兩個(gè)鍵:dark-themelight-theme。與我們之前實(shí)現(xiàn)的邏輯類似,我們希望基于darkMode的值在這些主題之間切換。

當(dāng)darkModetrue 時(shí),會(huì)把dark-theme作為一個(gè)動(dòng)態(tài)類名應(yīng)用于我們的元素。但是light-them不會(huì)被應(yīng)用,因?yàn)?code>!darkMode 值為false

現(xiàn)在我們已經(jīng)介紹了向Vue組件動(dòng)態(tài)添加類的基礎(chǔ)知識(shí)。那么如何使用自己的自定義組件來(lái)做到這一點(diǎn)?

與自定義組件一起使用

假設(shè)我們?cè)?app 中有一個(gè)自定義組件

<template>
  <MovieList
    :movies="movies"
    :genre="genre"
  />
</template>

如果我們要?jiǎng)討B(tài)添加一個(gè)將更改主題的類,我們?cè)撛趺崔k?其實(shí)很簡(jiǎn)單。

我們只需要像以前那樣添加:class屬性

<template>
  <MovieList
    :movies="movies"
    :genre="genre"
    :class="darkMode ? 'dark-theme' : 'light-theme'"
  />
</template>

之所以起作用,是因?yàn)閂ue直接在MovieList的根元素上設(shè)置類。

在組件上設(shè)置props時(shí),Vue會(huì)將這些props與組件在其props部分中指定的props進(jìn)行比較。 如果有匹配項(xiàng),它將作為常規(guī)props傳遞。 否則,Vue會(huì)將其添加到根DOM元素中。

在這里,由于MovieList沒(méi)有指定class屬性,因此Vue知道應(yīng)該在根元素上進(jìn)行設(shè)置。

不過(guò),我們可以用動(dòng)態(tài)類名做一些更高級(jí)的事情。

快速生成類名

我們已經(jīng)介紹了許多動(dòng)態(tài)添加或刪除類名的不同方法。但是動(dòng)態(tài)生成類名本身又如何呢?

假設(shè)有一個(gè)Button組件,它為所有不同類型的按鈕提供20種不同的CSS樣式。

你可能不想花一整天的時(shí)間把每一項(xiàng)都寫(xiě)出來(lái),也不想把開(kāi)關(guān)的邏輯都寫(xiě)出來(lái)。相反,我們將動(dòng)態(tài)生成要應(yīng)用的類的名稱。

<template>
  <span
    class="description"
    :class="theme"
  >
    This is how you add static classes in Vue.
  </span>
</template>


export default {
  data() {
    return {
      theme: 'blue-theme',
    };
  }
};

.blue-theme {
  color: navy;
  background: white;
}

我們可以設(shè)置一個(gè)變量來(lái)包含我們想要的任何類名的字符串。如果我們想對(duì)Button組件執(zhí)行此操作,則可以執(zhí)行以下簡(jiǎn)單操作:

<template>
  <button
    @click="$emit('click')"
    class="button"
    :class="theme"
  >
    {{ text }}
  </button>
</template>

export default {
  props: {
    theme: {
      type: String,
      default: 'default',
    }
  }
};

.default {}

.primary {}

.danger {}

現(xiàn)在,使用Button組件的任何人都可以將theme屬性設(shè)置為他們想要使用的任何主題。

如果沒(méi)有設(shè)置任何類,它將添加.default類。如果將其設(shè)置為primary,則會(huì)添加.primary類。

使用計(jì)算屬性來(lái)簡(jiǎn)化類

最終,模板中的表達(dá)式將變得過(guò)于復(fù)雜,并將開(kāi)始變得非?;靵y和難以理解。幸運(yùn)的是,我們有一個(gè)簡(jiǎn)單的解決方案,就是使用計(jì)算民屬性:

<template>
  <MovieList
    :movies="movies"
    :genre="genre"
    :class="class"
  />
</template>

export default {
  computed: {
    class() {
      return darkMode ? 'dark-theme' : 'light-theme';
    }
  }
};

這不僅易于閱讀,而且還可以輕松添加新功能并在將來(lái)進(jìn)行重構(gòu)。

以上是“Vue中如何動(dòng)態(tài)添加類名”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標(biāo)題:Vue中如何動(dòng)態(tài)添加類名
網(wǎng)站URL:http://www.rwnh.cn/article24/jjesce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器品牌網(wǎng)站制作、定制網(wǎng)站、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
潼南县| 抚顺市| 门头沟区| 巴南区| 阜新市| 筠连县| 犍为县| 屯门区| 玛曲县| 开远市| 霍山县| 本溪市| 玛曲县| 新化县| 通州区| 长泰县| 南昌市| 苏州市| 福安市| 方城县| 甘南县| 营口市| 诸暨市| 巫山县| 乌审旗| 建阳市| 诸暨市| 阳泉市| 乡城县| 宁明县| 寻乌县| 上林县| 南皮县| 乌什县| 桓仁| 博客| 望江县| 南涧| 喜德县| 凤凰县| 武功县|