最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue如何使用CSS自定義變量

 更新時(shí)間:2021年05月08日 14:39:15   作者:四路閑人  
這篇文章主要介紹了Vue如何使用CSS自定義變量,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下

在 css 自定義變量的功能以及出來許久了,但實(shí)際開發(fā)中大家使用并不多。歸其原因是因?yàn)?less、sass 等預(yù)處理器已經(jīng)擁有定義變量的功能,以及Vue、react很方便設(shè)置 style 樣式,大家可能覺得使用 css 定義變量不方便且沒必要。實(shí)則不然舉個(gè)最直觀的栗子:“如何使用 vue 設(shè)置偽類偽元素的樣式”。這是個(gè)世紀(jì)難題,大部分人可能會(huì)通過修改類名的方式解決,可如果要修改的樣式多,或者我想通過不同的數(shù)據(jù)渲染不同的樣式,那該怎么辦呢?今天我就來直接解決這個(gè)問題。 先來了解什么是 css 自定義變量。 簡(jiǎn)單使用:

<style>
div {
    --bg-color : pink; //定義變量
    color : var( --bg-color ) // 通過var函數(shù)使用變量
}
</style>
<div>hello</div>

你將會(huì)得到一個(gè)粉色的hello。在父級(jí)定義的變量也可以讓子級(jí)及其偽類偽元素使用。

<style>
div {
    --bg-color : pink; //定義變量
    color : var( --bg-color ); // 通過var函數(shù)使用變量
}
div:hover {
    background-color : var( --bg-color );
}
div span {
    background-color : var( --bg-color );
}
</style>
<div>hello <span>world</span> </div>

var 函數(shù)還可以設(shè)置一個(gè)默認(rèn)值,當(dāng)查找不到自定義變量時(shí),你還可以設(shè)置一個(gè)默認(rèn)值。

<style>
div {
    color : var( --bg-color, pink ); // 第二個(gè)參數(shù)為默認(rèn)值
    background-color : var( --bg-color ,--color,--a,red );// 你甚至可以設(shè)置多個(gè)變量,它從左到右依次查找
}
</style>
<div>hello</div>

到此為止 css 自定義變量就介紹的完了。接下來看看它在 vue 中的使用。你可以在標(biāo)簽的 style 屬性里面設(shè)置其變量的值。

<template>
	<div class="box" @click="changeColor" :style="{'--a' : a}">hello</div>
</template>
export default {
  data(){
    return {
      a : 'blue',
    }
  },
  methods: {
    changeColor(){
      this.a = this.a === 'blue' ? "red" : "blue"
    }
  }
}
</script>
<style>
  .box {
      color : var(--a);
  }
  .box:hover {
    background-color : var(--a);
  }
</style>

點(diǎn)擊 div 它的字體顏色以及其 hover 時(shí)的背景顏色將會(huì)直接改變。在此時(shí)你會(huì)發(fā)現(xiàn)通過自定義 css 變量,可以很方便的修改其樣式以及可以直接修改其偽類的屬性。由于子元素可以共享父元素的自定義變量,你可以直接在子組件中直接使用父自己的變量。

// 父組件
<template>
	<div class="box"  :style="{'--a' : a}">hello <Child></Child></div>
</template>
export default {
  components : {
      Child
  },
  data(){
    return {
      a : 'blue',
    }
  }
}
</script>

// 子組件 Child
<template>
  <span>world</span>
</template>

<style lang="less">
  span {
      color : var(--color);
  }
</style>

試驗(yàn)一下效果非常的 amazing ,這樣我們可以在父組件修改狀態(tài)來改變子組件的樣式,繞過了子父組件傳值。注意:子組件必須要在變量能作用到的范圍類掛載才行。

上述栗子中可以看出,子定義變量的方便之處。為來跟為方便的使用你可以通過 vue 自定義指令的方式設(shè)置變量。

   // vue3 自定義指令。
      function change(el,binding){
        for(let [key,value] of Object.entries(binding.value)){
            el.style.setProperty('--'+key, value);
        }
    }
  app.directive(css, {
        mounted(el,binding){
            change(el,binding)
        }
        updated(el, binding) {
            change(el,binding)
        }
       
    })

注意修改css變量使用 el.style['--color'] = 'red' 是無效的,必須得用 style.setProperty api設(shè)置。注冊(cè)好指令后我們可以。

<template>
	<div v-css="{a,b}" class="box" @click="changeColor"></div>
