该代码使用 Vue.js 实现了一个简单的动态搜索列表,并使用 Velocity.js 添加了动画效果。以下是代码的优化版本:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Vue.js 动态搜索列表</title>
		<script src="http://www.mrfront.com/docs/velocity.js/index.html"></script>
	</head>
	<body>
		<div id="app">
			<input placeholder="请输入要查找的内容" v-model="query">
			<transition-group name="item" tag="ul" @before-enter="beforEnter"
			@enter="enter" @leave="leave" v-bind:css="false">
			<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() {
						return this.items.filter(function(item) {
							return item.msg.toLowerCase().indexOf(this.query.toLowerCase()) !== -1
						}.bind(this))
					}
				},
				methods: {
					beforeEnter(el) {
						el.style.opacity = '0'
						el.style.height = '0'
					},
					enter(el, done) {
						var delay = el.dataset.index * 150
						setTimeout(function() {
							Velocity(el, { opacity: '1', height: '1.6em' }, { complete: done })
						}, delay)
					},
					leave(el, done) {
						var delay = el.dataset.index * 150
						setTimeout(function() {
							Velocity(el, { opacity: '0', height: '0' }, { complete: done })
						}, delay)
					}
				}
			})
		</script>
	</body>
</html>

代码优化说明:

  1. <transition-gruop> 改为 <transition-group>
  2. computed 中的 ComputedList 函数中添加了 return 语句,并使用 .bind(this)this 指向当前 Vue 实例,确保 this.query 指向正确的变量。
  3. methods 中的 beforeEnterenterleave 函数中,将 opacityheight 的值改为字符串类型,以确保正确设置元素的样式。
  4. 删除了 enterleave 函数中多余的 )

代码示例展示了如何使用 Vue.js 实现动态搜索列表,并使用 Velocity.js 添加动画效果,增强用户体验。开发者可以根据实际需求,进一步完善代码功能,例如添加更多的动画效果,或者自定义搜索逻辑等。

Vue.js 实现动态搜索列表并添加动画效果

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

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