国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【vue3】數(shù)據(jù)綁定,動(dòng)態(tài)渲染class與style

這篇具有很好參考價(jià)值的文章主要介紹了【vue3】數(shù)據(jù)綁定,動(dòng)態(tài)渲染class與style。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

數(shù)據(jù)綁定的一個(gè)常見(jiàn)需求場(chǎng)景是操縱元素的 CSS class 列表和內(nèi)聯(lián)樣式(style)。因?yàn)?class 和 style 都是 attribute,我們可以和其他 attribute 一樣使用 v-bind 將它們和動(dòng)態(tài)的字符串綁定。但是,在處理比較復(fù)雜的綁定時(shí),通過(guò)拼接生成字符串是麻煩且易出錯(cuò)的。因此,Vue 專門為 class 和 style 的 v-bind 用法提供了特殊的功能增強(qiáng)除了字符串外,表達(dá)式的值也可以是對(duì)象或數(shù)組。

綁定 class

綁定對(duì)象

我們可以給 :class (v-bind:class 的縮寫(xiě)) 傳遞一個(gè)對(duì)象來(lái)動(dòng)態(tài)切換 class:

<div :class="{ active: isActive }"></div>

上面的語(yǔ)法表示 active 是否存在取決于數(shù)據(jù)屬性 isActive 的真假值。

你可以在對(duì)象中寫(xiě)多個(gè)字段來(lái)操作多個(gè) class。此外,:class 指令也可以和一般的 class attribute 共存。舉例來(lái)說(shuō),下面這樣的狀態(tài):

data() {
  return {
    isActive: true,
    hasError: false
  }
}

配合以下模板:

<div
  class="static"
  :class="{ active: isActive, 'text-danger': hasError }"
></div>

渲染的結(jié)果會(huì)是:

<div class="static active"></div>

當(dāng) isActive 或者 hasError 改變時(shí),class 列表會(huì)隨之更新。舉例來(lái)說(shuō),如果 hasError 變?yōu)?true,class 列表也會(huì)變成 “static active text-danger”。

綁定的對(duì)象并不一定需要寫(xiě)成內(nèi)聯(lián)字面量的形式,也可以直接綁定一個(gè)對(duì)象:

data() {
  return {
    classObject: {
      active: true,
      'text-danger': false
    }
  }
}
<div :class="classObject"></div>

這也會(huì)渲染出相同的結(jié)果。我們也可以綁定一個(gè)返回對(duì)象的計(jì)算屬性。這是一個(gè)常見(jiàn)且很有用的技巧:

data() {
  return {
    isActive: true,
    error: null
  }
},
computed: {
  classObject() {
    return {
      active: this.isActive && !this.error,
      'text-danger': this.error && this.error.type === 'fatal'
    }
  }
}
<div :class="classObject"></div>

綁定數(shù)組

我們可以給 :class 綁定一個(gè)數(shù)組來(lái)渲染多個(gè) CSS class:

data() {
  return {
    activeClass: 'active',
    errorClass: 'text-danger'
  }
}
<div :class="[activeClass, errorClass]"></div>

渲染的結(jié)果是:

<div class="active text-danger"></div>

如果你也想在數(shù)組中有條件地渲染某個(gè) class,你可以使用三元表達(dá)式:

<div :class="[isActive ? activeClass : '', errorClass]"></div>

errorClass 會(huì)一直存在,但 activeClass 只會(huì)在 isActive 為真時(shí)才存在。

然而,這可能在有多個(gè)依賴條件的 class 時(shí)會(huì)有些冗長(zhǎng)。因此也可以在數(shù)組中嵌套對(duì)象:

<div :class="[{ active: isActive }, errorClass]"></div>

在組件上使用

對(duì)于只有一個(gè)根元素的組件,當(dāng)你使用了 class attribute 時(shí),這些 class 會(huì)被添加到根元素上,并與該元素上已有的 class 合并。

舉例來(lái)說(shuō),如果你聲明了一個(gè)組件名叫 MyComponent,模板如下:

<!-- 子組件模板 -->
<p class="foo bar">Hi!</p>

在使用時(shí)添加一些 class:

<!-- 在使用組件時(shí) -->
<MyComponent class="baz boo" />

渲染出的 HTML 為:

<p class="foo bar baz boo">Hi!</p>

Class 的綁定也是同樣的:

<MyComponent :class="{ active: isActive }" />

當(dāng) isActive 為真時(shí),被渲染的 HTML 會(huì)是:

<p class="foo bar active">Hi!</p>

