vue入门5---vue动画transition/animation、过滤器filter

一、动画理解

  • 1.操作 css 的 trasition 或 animation

Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。
-在 CSS 过渡和动画中自动应用 class
-可以配合使用第三方 CSS 动画库
-在过渡钩子函数中使用 JavaScript 直接操作 DOM
-可以配合使用第三方 JavaScript 动画库

    1. vue 会给目标元素添加/移除特定的 class
    1. 过渡transition的相关类名
xxx-enter-active: 指定显示的 transition
xxx-leave-active: 指定隐藏的 transition
xxx-enter/xxx-leave-to: 指定隐藏时的样式

使用步骤:
1). 使用<transition name="xxx">包裹目标元素
2). 定义class样式
    1>. 指定过渡样式: transition
    2>. 指定隐藏时的样式: opacity/其它


动画过程图

transition案例:

<style>
    /*指定过渡样式  xxx 指 name="XXX"中的属性名*/
    .xxx-enter-active, .xxx-leave-active {
      transition: opacity 1s
    }
    /*指定隐藏时的样式*/
    .xxx-enter, .xxx-leave-to {
      opacity: 0;
    }
    .move-enter-active {
      transition: all 1s
    }
    .move-leave-active {
      transition: all 3s
    }
    .move-enter, .move-leave-to {
      opacity: 0;
      transform: translateX(20px) // x轴方向移动
    }
  </style>
<div id="demo">
  <button @click="show = !show">Toggle</button>
  <transition name="xxx">
    <p v-show="show">hello</p>
  </transition>
</div>
<hr>
<div id="demo2">
  <button @click="show = !show">Toggle2</button>
  <transition name="move">
    <p v-show="show">hello</p>
  </transition>
</div>
<script type="text/javascript">
  new Vue({
    el: '#demo',
    data: {
      show: true
    }
  })
  new Vue({
    el: '#demo2',
    data: {
      show: true
    }
  })

animation案例:

 <style>
    .XXX-enter-active {
      animation: xxx-in .5s;
    }
    .XXX-leave-active {
      animation: XXX-in .5s reverse; // reverse 
    }
    @keyframes XXX-in {
      0% {
        transform: scale(0);
      }
      50% {
        transform: scale(1.5);
      }
      100% {
        transform: scale(1);
      }
    }
  </style>
<div id="example-2">
  <button @click="show = !show">Toggle show</button>
  <br>
  <transition name="XXX">
    <p v-if="show" style="display: inline-block">Lorem</p>
  </transition>
</div>
<script>
  new Vue({
    el: '#example-2',
    data: {
      show: true
    }
  })
</script>

二、过滤器

    1. 功能: 对要显示的数据进行特定格式化后再显示
    2. 注意: 并没有改变原本的数据, 可是产生新的对应的数据
  • 使用:
  *1.定义过滤器
Vue.filter(filterName, function(value[,arg1,arg2,...]){ // 进行一定的数据处理
    return newValue
})
 *2. 使用过滤器
<div>{{myData | filterName}}</div> <div>{{myData | filterName(arg)}}</div>

demo(时间格式化,使用插件moment.js):

<div id="test">
  <h2>显示格式化的日期时间</h2>
  <p>{{time}}</p>
  <p>最完整的: {{time | dateString}}</p>
  <p>年月日: {{time | dateString('YYYY-MM-DD')}}</p>
</div>
<script type="text/javascript" src="https://cdn.bootcss.com/moment.js/2.22.1/moment.js"></script>
<script>
  // 定义过滤器,vue.filter是vue的函数对象,因为`.`调用
  Vue.filter('dateString', function (value, format='YYYY-MM-DD HH:mm:ss') {// 形参默认值
    return moment(value).format(format);
  })
  new Vue({
    el: '#test',
    data: {
      time: new Date()
    },
    mounted () {
      setInterval(() => {
        this.time = new Date()
      }, 1000)
    }
  })
</script>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
    Awey阅读 13,809评论 4 129
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 10,488评论 0 29
  • 在AngularJS应用中创建动画,有三种途径: 使用CSS3动画 使用JavaScript动画 使用CSS3过渡...
    oWSQo阅读 5,360评论 0 3
  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 9,071评论 0 6
  • 单位的事奔波一天, 再到医院走一遭, 全身疲软。 跟许多见面的次数不少, 而相聚的时间却不多。 跟妈妈打电话的频率...
    有童年没青春阅读 1,378评论 0 0

友情链接更多精彩内容