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

一文搞懂Vue里的過渡和動(dòng)畫

 更新時(shí)間:2023年06月18日 16:43:24   作者:前端碎碎念  
在Vue中,過渡和動(dòng)畫是一種用于在組件之間添加平滑過渡效果和動(dòng)畫效果的高級(jí)用法,Vue提供了一些內(nèi)置的過渡和動(dòng)畫功能,同時(shí)也支持自定義過渡和動(dòng)畫效果,本文就給大家介紹一些Vue中過渡和動(dòng)畫的高級(jí)用法,需要的朋友可以參考下

過渡的 CSS 類名

Vue的過渡功能是通過添加CSS類名來實(shí)現(xiàn)過渡效果。在過渡過程中,Vue會(huì)根據(jù)不同的階段給元素添加不同的CSS類名,如v-enter、v-enter-active、v-leave、v-leave-active等。適用于需要在組件之間添加平滑過渡效果的場(chǎng)景,如淡入淡出、滑動(dòng)等。

<template>
  <transition name="fade">
    <p v-if="show">This is a fading element.</p>
  </transition>
  <button @click="toggleShow">Toggle Show</button>
</template>
<style>
    .fade-enter-active,
    .fade-leave-active {
      transition: opacity 0.5s;
    }
    .fade-enter,
    .fade-leave-to {
      opacity: 0;
    }
</style>
<script>
export default {
  data() {
    return {
      show: false
    };
  },
  methods: {
    toggleShow() {
      this.show = !this.show;
    }
  }
};
</script>

條件過渡的 CSS 類名

Vue還支持根據(jù)條件動(dòng)態(tài)添加過渡的CSS類名。可以使用:class綁定來根據(jù)條件動(dòng)態(tài)添加過渡的CSS類名,適用于根據(jù)條件動(dòng)態(tài)切換過渡效果的場(chǎng)景,根據(jù)不同的條件添加不同的過渡效果。

<template>
  <transition :name="transitionName">
    <p v-if="show">This is a dynamic transition element.</p>
  </transition>
  <button @click="toggleShow">Toggle Show</button>
</template>
<script>
export default {
  data() {
    return {
      show: false,
      transitionName: 'fade'
    };
  },
  methods: {
    toggleShow() {
      this.show = !this.show;
      this.transitionName = this.show ? 'slide' : 'fade';
    }
  }
};
</script>

JavaScript 鉤子函數(shù)

Vue提供了一些JavaScript鉤子函數(shù),用于在過渡過程中執(zhí)行自定義的JavaScript代碼??梢允褂?code>beforeEnter、enterafterEnter、beforeLeaveleave、afterLeave等鉤子函數(shù)來執(zhí)行自定義的過渡邏輯。適用于需要在過渡過程中執(zhí)行自定義的JavaScript邏輯的場(chǎng)景,如動(dòng)態(tài)修改元素樣式等。

<template>
  <transition
    @before-enter="beforeEnter"
    @enter="enter"
    @after-enter="afterEnter"
    @before-leave="beforeLeave"
    @leave="leave"
    @after-leave="afterLeave"
  >
    <p v-if="show">This is a custom transition element.</p>
  </transition>
  <button @click="toggleShow">Toggle Show</button>
</template>
<script>
    export default {
        data() {
            return {
              show: false
            };
          },
        methods() {
            beforeEnter(el) {
              console.log('Before Enter');
              el.style.opacity = 0;
            },
            enter(el, done) {
              console.log('Enter');
              setTimeout(() => {
                el.style.opacity = 1;
                done();
              }, 1000);
            },
            afterEnter(el) {
                console.log('After Enter');
            },
            beforeLeave(el) {
              console.log('Before Leave');
              el.style.opacity = 1;
            },
            leave(el, done) {
              console.log('Leave');
              setTimeout(() => {
                el.style.opacity = 0;
                done();
              }, 1000);
            },
            afterLeave(el) {
              console.log('After Leave');
            },
            toggleShow() {
              this.show = !this.show;
            }
        }
    }
</script>

列表過渡

