vue列表逐个进入过渡动画
vue实现列表依次逐渐进入动画
利用vue 中transition-group 实现列表逐个进入动画效果
1.vue3代码,
<template>
<section class="search-tool">
<div class="search-content">
<div class="build-box">
<div class="list">
<transition-group name="more" :css="false" @before-enter="beforeEnter" @enter="enter">
<!-- template 是为了解决vue3 vfor vif一起使用时冲突 -->
<template v-for="(build, b_index) in data.buildList" :key="b_index">
<!-- data-key 自定义属性,为过渡效果添加延时 -->
<!-- 类似 ant motion 中列表渲染时添加的key-->
<div v-if="data.show" :data-key="b_index">
<div
v-if="build.name.indexOf(data.inputVal) >= 0"
class="build-item"
:title="build.name"
>
<div class="overflow-1">建筑{{ b_index }}</div>
<div class="collect" @click="collectBuild()"></div>
</div>
</div>
</template>
</transition-group>
</div>
</div>
</div>
</section>
</template> <script setup>
import { reactive, toRefs, onBeforeMount, onMounted, watchEffect, computed } from 'vue'
import "./../assets/transiton.css"
const data = reactive({
show: false,
inputVal: '',
buildList: [
{
name: '11'
},
{
name: ''
},
{
name: ''
},
{
name: ''
},
{
name: ''
},
{
name: ''
}
]
})
const collectBuild = () => {}
const beforeEnter = (el) => {
el.style.opacity = 0
}
const enter = (el, done) => {
let delay = el.dataset.key * 150 //进入延时
setTimeout(() => {
el.style.transition = 'opacity 0.4s '
el.style.opacity = 1
el.style.animation = 'right-to-left 0.4s infinite' //动画效果
el.style['animation-iteration-count'] = 1
done()
}, delay)
}
onBeforeMount(() => {})
onMounted(() => {
data.show = !data.show
})
watchEffect(() => {})
defineExpose({
...toRefs(data)
})
</script>
<style scoped lang="scss">
.search-tool {
width: 500px;
height: 800px;
background: rgba($color: #000000, $alpha: 0.7);
.search-content {
max-height: 1170px;
color: #fff;
font-size: 30px;
.list {
max-height: 380px;
overflow-y: scroll;
overflow-x: hidden;
}
.build-item {
height: 72px;
background: #000000;
background-size: 100% 100%;
background-repeat: no-repeat;
cursor: pointer;
margin-bottom: 5px;
padding-left: 15px;
box-sizing: border-box;
position: relative;
display: flex;
align-content: center;
align-items: center;
.overflow-1 {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
max-width: 450px;
}
}
::-webkit-scrollbar {
/*滚动条整体样式*/
width: 12px; /*高宽分别对应横竖滚动条的尺寸*/
height: 20px;
}
::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 5px;
-webkit-box-shadow: inset 0 0 5px #2c8af3;
background-color: #2c8af3;
}
::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px #a1a1a1;
border-radius: 0;
display: none;
}
}
}
</style>
2.过渡动画放在 统一放在一个transiton.css文件夹中,引入到main.js或者单个组件引入
body{
padding: 0;
margin: 0;
}
/* 从右到左 */
@keyframes right-to-left {
from {
padding-left: 100%;
}
to {
padding-left: 0%;
}
}
/* 从左到右 */
@keyframes left-to-right {
from {
padding-right: 100%;
}
to {
padding-right: 0%;
}
}
更新:解决循环元素过多,防止延时时间过长,dom长期不显示
let index = 0
const enter = (el, done) => {
let delay = el.dataset.key * 150 //进入延时
if(index <= 30){//只循环30条
setTimeout(() => {
el.style.transition = 'opacity 0.4s '
el.style.opacity = 1
el.style.animation = 'right-to-left 0.4s infinite' //动画效果
el.style['animation-iteration-count'] = 1
done()
}, delay)
} else {
el.style.opacity = 1
}
}
vue列表逐个进入过渡动画的更多相关文章
- Vue 路由知识三(过渡动画及路由钩子函数)
路由的过渡动画:让路由有过渡动画,需要在<router-view>标签的外部添加<transition>标签,标签还需要一个name属性. <transition nam ...
- vue 列表的排序过渡 shuffle遇到的问题
内部的实现,Vue 使用了一个叫 FLIP 简单的动画队列使用 transforms 将元素从之前的位置平滑过渡新的位置 需要注意的是使用 FLIP 过渡的元素不能设置为 display: inlin ...
- VUE笔记 - 列表过渡动画 v-enter, v-leave-to | v-enter-active, v-leave-active | v-move
本例要结合过渡动画四个过程的示意图一起理解. https://cn.vuejs.org/v2/guide/transitions.html 疑问: v-for="(item,i) in li ...
- vue过渡 & 动画---进入/离开 & 列表过渡
(1)概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animat ...
- Vue列表过渡
前面的话 本文将详细介绍Vue列表过渡 概述 前面分别介绍了单元素CSS过渡和JS过渡,以及多元素过渡.如何同时渲染整个列表呢?在这种情景中,需要使用<transition-group>组 ...
- Vue相关(过渡动画)
Vue 过渡 && 动画 一.CSS过渡 1.transition标签可以用来封装需要过渡的元素,添加entering/leaving 过渡, 条件是: (1)使用条件渲染语句 v-i ...
- vue.js之过渡动画
vue提供了一个封装动画的组件 <transition name="tr"></transition>,将需要执行动画的元素包裹在该组件中,在通过css修改 ...
- vue 过渡 & 动画
过渡 & 动画 过渡动画 用css先定义好动画效果 .a-enter-active, .a-leave-active { transition: all 1.5s; } .a-enter, . ...
- 058_末晨曦Vue技术_过渡 & 动画之过渡的类名
进入/离开 & 列表过渡 点击打开视频讲解更加详细 概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class ...
- CSS3初学篇章_5(背景样式/列表样式/过渡动画)
背景样式 1.背景颜色语法:background-color : transparent | color body { background-color:#CCCCCC;} 2.渐变色彩语法:back ...
随机推荐
- 电赛控制类PID算法实现
一.什么是PID 学过自动控制原理的对PID并不陌生,PID控制是对偏差信号e(t)进行比例.积分和微分运算变换后形成的一种控制规律.PID 算法的一般形式: PID控制系统原理框图 二.PID离散化 ...
- rest framework 学习 序列化
序列化功能:对请求数据进行验证和对Queryset进行序列化 Queryset进行序列化: 1 序列化之Serializer 1 class UserInfoSerializ ...
- drf——jwt
jwt原理 使用jwt认证和使用session认证的区别 三段式 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm ...
- filler 抓取手机app的数据,手机wifi设置
1.处于同一局域网下, 2.手机的代服务器修改为手动 3.代理服务器,名称为本机ip地址端口为8888,可以自己设置 4.fillder上面选择允许远程链接
- Java面向对象基础学习
一.面向对象语言编程 Java是一门面向对象的编程语言(OOP),万物皆对象 面向对象初步认识,在大多数编程语言中根据解决问题的思维方式不同分为两种编程语言 1.面向过程编程 2.面向 ...
- 腾讯云 cloudbase 云开发使用笔记
产品概述 云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用.自动弹性扩缩的后端云服务,包含计算.存储.托管等 serverless ...
- Nature 重大发现:癌基因竟不在染色体上?第一作者吴思涵亲身解读!
编辑|李丽 记者|布德鸟 图片提供|吴思涵 今日凌晨,美国加州大学圣地亚哥分校 Ludwig 癌症研究所的 Paul Mischel 教授领导的研究团队发现, 大量的癌基因并不在染色体上,而是会从染色 ...
- “AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[1]、NetCDF4使用教学、Xarray 使用教学,针对气象领域.nc文件读取处理
1."AI Earth"人工智能创新挑战赛:助力精准气象和海洋预测Baseline[1].NetCDF4使用教学.Xarray 使用教学,针对气象领域.nc文件读取处理 比赛官网: ...
- Delegation Pattern 委托模式
原文:https://zh.wikipedia.org/wiki/%E5%A7%94%E6%89%98%E6%A8%A1%E5%BC%8F 委托模式是软件设计模式中的一项基本技巧.在委托模式中,有两个 ...
- docker安装LuaJIT WEB应用防火墙
安装包请见 https://www.jianshu.com/p/b81656764613 Dockerfile #FROM ubuntu FROM centos MAINTAINER G00G1S C ...