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

vue元素樣式實(shí)現(xiàn)動態(tài)改變方法介紹

 更新時間:2022年09月15日 09:08:36   作者:Saga Two  
vue通過js動態(tài)修改元素的樣式,如果是固定的幾個樣式,我常用的是綁定元素的calss,給不同的class寫好需要的樣式,js控制是否使用這個class

1 前言

  在vue項(xiàng)目中,很多場景要求我們動態(tài)改變元素的樣式,比如按鈕由不可點(diǎn)擊到可以點(diǎn)擊樣式改變,這種情況下,我們通常根據(jù)vue框架提供的動態(tài)綁定v-bind來操作元素的class列表賀內(nèi)聯(lián)樣式來達(dá)到動態(tài)設(shè)置元素樣式的效果;

2 動態(tài)改變樣式的方法

2.1 操作元素class列表

我們通過vue內(nèi)置的:class (v-bind:class)來動態(tài)操作元素的class;如下所示:

<div :class="{ class-a: isActive }"></div>
<script>
data() {
  return {
    isActive: true
  }
}
<script>
<style scoped>
.class-a {
  ...
}
</style>

其中class-a代表樣式表style中的一個樣式對象,isActive時控制樣式是否生效的變量,若isActive為true,則代表class-a樣式生效,此時class-a回家加載到div元素的樣式列表中,isActive為false則不生效,不會將class加載到div元素額樣式列表中。

我們用實(shí)例來演示一下,實(shí)例實(shí)現(xiàn)的效果時效果圖如下:

實(shí)例代碼如下:

<template>
  <div :class="{ 'dark-theme': isActive }">
    <title-bar :title="title" @goBack="goback"></title-bar>
    <div>
      <div class="sty-item">
        <label>改變頁面主題色:</label>
        <TButton @clickhandle="changeTheme" />
      </div>
    </div>
  </div>
</template>
<script>
import TitleBar from "@/components/TitleBar";
import TButton from "@/components/TButton";
export default {
  name: "", // 動態(tài)控制vue 頁面元素樣式
  components: {
    TitleBar,
    TButton
  },
  data() {
    return {
      isActive: false, // class是否生效
      title: "動態(tài)樣式",
    };
  },
  methods: {
    changeTheme() {
      if (this.isActive) {
        this.isActive = false;
      } else {
        this.isActive = true;
      }
    },
    goback() {
      //
    }
  }
};
</script>
<style lang="scss" scoped>
.page-body1 {
  background-color: rgb(21, 126, 29);
  margin: 10px 15px;
}
.dark-theme {
  background-color: rgb(41, 46, 42);
  color: azure;
}
</style>

除此之外,還可以直接使用對象變量來控制class的變化,并且使用動態(tài)class同時,也能同時設(shè)置普通楊式,代碼如下所示:

<div
  class="static"
  :class="classObj"
></div>
<script>
data() {
  return {
    classObj: {
      'class-a': true,
      'class-b': false
    }
  }
}
<script>
<style scoped>
.static {
  ...
}
.class-a {
  ...
}
.class-b {
  ...
}
</style>

以上代碼最后作用于div上的class列表為:[static,class-a]

2.2 操作元素內(nèi)聯(lián)樣式

與上面操作元素class列表原利相同,我們通過vue內(nèi)置的:style (v-bind:style)來動態(tài)操作元素的內(nèi)聯(lián)樣式;和class不同的是,內(nèi)聯(lián)樣式本身就是一個對象,這就意味著style可以更為靈活的變化,如下所示:

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

也可以寫作對象形式,以上代碼等同于:

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

我們用實(shí)例來演示一下,實(shí)例實(shí)現(xiàn)的效果時效果圖如下:

實(shí)例代碼如下:

<template>
  <div>
    <title-bar :title="title" @goBack="goback"></title-bar>
    <div>
      <div class="sty-item">
        <label>改變按鈕樣式:</label>
        <button class="btn" :style="dynamicStyle" @click="btnColorChange">
          我是按鈕
        </button>
      </div>
    </div>
  </div>
</template>
<script>
import TitleBar from "@/components/TitleBar";
export default {
  name: "", // 動態(tài)控制vue 頁面元素樣式
  components: {
    TitleBar
  },
  data() {
    return {
      title: "動態(tài)樣式",
      dynamicStyle: {}, //內(nèi)聯(lián)樣式控制
      brightStyle: {
        //亮色
        background:
          "linear-gradient(45deg, rgb(225, 194, 137), rgb(213, 208, 156))",
        color: "#fff"
      },
      darkStyle: {
        //暗色
        background:
          "linear-gradient(45deg, rgb(143, 255, 109), rgb(208, 252, 172))",
        color: "#000"
      }
    };
  },
  methods: {
    btnColorChange() {
      console.log(this.dynamicStyle);
      if (this.compareObj(this.dynamicStyle, this.darkStyle)) {
        this.dynamicStyle = this.brightStyle;
      } else {
        this.dynamicStyle = this.darkStyle;
        console.log(this.dynamicStyle);
      }
    },
    compareObj(a, b) {
      return JSON.stringify(a) == JSON.stringify(b) ? true : false;
    },
    goback() {
      //
    }
  }
};
</script>
<style lang="scss" scoped>
.btn {
  width: 125px;
  height: 45px;
  font-size: 20px;
  border: none;
  border-radius: 6px;
}
.sty-item {
  padding: 30px;
  text-align: left;
  label {
    margin: 20px 0px;
    display: block;
  }
}
</style>

