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

Vue如何使用CSS自定義變量

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

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

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

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

<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è)置一個默認值,當(dāng)查找不到自定義變量時,你還可以設(shè)置一個默認值。

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

點擊 div 它的字體顏色以及其 hover 時的背景顏色將會直接改變。在此時你會發(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>

試驗一下效果非常的 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è)置。注冊好指令后我們可以。

<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 對于 style 樣式的操作。

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    在for循環(huán)中生成的元素要加key屬性不僅是在Vue框架中是要添加的,在React框架中也是要添加的。但\其實都不是必須的,因為在 Vue和React中不加key是不會報錯的,只是會有警告。但是我們在深入了解加key的原因后會明白,若想確保沒有隱患的話,元素還是必須要加key屬性。
    2021-05-05
  • vue中el-table合并列的具體實現(xiàn)

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

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

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

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

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

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

    vue3的hooks用法總結(jié)

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

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

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

    Vue 3開發(fā)中VueUse強大Hooks庫

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

最新評論

舞钢市| 长寿区| 阜新市| 鹤峰县| 金沙县| 盐亭县| 周口市| 乌鲁木齐县| 蒙山县| 竹山县| 吴旗县| 运城市| 昌都县| 华蓥市| 咸丰县| 墨竹工卡县| 泰州市| 太原市| 武安市| 东乡族自治县| 胶州市| 客服| 永定县| 湘潭县| 海淀区| 西宁市| 无为县| 特克斯县| 马鞍山市| 云南省| 远安县| 灌云县| 大石桥市| 庆安县| 五河县| 稷山县| 乡城县| 三台县| 怀宁县| 琼结县| 翁牛特旗|