过渡效果和动画

过渡效果和动画

** 使用形式**
- 在 CSS 过渡和动画中自动应用 class
- 可以配合使用第三方 CSS 动画库,如 Animate.css
- 在过渡钩子函数中使用 JavaScript 直接操作 DOM
- 可以配合使用第三方 JavaScript 动画库,如 Velocity.js

1.在 CSS 过渡和动画中自动应用 class
        <style>
        .yys-enter-active, .yys-leave-active {
             transition: opacity 2s;
        }
        .yys-enter, .yyb-leave-to /* .yys-leave-active below version 2.1.8 */ {
             opacity: 0;
        }
        </style>

<body>
<div id="app">
    <button @click = "change"> 切换 </button>
    <transition name = "yys">
            <p v-show = "flag"> 1903 </p>
    </transition>
</div>
</body>
<script src="../../lib/vue.js"></script>
<script>
/*
业务: 点击按钮,然一个p标签显示或隐藏( 要有透明度的过渡 )
我们使用Vue提供的 transition 组件时,vue会提供6(4)个类名,8个 钩子函数
*/
new Vue({
    el: '#app',
    data: {
             flag: true
    },
    methods: {
           change () {
                this.flag = !this.flag
          }
    }
})

2.可以配合使用第三方 CSS 动画库,如 Animate.css

<link href="https://cdn.bootcss.com/animate.css/3.7.2/animate.css" rel="stylesheet">


<div id="app">
    <button @click = "change"> 切换 </button>
    <transition
        enter-active-class = "animated slideInLeft"
        leave-active-class = "animated slideOutLeft"
    >
    <p v-show = "flag"> 1903 </p>
    </transition>
</div>


<script>
/*
业务: 点击按钮,然一个p标签显示或隐藏( 要有透明度的过渡 )
引用第三方的 Animate.css文件
*/
    new Vue({
        el: '#app',
        data: {
            flag: false
        },
        methods: {
            change () {
                this.flag = !this.flag
            }
        }
    })
</script>

3.在过渡钩子函数中使用 JavaScript 直接操作 DOM

    
<div id="app">
    <button @click="show = !show">
        Toggle
    </button>
    <transition
        v-on:before-enter="beforeEnter"
        v-on:enter="enter"
        v-on:leave="leave"
        v-bind:css="false"
    >
    <p v-if="show">
        Demo
    </p>
    </transition>
</div>


<script src="../../lib/vue.js"></script>
<script>
    new Vue({
        el: '#app',
            data: {
                  show: false
            },
            methods: {
                    beforeEnter: function (el) { //el指的就是dom
                        console.log( el )
                        el.style.opacity = 0
                        el.style.transformOrigin = 'left'
            },
            enter: function (el, done) {
                Velocity(el, { opacity: 1, fontSize: '1.4em' }, { duration: 300 })
                Velocity(el, { fontSize: '1em' }, { complete: done })
                },
                leave: function (el, done) {
                Velocity(el, { translateX: '15px', rotateZ: '50deg' }, { duration: 600 })
            Velocity(el, { rotateZ: '100deg' }, { loop: 2 })
            Velocity(el, {
                rotateZ: '45deg',
                translateY: '30px',
                translateX: '30px',
                opacity: 0
                }, { complete: done })
            }
        }
    })
</script>

4.可以配合使用第三方 JavaScript 动画库,如 Velocity.js


<body>
    <div id="app">
    <button @click = "change"> 切换 </button>
    <transition
    mode = "in-out"
    enter-active-class = "animated slideInLeft"
    leave-active-class = "animated slideOutLeft"
    >
    <p v-if = "flag"> 1903 </p>
    </transition>
    <transition
    mode = "out-in"
    enter-active-class = "animated slideInLeft"
    leave-active-class = "animated slideOutLeft"
    >
    <p v-if = "!flag"> 1903 </p>
    </transition>
    </div>
</body>


<script src="../../lib/vue.js"></script>
<script>
/*
业务: 点击按钮,然一个p标签显示或隐藏( 要有透明度的过渡 )
引用第三方的 Animate.css文件
*/
    new Vue({
        el: '#app',
    data: {
          flag: true
    },
    methods: {
    change () {
        this.flag = !this.flag
               }
          }
    })
</script>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值