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

一文搞懂Vue里的過渡和動畫

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

過渡的 CSS 類名

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

<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ù)條件動態(tài)添加過渡的CSS類名??梢允褂?code>:class綁定來根據(jù)條件動態(tài)添加過渡的CSS類名,適用于根據(jù)條件動態(tài)切換過渡效果的場景,根據(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、enter、afterEnterbeforeLeave、leave、afterLeave等鉤子函數(shù)來執(zhí)行自定義的過渡邏輯。適用于需要在過渡過程中執(zhí)行自定義的JavaScript邏輯的場景,如動態(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提供了專門的列表過渡功能,用于在列表中添加過渡效果。可以使用<transition-group>組件來包裹列表項(xiàng),并使用v-movev-enter、v-leave等CSS類名來定義列表項(xiàng)的過渡效果。 適用于在列表中添加過渡效果的場景,如列表項(xià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>

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

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

<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>

自定義過渡和動畫

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

<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>

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

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

相關(guān)文章

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

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

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

    element-ui滾動條el-scrollbar置底方式

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

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

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

    VueJs組件之父子通訊的方式

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

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

    在頁面層次結(jié)構(gòu),數(shù)據(jù)較多的時候,用v-if或者v-show就會出現(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組件二次封裝的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue3?中的??shallowReactive?詳解

    Vue3?中的??shallowReactive?詳解

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

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

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

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

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

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

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

最新評論

洱源县| 连州市| 瓦房店市| 利津县| 屯留县| 南昌县| 图木舒克市| 大石桥市| 平度市| 吴江市| 文昌市| 温泉县| 富阳市| 垦利县| 托克逊县| 旅游| 额济纳旗| 延安市| 苗栗市| 和田市| 三穗县| 浦北县| 泌阳县| 鹰潭市| 台江县| 阜新| 靖边县| 甘泉县| 环江| 禹州市| 乌拉特中旗| 永宁县| 汝南县| 宜章县| 金坛市| 兴化市| 会昌县| 宜章县| 新郑市| 南宁市| 浪卡子县|