如果你的組件有多個(gè)根元素,你將需要指定哪個(gè)根元素來(lái)接收這個(gè) class。你可以通過(guò)組件的 $attrs 屬性來(lái)實(shí)現(xiàn)指定:

<!-- MyComponent 模板使用 $attrs 時(shí) -->
<p :class="$attrs.class">Hi!</p>
<span>This is a child component</span>
<MyComponent class="baz" />

這將被渲染為:

<p class="baz">Hi!</p>
<span>This is a child component</span>

綁定內(nèi)聯(lián)樣式style

綁定對(duì)象

:style 支持綁定 JavaScript 對(duì)象值,對(duì)應(yīng)的是 HTML 元素的 style 屬性:

data() {
  return {
    activeColor: 'red',
    fontSize: 30
  }
}
<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

盡管推薦使用 camelCase,但 :style 也支持 kebab-cased 形式的 CSS 屬性 key (對(duì)應(yīng)其 CSS 中的實(shí)際名稱),例如:

<div :style="{ 'font-size': fontSize + 'px' }"></div>

直接綁定一個(gè)樣式對(duì)象通常是一個(gè)好主意,這樣可以使模板更加簡(jiǎn)潔:

data() {
  return {
    styleObject: {
      color: 'red',
      fontSize: '13px'
    }
  }
}
<div :style="styleObject"></div>

同樣的,如果樣式對(duì)象需要更復(fù)雜的邏輯,也可以使用返回樣式對(duì)象的計(jì)算屬性。

綁定數(shù)組

我們還可以給 :style 綁定一個(gè)包含多個(gè)樣式對(duì)象的數(shù)組。這些對(duì)象會(huì)被合并后渲染到同一元素上:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-536654.html

<div :style="[baseStyles, overridingStyles]"></div>

