首页 > 其他分享 >vue2实现高度过渡效果,函数式组件

vue2实现高度过渡效果,函数式组件

时间:2023-05-24 18:23:53浏览次数:52  
标签:el style 函数 transition height vue2 组件 scrollHeight

1.首先创建src下创建utils文件夹,创建transition.js文件封装过渡组件

const transitionStyle = '0.3s height ease-in-out'
const Transition = {
  // 进入前 设置el元素的transition,高度0
  beforeEnter (el) {
    el.style.transition = transitionStyle
    el.style.height = 0
  },
  // 进入中
  enter (el) {
    // 获取元素显示的高度
    if (el.scrollHeight !== 0) {
      el.style.height = `${el.scrollHeight}px`
    } else {   //没有高度就不显示
      el.style.height = ''
    }
    el.style.overflow = 'hidden'
  },
  // 进入结束
  afterEnter (el) {
    // 清除过度样式
    el.style.transition = ''
    el.style.height = ''
  },
 
  // 离开前
  beforeLeave (el) {
    el.style.height = `${el.scrollHeight}px`
    el.style.overflow = 'hidden'
  },
  // 离开中
  leave (el) {
    if (el.scrollHeight !== 0) {
      el.style.transition = transitionStyle
      el.style.height = 0
    }
  },
  // 离开结束
  afterLeave (el) {
    el.style.transition = ''
    el.style.height = ''
  }
}
 
export default {
  functional: true,   //指定函数组件
  render (h, {children}) { 
    return h('transition', { on: Transition}, children)
  }
}

  过渡组件使用,直接在需要使用的组件引入注册

<template>
<div>
    <p @click="show=!show">切换</p>
    <my-transition>
        <ul class='box'  v-if="show">
            <li>aaaaaaa</li>
            <li>bbbbbbb</li>
            <li>ccccccc</li>
            <li>ddddddd</li>
            <li>eeeeeee</li>
        </ul>
    </my-transition>
    </div>
</template>
<script>
// 自定义过度组件
import myTransition from "../utils/transition.js";
export default {
    data() {
        return {
            show:false
        }
    },
    components: {
        "my-transition": myTransition,
    },
}
</script>
<style lang="less" scoped>
.box{
    background: rgb(248, 248, 248);
    position: absolute;
    box-sizing: border-box;
    top: 50px;
    left: 40%;
}
</style>

  

标签:el,style,函数,transition,height,vue2,组件,scrollHeight
From: https://www.cnblogs.com/mmykdbc/p/17429165.html

相关文章

  • 可变参数列表函数-以求平均数为例
    1#include<stdio.h>2#include<string.h>3#include<stddef.h>4#include<stdarg.h>5floataverage(intvalues_,...){6va_listvar_;7inti=0;8floatsum=0;9va_start(var_,values_);10for(i=......
  • 函数
    什么是函数?C程序是由函数组成的函数是C程序的基本模块,是用于完成特定任务的程序代码单元函数的定义(声明)#include<stdio.h>#include<stdlib.h>#include<time.h>#pragmawarning(disable:4996)/*1-无类型,无参数*2-有类型,无参数*3-无类型,有参数*4-有类型,有......
  • 【服务治理】基于SpringCloudAlibaba微服务组件的灰度发布设计(二)
    一.背景在上文中,灰度发布遇到了些问题,例如:1.动态修改Nacos配置中心的元数据信息,如何同步到Nacos注册中心对应服务的列表中2.管理后台业务调用其它服务灰度实例时的路由规则二.解决方案//TODO ......
  • 搞搞组件库
       ......
  • 单文件组件开发文档
    在大多数启用了构建工具的Vue项目中,我们可以使用一种类似HTML格式的文件来书写Vue组件,它被称为单文件组件(也被称为*.vue文件,英文Single-FileComponents,缩写为SFC)。顾名思义,Vue的单文件组件会将一个组件的逻辑(JavaScript),模板(HTML)和样式(CSS)封装在同一个文......
  • Vue3——基于tdesign封装一个通用的查询组件
    前言基于Vue3+TS+tdesign封装一个通用的查询组件;临时写的一个demo内容组件代码<template><t-formref="form":model="formData"inline><t-form-itemv-for="iteminformConfig":key="item.name":label="item.label&qu......
  • 直播app开发,基于van-uploader封装的文件上传图片压缩组件
    直播app开发,基于van-uploader封装的文件上传图片压缩组件1、调用<template>  <div>    <compress-uploaderv-model="fileList":compressSwitch="true":quality="0.5":maxCount="3"/>  </div></template> <......
  • 中亿丰单文件组件开发文档
    在大多数启用了构建工具的Vue项目中,我们可以使用一种类似HTML格式的文件来书写Vue组件,它被称为单文件组件(也被称为*.vue文件,英文Single-FileComponents,缩写为SFC)。顾名思义,Vue的单文件组件会将一个组件的逻辑(JavaScript),模板(HTML)和样式(CSS)封装在同一个文......
  • vue父子组件通信
     一:在子组件中通过this.$parent.event来调用父组件的方法父组件:<template><div><child></child></div></template><script>importchildfrom'./components/dam/child';exportdefault{components:{......
  • vue自动导入组件和自动导入类库 api
    vue3项目中,使用vue常用的api比如vuex的api或者ref,reactive等,以及导入多个自定义组件、UI组件库的组件,都需要反复的手动导入,注册,很是影响开发体验,这里推荐antfu开源的两个插件,上链接:自动导入组件https://github.com/antfu/unplugin-vue-components自动导入类库a......