首页 > 其他 > 详细

Vue中的动画、监听见、过滤器、计算属性

时间:2021-01-07 20:58:49      阅读:32      评论:0      收藏:0      [点我收藏+]

1.动画

基础使用:

给哪个元素添加动画,只需要给元素用<transition>标签包裹起来就可以

<transition>
    <div class="box" v-show=‘isShow‘></div>
</transition>

之后去样式中设置6个类名即可

 .v-enter {
            opacity: 0;
        }
        .v-enter-to {
            opacity: 1;
        }
        .v-enter-active {
            transition: all 2s;
        }
        .v-leave {
            opacity: 1;
        }
        .v-leave-to {
            opacity: 0;
        }
        .v-leave-active {
            transition: all 2s;
        }

如果页面中有多个元素需要添加不同的动画,那么只需要给<transition>增加name属性,同时把6个样式中的v-替换为name的值

 <transition name=‘aa‘>
    <div class="box" v-show=‘isShow‘></div>
 </transition>
 样式中:
  .aa-enter {
  opacity: 0;
  }
.aa-enter-to {
opacity: 1;
}
.aa-enter-active {
transition: all 5s;
}
.aa-leave {
opacity: 1;
}
.aa-leave-to {
opacity: 0;
}
.aa-leave-active {
transition: all 5s;
}

2.动画库

官网:https://animate.style/

使用:引入css,给需要添加动画的元素用<transition>包裹起来,然后添加属性 enter-active-class leave-active-class

 <!-- enter-active-class   leave-active-class 使用:引入第三库 必须添加基类+效果类名 -->
     <transition 
     enter-active-class=‘animate__animated animate__bounce‘
     leave-active-class = ‘animate__animated animate__backOutUp‘
     >
 <div class="box" v-show=‘isShow‘></div>
 </transition>

 

2.监听

 

-浅监听

主要监听基本数据类型

监听的是在data中声明的变量,而且监听的名字不能更改

 // 浅监听 :只能监听基础数据类型

name(newVal, oldVal) {
 console.log(newVal, oldVal)
 },

-深监听

 //    监听引用数据类型用深监听 只能获取最新的数据 handler名称不能换  弊端;使用深监听会引起页面的卡顿

 // 非必要情况不要使用,一旦要使用,需要把深监听转换为浅监听

 
obj: {
     handler(a) {
     console.log(a)
     },
 deep: true
 },
```

百度搜索案例:

1.原生js案例

<!--  // 跨域;协议,域名,端口号只要有一个不一样就会出现跨域  jsonp解决
    // jsonp原理:动态创建script标签,利用src属性进行跨域
    // 1.动态创建script标签
    // 2.给src赋值
    // 3.得到数据渲染页面
    // 4.回调函数(请求回来的数据)
    // http://suggestion.baidu.com/su?cb=aa&wd=%27abc%E2%80%99 -->
<script>
    // 1.获取元素
    var oInp = document.querySelector(‘input‘)
    var oUl = document.querySelector(‘ul‘)

    oInp.oninput = function(a){
        console.log(a)
        // 1.动态创建script标签
        var os = document.createElement(‘script‘);
        // 2.赋值src
        os.src = ‘http://suggestion.baidu.com/su?cb=aa&wd=‘+this.value
        // 3.添加到页面
        document.body.appendChild(os)
    }

    // 回调函数
    function aa(res){
        console.log(res)
        var arr = res.s //请求回来的数据
        // 清空上次请求回来的数据
        oUl.innerHTML = ‘‘
        for(var i =0;i<arr.length;i++){
            // 动态创建li
            var oLi = document.createElement(‘li‘);
            // 给li添加内容
            oLi.innerHTML = arr[i]
            oUl.appendChild(oLi)
        }
    }
</script>

 2、vue案例

<script>
    // http://suggestion.baidu.com/su?cb=aa&wd=%27abc%E2%80%99
    let vm = new Vue({
        el: ‘#app‘,
        data: {
            search: ‘‘,
            arr:[],//这是用来存储请求回来的数据
        },
        methods: {

        },
        watch: {
            search() {
                // 1.动态创建script标签
                var os = document.createElement(‘script‘);
                // 2.赋值src
                os.src = ‘http://suggestion.baidu.com/su?cb=aa&wd=‘ + this.search
                // 3.添加到页面
                document.body.appendChild(os)
            }
        }
    })

// 定义回调函数
function aa(res){
    console.log(res)
    vm.arr = res.s
}
</script>

  

3.过滤器 filter

全局过滤器 vue实例的外部定义 Vue.filter(过滤器名称,回调函数)

局部过滤器 vue实例中增加配置项filters  过滤器名称:function(){过滤操作}

过滤手机号码
<div id="app">
        <!-- | 叫做管道符  管道符前面是需要过来的属性,过滤器后面是过滤器名称-->
      {{tel | filterTel}}
      <!-- 下面的是错误的,因为是局部定义的过滤器 -->
      {{tel | filTel}} 
    </div>
    <script>
    // 全局过滤器  Vue.filter(过滤器名称,回调函数)
Vue.filter(‘filterTel‘,(tel)=>{
    return tel.slice(0,3)+‘****‘+tel.slice(7)
})

    let vm = new Vue({
        el: ‘#app‘,
        data: {
          tel:‘15858589958‘
        },
        methods: {

        },
        
    })</script>
```

  

过滤价格
<div id="app">
       价格:{{price | filterPrice}}
    </div>
    <script>


// 全局过滤器  Vue.filter(过滤器名称,回调函数)
Vue.filter(‘filterPrice‘,(price)=>{
    return price.toFixed(2)
})
    let vm = new Vue({
        el: ‘#app‘,
        data: {
          price:29
        },
        methods: {


        },


        
    })
   
// filter: 全局过滤器  vue实例的外部定义 Vue.filter(过滤器名称,回调函数)
//         局部过滤器  vue实例中增加配置项filters  过滤器名称:function(){过滤操作}
</script>
```

 

过滤时间
<script>
<div id="app">
      时间:{{time | filterPrice}}
    </div>
// 全局过滤器  Vue.filter(过滤器名称,回调函数)
Vue.filter(‘filterPrice‘,(time)=>{
    // 获取当前时间
    let data = new Date(time)
    // 年
    let year = data.getFullYear();
    // 月
    let month= (data.getMonth()+1+‘‘).padStart(2,‘0‘);
    // 日
    let day = (data.getDate()+‘‘).padStart(2,‘0‘)
    // 时
    let hours = data.getHours()
    //分
    let min= data.getMinutes()
    // 秒
    let sec = data.getSeconds() 
    return `${year}-${month}-${day} ${hours}:${min}:${sec}`
})
    let vm = new Vue({
        el: ‘#app‘,
        data: {
            // new Date().getTime()  获取当前时间戳
          time:1609917028669
        },
        methods: {
        },

    })
   
// filter: 全局过滤器  vue实例的外部定义 Vue.filter(过滤器名称,回调函数)
//         局部过滤器  vue实例中增加配置项filters  过滤器名称:function(){过滤操作}
</script>
```

  

4.计算属性:通过计算得出来的属性叫做计算属性

 

Vue中的动画、监听见、过滤器、计算属性

原文:https://www.cnblogs.com/hxmw/p/14248156.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!