可以看到對內(nèi)聯(lián)樣式style的控制可以更加靈活。

3 小結(jié)

  動態(tài)操作頁面樣式的用法可以更為豐富多樣,我們這里對基本用法做個簡單介紹;更為復(fù)雜的用法可以結(jié)合前面講的組件動態(tài)傳值來控制子組件的樣式,可實(shí)現(xiàn)千變?nèi)f化的效果。

到此這篇關(guān)于vue元素樣式實(shí)現(xiàn)動態(tài)改變方法介紹的文章就介紹到這了,更多相關(guān)vue元素樣式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue實(shí)現(xiàn)滾動加載更多效果的示例代碼

    Vue實(shí)現(xiàn)滾動加載更多效果的示例代碼

    這篇文章介紹了在?Web?應(yīng)用中處理大量數(shù)據(jù)展示的兩種滾動加載更多方案,滾動加載更多通過分頁工作,優(yōu)點(diǎn)是實(shí)現(xiàn)簡單、用戶體驗(yàn)流暢,缺點(diǎn)是內(nèi)存占用可能過高,虛擬列表只渲染視口內(nèi)容,性能好但實(shí)現(xiàn)復(fù)雜,本文介紹了Vue實(shí)現(xiàn)滾動加載更多效果,需要的朋友可以參考下
    2024-12-12
  • Vue.js 帶下拉選項(xiàng)的輸入框(Textbox with Dropdown)組件

    Vue.js 帶下拉選項(xiàng)的輸入框(Textbox with Dropdown)組件

    這篇文章主要介紹了Vue.js 帶下拉選項(xiàng)的輸入框(Textbox with Dropdown)組件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • ant?菜單組件報錯Cannot?read?property?‘isRootMenu‘?of?undefined

    ant?菜單組件報錯Cannot?read?property?‘isRootMenu‘?of?undefin

    這篇文章主要介紹了ant?菜單組件報錯Cannot?read?property?‘isRootMenu‘?of?undefined解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vuex實(shí)現(xiàn)簡單的購物車功能

    vuex實(shí)現(xiàn)簡單的購物車功能

    這篇文章主要為大家詳細(xì)介紹了vuex實(shí)現(xiàn)簡單的購物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Vue路由傳參詳細(xì)介紹

    Vue路由傳參詳細(xì)介紹

    這篇文章主要介紹了Vue路由傳參的兩種方式query和params,介紹了query和params區(qū)別與總結(jié),結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 玩轉(zhuǎn)vue的slot內(nèi)容分發(fā)

    玩轉(zhuǎn)vue的slot內(nèi)容分發(fā)

    這篇文章主要介紹了玩轉(zhuǎn)vue的slot內(nèi)容分發(fā),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Vue首屏性能優(yōu)化組件知識點(diǎn)總結(jié)

    Vue首屏性能優(yōu)化組件知識點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于Vue首屏性能優(yōu)化組件知識點(diǎn)總結(jié),有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-11-11
  • Vue2和Vue3在v-for遍歷時ref獲取dom節(jié)點(diǎn)的區(qū)別及說明

    Vue2和Vue3在v-for遍歷時ref獲取dom節(jié)點(diǎn)的區(qū)別及說明

    這篇文章主要介紹了Vue2和Vue3在v-for遍歷時ref獲取dom節(jié)點(diǎn)的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue數(shù)據(jù)雙向綁定原理及簡單實(shí)現(xiàn)方法

    Vue數(shù)據(jù)雙向綁定原理及簡單實(shí)現(xiàn)方法

    vue數(shù)據(jù)雙向綁定是通過數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式來實(shí)現(xiàn)的.本文重點(diǎn)給大家介紹Vue數(shù)據(jù)雙向綁定原理及簡單實(shí)現(xiàn)方法,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • Vue命令行工具Vue-CLI圖文詳解(推薦!)

    Vue命令行工具Vue-CLI圖文詳解(推薦!)

    vue-cli 是 Vue.js 開發(fā)的標(biāo)準(zhǔn)工具,它簡化了程序員基于 webpack 創(chuàng)建工程化的 Vue 項(xiàng)目的過程,下面這篇文章主要給大家介紹了關(guān)于Vue命令行工具Vue-CLI的相關(guān)資料,需要的朋友可以參考下
    2022-07-07

最新評論

敦煌市| 广州市| 平陆县| 锦州市| 奉节县| 府谷县| 佛山市| 广平县| 辉南县| 万源市| 东乡族自治县| 额敏县| 遵化市| 和静县| 屯门区| 扶余县| 温州市| 交口县| 麟游县| 隆昌县| 格尔木市| 扎兰屯市| 柳江县| 平舆县| 文成县| 班戈县| 留坝县| 合肥市| 开平市| 花莲市| 科技| 阜南县| 商水县| 仙游县| 余干县| 永丰县| 丰台区| 遂昌县| 湖州市| 七台河市| 闽清县|