到了這里,關(guān)于【vue3】數(shù)據(jù)綁定,動(dòng)態(tài)渲染class與style的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uniapp、vue中動(dòng)態(tài)添加綁定style、class

    1.普通對(duì)象動(dòng)態(tài)添加(比較常見(jiàn)) 2. 數(shù)組 對(duì)象動(dòng)態(tài)添加 3.三目運(yùn)算動(dòng)態(tài)添加

    2024年02月16日
    瀏覽(26)
  • 基于vue和element-ui的表格組件,主推數(shù)據(jù)渲染,支持內(nèi)容和方法靈活綁定,提供動(dòng)態(tài)具名插槽自定義內(nèi)容

    基于vue和element-ui的表格組件,主推數(shù)據(jù)渲染,支持內(nèi)容和方法靈活綁定,提供動(dòng)態(tài)具名插槽自定義內(nèi)容

    ? ? ? ? 組件名為commonTable,主要是基于element-ui中的表格組件進(jìn)行二次封裝的組件,集成了常用的表格功能,除默認(rèn)內(nèi)容的顯示外,還包括以下幾點(diǎn): ? ? ? ? 1. 狀態(tài)的篩選和顯示; ? ? ? ? 2. 操作按鈕的顯示和方法綁定; ? ? ? ? 3. 自定義具名插槽內(nèi)容的封裝; ? ? ?

    2024年02月07日
    瀏覽(31)
  • vue、uniapp中動(dòng)態(tài)添加綁定style、class 9種方法實(shí)現(xiàn)

    直接使用靜態(tài)class和style屬性: 使用場(chǎng)景:當(dāng)class和style屬性是固定不變的時(shí)候,可以直接在模板中寫(xiě)死。 優(yōu)點(diǎn):簡(jiǎn)單直接,沒(méi)有額外的計(jì)算和邏輯。 缺點(diǎn):無(wú)法根據(jù)條件動(dòng)態(tài)修改class和style。 使用v-bind動(dòng)態(tài)綁定class和style屬性: 使用場(chǎng)景:當(dāng)class和style屬性需要根據(jù)組件的da

    2024年02月10日
    瀏覽(31)
  • vue3 組合式 ant.design組件Table嵌套表格,從后端獲取數(shù)據(jù)并動(dòng)態(tài)渲染

    在根據(jù)官方文檔使用ant.design中的嵌套表格時(shí),發(fā)現(xiàn)官方文檔很多地方都不夠詳細(xì)。在過(guò)程中踩了不少坑,例如: 子表如何獲取父表的數(shù)據(jù)? 如何獲取子表的行索引? 如何讓子表的數(shù)據(jù)源來(lái)自父表該行的數(shù)據(jù)? 總之,最后還是磕磕絆絆做完了功能,于是第一時(shí)間把代碼整理

    2024年02月15日
    瀏覽(22)
  • vue3 動(dòng)態(tài)(:src)綁定img圖片

    webpack 創(chuàng)建的vue2可以通過(guò) require對(duì)圖片進(jìn)行動(dòng)態(tài)綁定 但vite創(chuàng)建的vue3則不可以通過(guò)require對(duì)圖片進(jìn)行動(dòng)態(tài)綁定 可以通過(guò)一下方法進(jìn)行綁定(注意vite根目錄是 / ,且vite會(huì)自動(dòng)解析src中的字符串)

    2024年02月13日
    瀏覽(29)
  • Vue 數(shù)據(jù)綁定 和 數(shù)據(jù)渲染

    Vue 數(shù)據(jù)綁定 和 數(shù)據(jù)渲染

    目錄 一、Vue快速入門 ? ? ? ? 1.簡(jiǎn)介 :?? ? ? ? ? 2.MVVM :? ? ? ? ? 3.準(zhǔn)備工作 :? 二、數(shù)據(jù)綁定 ? ? ? ? 1.實(shí)例 :? ? ? ? ? 2.驗(yàn)證 :? 三、數(shù)據(jù)渲染 ? ? ? ? 1.單向渲染 :? ? ? ? ? 2.雙向渲染 :? 四、事件綁定 ? ? ? ? 1.簡(jiǎn)介 :? ? ? ? ? 2.實(shí)例 :? 五、修飾符 ? ? ? ? 1.簡(jiǎn)

    2024年02月06日
    瀏覽(20)
  • vue3探索——vue3+vite2動(dòng)態(tài)綁定圖片優(yōu)雅解決方案

    vue3探索——vue3+vite2動(dòng)態(tài)綁定圖片優(yōu)雅解決方案

    優(yōu)雅解決方案在最下面,小伙伴們兒可以直接前往 ?? 在vue3+vite2項(xiàng)目中,我們有時(shí)候想要?jiǎng)討B(tài)綁定資源,比如像下面的代碼這樣: 實(shí)際效果是這樣: 我們注意到,控制臺(tái)的報(bào)錯(cuò)信息 GET http://127.0.0.1:5173/1.jpg 404 (Not Found) GET :表示向服務(wù)器請(qǐng)求資源的方式。 http://127.0.0.1:5173

    2024年02月10日
    瀏覽(89)
  • vue3 antd項(xiàng)目實(shí)戰(zhàn)——Form表單的提交與校驗(yàn)【v-model雙向綁定input輸入框、form表單數(shù)據(jù),動(dòng)態(tài)校驗(yàn)規(guī)則】

    vue3 antd項(xiàng)目實(shí)戰(zhàn)——Form表單的提交與校驗(yàn)【v-model雙向綁定input輸入框、form表單數(shù)據(jù),動(dòng)態(tài)校驗(yàn)規(guī)則】

    本文依舊沿用 ant design vue 組件庫(kù)和 ts 語(yǔ)言????更多內(nèi)容見(jiàn)Ant Design Vue官方文檔 ???? vue3 antd項(xiàng)目實(shí)戰(zhàn)——Form表單【后臺(tái)管理系統(tǒng) v-model數(shù)據(jù)的雙向綁定,input輸入框、Radio單選框的嵌套使用】 在上期文章中,我們完成了 UI界面的渲染 (渲染效果如下圖),本期文章將帶著大

    2023年04月22日
    瀏覽(24)
  • vue3+vite2動(dòng)態(tài)綁定圖片優(yōu)雅解決方案

    vue3+vite2動(dòng)態(tài)綁定圖片優(yōu)雅解決方案

    優(yōu)雅解決方案在最下面,小伙伴們兒可以直接前往 ?? 在vue3+vite2項(xiàng)目中,我們有時(shí)候想要?jiǎng)討B(tài)綁定資源,比如像下面的代碼這樣: 實(shí)際效果是這樣: 我們注意到,控制臺(tái)的報(bào)錯(cuò)信息 GET http://127.0.0.1:5173/1.jpg 404 (Not Found) GET :表示向服務(wù)器請(qǐng)求資源的方式。 http://127.0.0.1:5173

    2024年02月11日
    瀏覽(97)
  • Vue3中動(dòng)態(tài)綁定:disabled element-plus使用方法

    @change=\\\"whetherFlag($event)\\\"? 根據(jù)value值判斷是否禁用?:disabled=\\\"isShow\\\" 初始值為禁用狀態(tài) const isShow = refboolean(true); ?根據(jù)value的值判斷是否禁用 ?

    2024年01月25日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包