欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1 前言

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

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

2.1 操作元素class列表

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

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

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

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

實(shí)例代碼如下:

<template>
  <div :class="{ 'dark-theme': isActive }">
    <title-bar :title="title" @goBack="goback"></title-bar>
    <div>
      <div class="sty-item">
        <label>改變頁(yè)面主題色:</label>
        <TButton @clickhandle="changeTheme" />
      </div>
    </div>
  </div>
</template>
<script>
import TitleBar from "@/components/TitleBar";
import TButton from "@/components/TButton";
export default {
  name: "", // 動(dòng)態(tài)控制vue 頁(yè)面元素樣式
  components: {
    TitleBar,
    TButton
  },
  data() {
    return {
      isActive: false, // class是否生效
      title: "動(dòng)態(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>

除此之外,還可以直接使用對(duì)象變量來(lái)控制class的變化,并且使用動(dòng)態(tài)class同時(shí),也能同時(shí)設(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列表原利相同,我們通過(guò)vue內(nèi)置的:style (v-bind:style)來(lái)動(dòng)態(tài)操作元素的內(nèi)聯(lián)樣式;和class不同的是,內(nèi)聯(lián)樣式本身就是一個(gè)對(duì)象,這就意味著style可以更為靈活的變化,如下所示:

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

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

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

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

實(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: "", // 動(dòng)態(tài)控制vue 頁(yè)面元素樣式
  components: {
    TitleBar
  },
  data() {
    return {
      title: "動(dòng)態(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>

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

3 小結(jié)

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

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

相關(guān)文章

  • 詳解如何將 Vue-cli 改造成支持多頁(yè)面的 history 模式

    詳解如何將 Vue-cli 改造成支持多頁(yè)面的 history 模式

    本篇文章主要介紹了詳解如何將 Vue-cli 改造成支持多頁(yè)面的 history 模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 記一次vue-webpack項(xiàng)目?jī)?yōu)化實(shí)踐詳解

    記一次vue-webpack項(xiàng)目?jī)?yōu)化實(shí)踐詳解

    這篇文章主要介紹了記一次vue-webpack項(xiàng)目?jī)?yōu)化實(shí)踐,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • vue2.0 常用的 UI 庫(kù)實(shí)例講解

    vue2.0 常用的 UI 庫(kù)實(shí)例講解

    這篇文章主要介紹了vue2.0 常用的 UI 庫(kù)實(shí)例講解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • 在Vue項(xiàng)目中使用Typescript的實(shí)現(xiàn)

    在Vue項(xiàng)目中使用Typescript的實(shí)現(xiàn)

    這篇文章主要介紹了在Vue項(xiàng)目中使用Typescript的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Vue中的change事件無(wú)效問(wèn)題及解決

    Vue中的change事件無(wú)效問(wèn)題及解決

    這篇文章主要介紹了Vue中的change事件無(wú)效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 前端構(gòu)建工具Webpack、Vite區(qū)別有哪些

    前端構(gòu)建工具Webpack、Vite區(qū)別有哪些

    Webpack和Vite是兩種主流的前端構(gòu)建工具,它們?cè)诠δ?、性能和使用?chǎng)景上有所不同,Webpack提供豐富的功能和配置,適合大型復(fù)雜項(xiàng)目,但可能導(dǎo)致啟動(dòng)和構(gòu)建速度較慢,Vite基于ES模塊,支持快速的熱替換,適合小型或中等項(xiàng)目,需要的朋友可以參考下
    2024-10-10
  • Vben Admin 多標(biāo)簽頁(yè)狀態(tài)管理源碼學(xué)習(xí)

    Vben Admin 多標(biāo)簽頁(yè)狀態(tài)管理源碼學(xué)習(xí)

    這篇文章主要為大家介紹了Vben Admin 多標(biāo)簽頁(yè)狀態(tài)管理源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue3中通過(guò)遍歷傳入組件名稱動(dòng)態(tài)創(chuàng)建多個(gè)component 組件

    vue3中通過(guò)遍歷傳入組件名稱動(dòng)態(tài)創(chuàng)建多個(gè)component 組件

    這篇文章主要介紹了vue3中通過(guò)遍歷傳入組件名稱動(dòng)態(tài)創(chuàng)建多個(gè)component 組件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Vue響應(yīng)式原理Observer、Dep、Watcher理解

    Vue響應(yīng)式原理Observer、Dep、Watcher理解

    這篇文章主要介紹了Vue響應(yīng)式原理-理解Observer、Dep、Watcher,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • vue中watch的實(shí)際開(kāi)發(fā)學(xué)習(xí)筆記

    vue中watch的實(shí)際開(kāi)發(fā)學(xué)習(xí)筆記

    watch是Vue實(shí)例的一個(gè)屬性是用來(lái)響應(yīng)數(shù)據(jù)的變化,需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開(kāi)銷較大的操作時(shí),這個(gè)方式是最有用的,下面這篇文章主要給大家介紹了關(guān)于vue中watch的實(shí)際開(kāi)發(fā)筆記,需要的朋友可以參考下
    2022-11-11

最新評(píng)論