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 ...
随机推荐
- es笔记四之中文分词插件安装与使用
本文首发于公众号:Hunter后端 原文链接:es笔记四之中文分词插件安装与使用 前面我们介绍的操作及演示都是基于英语单词的分词,但我们大部分使用的肯定都是中文,所以如果需要使用分词的操作肯定也是需要 ...
- 工欲善其事必先利其器--CMake牛刀小试
这里假设用户已经安装好MinGW编译套件!并配置好环境变量!具体怎么下载和配置网上教程非常多,这里贴上一个链接:不仅教你安装MinGW还教你安装VScode配置 1.学习c plus plus编码为什 ...
- IntelliJ IDEA 最新激活码:2023、2022及以下版本通用(亲测有效)
分享一下 IntelliJ IDEA 2023.1 最新激活注册码,破解教程如下,可免费永久激活,亲测有效,下面是详细文档哦~ 申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络, ...
- 如何使用Go中的Weighted实现资源管理
1. 简介 本文将介绍 Go 语言中的 Weighted 并发原语,包括 Weighted 的基本使用方法.实现原理.使用注意事项等内容.能够更好地理解和应用 Weighted 来实现资源的管理,从而 ...
- R 语言中的高级图像处理包
最新的 magick 包是为能够在 R 中更现代化.简单化高质量图像处理而进行的一次努力.该包封装了目前最强大的开源图片处理库 ImageMagick STL . ImageMagick 库具有大量功 ...
- 春秋杯春季联赛&&ciscn2023华北赛区部分题解
前言 复现几个比赛时没做出来的题 1.[CISCN 2023 华北赛区]ez_ruby 查文档可知 ruby内置的open函数,如果第一个字符是管道符|,后面就可以接命令.这可能是考察涉猎的知识范围广 ...
- 使用 nuxt3 开发简约优雅的个人 blog
起因 很早前我就有过搭建个人博客的想法,但是我希望使用纯前端实现,这样就不需要付出额外的后端维护成本,维护成本又低,而且更加安全.网上也有很多博客框架但是也不符合我的需求,所以我使用了nuxt3 + ...
- 变分自编码器(VAE)公式推导
论文原文:Auto-Encoding Variational Bayes [OpenReview (ICLR 2014) | arXiv] 本文记录了我在学习 VAE 过程中的一些公式推导和思考.如果 ...
- C#中数组=out参数?
- 结论 先上结论,答案是yes,C#中数组确实具有out参数的特性. - 疑问 最近开发一个上位机的功能,有段代码看得我一直很迷糊,我的认识,函数的执行结果,要么在函数中通过return返回,要么通 ...
- 【技术积累】Vue.js中的组件库【一】
Vue组件库是什么 Vue中的组件库是一组预先构建好的可重用组件,用于加速开发过程并提高代码的可维护性.组件库通常包含一系列常用的UI组件,如按钮.输入框.下拉菜单等,以及一些功能性组件,如模态框.轮 ...