Vue提供了專門的列表過渡功能,用于在列表中添加過渡效果??梢允褂?code><transition-group>組件來包裹列表項(xiàng),并使用v-movev-enter、v-leave等CSS類名來定義列表項(xiàng)的過渡效果。 適用于在列表中添加過渡效果的場(chǎng)景,如列表項(xiàng)的漸顯、滑動(dòng)等過渡效果。

<template>
  <transition-group name="list" tag="ul">
    <li v-for="item in items" :key="item.id">{{ item.text }}</li>
  </transition-group>
  <button @click="addItem">Add Item</button>
</template>
<style>
.list-enter-active,
.list-leave-active {
  transition: all 0.5s;
}
.list-enter,
.list-leave-to {
  opacity: 0;
  transform: translateY(20px);
}
</style>
<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    };
  },
  methods: {
    addItem() {
      const newItem = {
        id: Date.now(),
        text: 'New Item'
      };
      this.items.push(newItem);
    }
  }
};
</script>

動(dòng)態(tài)過渡和動(dòng)畫:

Vue支持根據(jù)動(dòng)態(tài)數(shù)據(jù)來觸發(fā)過渡和動(dòng)畫效果??梢允褂脛?dòng)態(tài)綁定來根據(jù)數(shù)據(jù)的變化來觸發(fā)過渡和動(dòng)畫效果。適用于根據(jù)動(dòng)態(tài)數(shù)據(jù)觸發(fā)過渡和動(dòng)畫效果的場(chǎng)景.

<template>
  <transition :name="transitionName">
    <p v-if="show">This is a dynamic transition element.</p>
  </transition>
  <button @click="toggleShow">Toggle Show</button>
</template>
<script>
export default {
  data() {
    return {
      show: false,
      transitionName: ''
    };
  },
  methods: {
    toggleShow() {
      this.show = !this.show;
      this.transitionName = this.show ? 'fade' : 'slide';
    }
  }
};
</script>

自定義過渡和動(dòng)畫

Vue允許自定義過渡和動(dòng)畫效果,以滿足特定的需求。可以使用<transition><transition-group>組件的屬性和事件來自定義過渡和動(dòng)畫效果。適用于需要自定義過渡和動(dòng)畫效果的場(chǎng)景,通過自定義CSS樣式和JavaScript鉤子函數(shù)來實(shí)現(xiàn)特定的過渡和動(dòng)畫效果。

<template>
  <transition
    name="custom-transition"
    @before-enter="beforeEnter"
    @enter="enter"
    @after-enter="afterEnter"
    @before-leave="beforeLeave"
    @leave="leave"
    @after-leave="afterLeave"
  >
    <p v-if="show">This is a custom transition element.</p>
  </transition>
  <button @click="toggleShow">Toggle Show</button>
</template>
<style>
.custom-transition-enter-active,
.custom-transition-leave-active {
  transition: opacity 0.5s, transform 0.5s;
}
.custom-transition-enter,
.custom-transition-leave-to {
  opacity: 0;
  transform: translateY(20px);
}
</style>
<script>
    export default {
      data() {
        return {
              show: false
          };
      },
      methods: {
         beforeEnter(el) {
              el.style.opacity = 0;
              el.style.transform = 'translateY(20px)';
            },
         enter(el, done) {
              setTimeout(() => {
                el.style.opacity = 1;
                el.style.transform = 'translateY(0)';
                done();
              }, 1000);
            },
         afterEnter(el) {
              // 執(zhí)行進(jìn)入后的操作
            },
         beforeLeave(el) {
              // 執(zhí)行離開前的操作
            },
         leave(el, done) {
          setTimeout(() => {
            el.style.opacity = 0;
            el.style.transform = 'translateY(20px)';
            done();
          }, 1000);
         },
         afterLeave(el) {
          // 執(zhí)行離開后的操作
         },
         toggleShow() {
          this.show = !this.show;
        }
      }
};
</script>

這些示例涵蓋了不同的過渡和動(dòng)畫應(yīng)用場(chǎng)景,可以根據(jù)具體的需求和場(chǎng)景選擇適合的示例。