</template>
export default {
  data(){
    return {
      a : 'blue',
      b : 'pink'
    }
  },
  methods: {
    changeColor(){
      this.a = this.a === 'blue' ? "red" : "blue"
      this.b = this.b === 'pink' ? "yellow" : "pink"
    }
  }
}
</script>
<style>
  .box {
    width : 100px;
    height : 100px;
    background-color : var(--a);
  }
  .box:hover {
    background-color : var(--b);
  }
</style>

極大的方便了vue 對(duì)于 style 樣式的操作。

我在此基礎(chǔ)上進(jìn)行了一些優(yōu)化及擴(kuò)展,開源了一個(gè)工具,已發(fā)布在 npm 上。地址www.npmjs.com/package/vue… 。歡迎大家多多下載體驗(yàn),喜歡也可以 star 哦。

以上就是Vue如何使用CSS自定義變量的詳細(xì)內(nèi)容,更多關(guān)于Vue 使用CSS自定義變量的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例

    vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例

    今天小編就為大家分享一篇vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 基于Vue3實(shí)現(xiàn)印章徽章組件的示例代碼

    基于Vue3實(shí)現(xiàn)印章徽章組件的示例代碼

    這篇文章主要介紹了如何利用vue3實(shí)現(xiàn)簡(jiǎn)單的印章徽章控件,文中通過示例代碼講解詳細(xì),需要的朋友們下面就跟隨小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 解決vue 給window添加和移除resize事件遇到的坑

    解決vue 給window添加和移除resize事件遇到的坑

    這篇文章主要介紹了解決vue 給window添加和移除resize事件遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 詳解vue中v-for的key唯一性

    詳解vue中v-for的key唯一性

    在for循環(huán)中生成的元素要加key屬性不僅是在Vue框架中是要添加的,在React框架中也是要添加的。但\其實(shí)都不是必須的,因?yàn)樵?Vue和React中不加key是不會(huì)報(bào)錯(cuò)的,只是會(huì)有警告。但是我們?cè)谏钊肓私饧觡ey的原因后會(huì)明白,若想確保沒有隱患的話,元素還是必須要加key屬性。
    2021-05-05
  • vue中el-table合并列的具體實(shí)現(xiàn)

    vue中el-table合并列的具體實(shí)現(xiàn)

    本文主要介紹了vue中el-table合并列的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • vue項(xiàng)目中data數(shù)據(jù)之間互相訪問的實(shí)現(xiàn)

    vue項(xiàng)目中data數(shù)據(jù)之間互相訪問的實(shí)現(xiàn)

    本文主要介紹了vue項(xiàng)目中data數(shù)據(jù)之間互相訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 解決ant design vue中樹形控件defaultExpandAll設(shè)置無效的問題

    解決ant design vue中樹形控件defaultExpandAll設(shè)置無效的問題

    這篇文章主要介紹了解決ant design vue中樹形控件defaultExpandAll設(shè)置無效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue3的hooks用法總結(jié)

    vue3的hooks用法總結(jié)

    vue3中的hooks其實(shí)是函數(shù)的寫法,就是將文件的一些單獨(dú)功能的js代碼進(jìn)行抽離出來,放到單獨(dú)的js文件中,這篇文章主要介紹了一文掌握vue3中hooks的介紹及用法,需要的朋友可以參考下
    2023-04-04
  • antdesign-vue結(jié)合sortablejs實(shí)現(xiàn)兩個(gè)table相互拖拽排序功能

    antdesign-vue結(jié)合sortablejs實(shí)現(xiàn)兩個(gè)table相互拖拽排序功能

    這篇文章主要介紹了antdesign-vue結(jié)合sortablejs實(shí)現(xiàn)兩個(gè)table相互拖拽排序功能,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Vue 3開發(fā)中VueUse強(qiáng)大Hooks庫(kù)

    Vue 3開發(fā)中VueUse強(qiáng)大Hooks庫(kù)

    VueUse提供了一個(gè)豐富且強(qiáng)大的Hooks庫(kù),可以幫助開發(fā)者快速實(shí)現(xiàn)各種功能,提高開發(fā)效率,本文來詳細(xì)的介紹一下,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08

最新評(píng)論

大荔县| 北宁市| 德令哈市| 临夏市| 五峰| 大连市| 巴东县| 双城市| 普宁市| 哈密市| 余庆县| 阿拉善左旗| 博客| 普兰店市| 贺兰县| 五指山市| 麻阳| 淮滨县| 恩平市| 成武县| 宜丰县| 汝阳县| 梓潼县| 大同市| 互助| 玛纳斯县| 徐水县| 修文县| 和硕县| 宜宾县| 黄龙县| 龙陵县| 册亨县| 延寿县| 临桂县| 吉林市| 天门市| 方山县| 大足县| 江达县| 南华县|