<div id="app">
  <input placeholder="请输入要查找的内容" v-model="query">
  <transition-group name="item" tag="ul" @before-enter="beforeEnter" @enter="enter" @leave="leave">
    <li v-for="(item, index) in computedList" :key="item.msg" :data-index="index">
      {{item.msg}}
    </li>
  </transition-group>
</div>
<script>
  var vm = new Vue({
    el: '#app',
    data() {
      return {
        query: '',
        items: [
          {msg: '张三'},
          {msg: '李四'},
          {msg: '张芳芳'},
          {msg: '王琳琳'},
          {msg: '丰源'}
        ]
      }
    },
    computed: {
      computedList() {
        var vm = this.query.toLowerCase()
        return this.items.filter(function(item) {
          return item.msg.toLowerCase().indexOf(vm) !== -1
        })
      }
    },
    methods: {
      beforeEnter(el) {
        el.style.opacity = 0
        el.style.height = 0
      },
      enter(el, done) {
        var delay = el.dataset.index * 150
        Velocity(el, {opacity: 1, height: '1.6em'}, {duration: 500, delay: delay, complete: done})
      },
      leave(el, done) {
        var delay = el.dataset.index * 150
        Velocity(el, {opacity: 0, height: 0}, {duration: 500, delay: delay, complete: done})
      }
    }
  })
</script>
Vue.js 实现简单的搜索功能并使用 Velocity.js 添加动画效果

原文地址: https://www.cveoy.top/t/topic/nQum 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录