以上就是一文搞懂Vue里的過渡和動(dòng)畫的詳細(xì)內(nèi)容,更多關(guān)于Vue 過渡和動(dòng)畫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決vue create 創(chuàng)建項(xiàng)目只有兩個(gè)文件問題

    解決vue create 創(chuàng)建項(xiàng)目只有兩個(gè)文件問題

    這篇文章主要介紹了解決vue create 創(chuàng)建項(xiàng)目只有兩個(gè)文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • element-ui滾動(dòng)條el-scrollbar置底方式

    element-ui滾動(dòng)條el-scrollbar置底方式

    這篇文章主要介紹了element-ui滾動(dòng)條el-scrollbar置底方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue正確使用watch監(jiān)聽屬性變化方式

    vue正確使用watch監(jiān)聽屬性變化方式

    這篇文章主要介紹了vue正確使用watch監(jiān)聽屬性變化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • VueJs組件之父子通訊的方式

    VueJs組件之父子通訊的方式

    這篇文章主要介紹了VueJs組件之父子通訊的方式,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • vue使用v-if v-show頁面閃爍,div閃現(xiàn)的解決方法

    vue使用v-if v-show頁面閃爍,div閃現(xiàn)的解決方法

    在頁面層次結(jié)構(gòu),數(shù)據(jù)較多的時(shí)候,用v-if或者v-show就會(huì)出現(xiàn)div閃現(xiàn),或者部分閃爍的結(jié)果。怎么處理這樣的問題呢,下面小編給大家?guī)砹藇ue使用v-if v-show頁面閃爍,div閃現(xiàn)的解決方法,一起看看吧
    2018-10-10
  • 關(guān)于ElementUI的el-upload組件二次封裝的問題

    關(guān)于ElementUI的el-upload組件二次封裝的問題

    這篇文章主要介紹了關(guān)于ElementUI的el-upload組件二次封裝的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue3?中的??shallowReactive?詳解

    Vue3?中的??shallowReactive?詳解

    本文深入探討了Vue3中新特性shallowReactive的使用和原理,shallowReactive是創(chuàng)建淺響應(yīng)式對(duì)象的API,只對(duì)對(duì)象的第一層屬性進(jìn)行響應(yīng)式轉(zhuǎn)換,不對(duì)嵌套對(duì)象處理,有助于性能優(yōu)化和狀態(tài)管理,同時(shí)也指出了shallowReactive在使用中的注意事項(xiàng)
    2024-10-10
  • Vue組件之間的通信方式詳細(xì)講解

    Vue組件之間的通信方式詳細(xì)講解

    對(duì)于vue來說,組件之間的消息傳遞是非常重要的,用vue可以是要組件復(fù)用的,而組件實(shí)例的作用域是相互獨(dú)立,這意味著不同組件之間的數(shù)據(jù)無法互相引用,一般來說,組件之間可以有幾種關(guān)系,下面是我對(duì)組件之間消息傳遞的常用方式的總結(jié)
    2022-08-08
  • vue版數(shù)字翻牌器的封裝

    vue版數(shù)字翻牌器的封裝

    這篇文章主要為大家詳細(xì)介紹了vue版數(shù)字翻牌器的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue3+vite使用環(huán)境變量.env的一些配置情況詳細(xì)說明

    vue3+vite使用環(huán)境變量.env的一些配置情況詳細(xì)說明

    開發(fā)中經(jīng)常會(huì)使用環(huán)境變量,Vite相比于Webpack也有一定的變化,下面這篇文章主要給大家介紹了關(guān)于vue3+vite使用環(huán)境變量.env的一些配置情況說明的相關(guān)資料,需要的朋友可以參考下
    2022-12-12

最新評(píng)論

宁国市| 思茅市| 兴文县| 宁阳县| 六安市| 秀山| 利辛县| 绍兴县| 调兵山市| 博白县| 陇南市| 伊宁县| 岑巩县| 三穗县| 五原县| 长岭县| 宁强县| 武隆县| 南城县| 齐齐哈尔市| 同江市| 玉屏| 垫江县| 太保市| 宜宾县| 和平区| 临洮县| 霸州市| 镇安县| 兰西县| 夏河县| 随州市| 友谊县| 星座| 远安县| 安平县| 陵川县| 禹州市| 静乐县| 甘德县| 连山|