基于vue展开收起盒子动画(盒子高度不定)

问题: transition动画只能对高度给定的盒子,在高度变化时实现展开收起动画。对于不定高度的盒子,transition无能为力
解决方案: 小白入门,查找了大量资料后找到一篇大佬写的文章。大佬参考element-ui通过overflow获取高度的方法创建了一个函数式组件实现了对于不定高度的盒子展开收起动画的效果:

const elTransition = '0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out'
const Transition = {'before-enter' (el) {el.style.transition = elTransitionif (!el.dataset) el.dataset = {}el.dataset.oldPaddingTop = el.style.paddingTopel.dataset.oldPaddingBottom = el.style.paddingBottomel.style.height = 0el.style.paddingTop = 0el.style.paddingBottom = 0},'enter' (el) {el.dataset.oldOverflow = el.style.overflowif (el.scrollHeight !== 0) {el.style.height = el.scrollHeight + 'px'el.style.paddingTop = el.dataset.oldPaddingTopel.style.paddingBottom = el.dataset.oldPaddingBottom} else {el.style.height = ''el.style.paddingTop = el.dataset.oldPaddingTopel.style.paddingBottom = el.dataset.oldPaddingBottom}el.style.overflow = 'hidden'},'after-enter' (el) {el.style.transition = ''el.style.height = ''el.style.overflow = el.dataset.oldOverflow},'before-leave' (el) {if (!el.dataset) el.dataset = {}el.dataset.oldPaddingTop = el.style.paddingTopel.dataset.oldPaddingBottom = el.style.paddingBottomel.dataset.oldOverflow = el.style.overflowel.style.height = el.scrollHeight + 'px'el.style.overflow = 'hidden'},'leave' (el) {if (el.scrollHeight !== 0) {el.style.transition = elTransitionel.style.height = 0el.style.paddingTop = 0el.style.paddingBottom = 0}},'after-leave' (el) {el.style.transition = ''el.style.height = ''el.style.overflow = el.dataset.oldOverflowel.style.paddingTop = el.dataset.oldPaddingTopel.style.paddingBottom = el.dataset.oldPaddingBottom}
}export default {name: 'collapseTransition',functional: true,render (h, { children }) {const data = {on: Transition}return h('transition', data, children)}
}

然后在需要的地方当作组件使用

使用教程

随便建个js文件(名字随便取,组件名也随便取),把大佬的代码复制到js文件里面,然后在需要的界面把这个js文件当作组件引入,然后在components里面声明

import collapseTransition from './collapseTransition/collapseTransition.js'export default {name: "",data() {return {isShow: false};},components: {collapseTransition},computed: {},mounted() {}}

然后只需要把这个当成组件使用,使用v-show来判断是否展开

<collapse-transition><view class="" v-show="isShow"><view class=""></view></view>
</collapse-transition>

转载:大佬实现https://segmentfault.com/q/1010000011359250

基于vue渐变展开收起盒子动画(盒子高度不定)相关推荐

  1. 展开收起js动画效果

    展开收起js动画效果 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 开发工具与关键技术:Ad ...

  2. 基于vue创建的悦听音乐盒子

    Vue 是一套用于构建用户界面的渐进式JavaScript框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,方便与第三方库或既有项目整合.Vue.js是 ...

  3. vue制作展开收起效果

    <template><div><div class="report-list-title"><div v-for="(item, ...

  4. vue 列表展开收起

    https://blog.csdn.net/weixin_42550863/article/details/81980094https://blog.csdn.net/weixin_42550863/ ...

  5. CSS 展开收起 样式

    效果:展开.收起 一. 效果一 代码: <template><div class="container"><div class="head- ...

  6. vue伸缩效果_Vue.js - 元素展开、收起动画效果组件(附:二级菜单的展开、收缩动画效果)...

    子菜单的展开.收缩功能在许多系统上都很常见,如果想要在打开收起时带有动画效果,过去常常会通过 jQuery 实现.而在 Vue 项目中,我们可以单独封装一个动画组件,方便使用. 1,效果图 点击一级菜 ...

  7. css3 updown 动画,Vue的transition中的slidedown,slideUp展开收起动画

    vue transition动画 vue的transition过渡动画在vue官网已有详细教程,就不赘述了.然而当我们使用transition来实现slidedown,slideup的展开收起动画时, ...

  8. Vue 实现在文本溢出后浮现Tooltip、及文本展开收起效果

    目录 示例: 1. expandable模式(默认) - 文本展开收起效果: 2. tooltip模式 - 文本使用Tooltip效果: 3. tooltipExpandable模式 - 文本同时使用 ...

  9. ios 圆形旋转菜单_iOS高级动画:圆形树展开收起动画

    转自:标哥的技术博客,作者:黄仪标(微博) 前段时间帮某某做了一个动画效果,今天分享给大家.关于动画的基础知识,这里不会细说,如果您还没有核心动画的基础知识,请先阅读相关文章,了解核心动画如何使用,然 ...

最新文章

  1. 咪咕盒子链接服务器失败_云服务器怎样备份数据库备份
  2. VMware下安装Ubuntu不支持1920X1080分辨率问题
  3. 详解OS X和iOS图像处理框架Core Image
  4. es6 babel转码器使用
  5. python条形堆积图_python – 使用DataFrame.plot显示堆积条形图中...
  6. 计算机教案画圆形和方形,画方形和圆形的教案
  7. 产生随机小数_如果取到小数区间内的任一数字?
  8. 风控算法知识——浅谈信息熵与IV值应用介绍
  9. iOS-UI分析利器--Reveal安装破解以及简单使用
  10. 转载的关于pthread_cond_wait的文章,写的比较详细
  11. 松下plc安装序列号afpsgr7_松下fpwin gr7下载 Control FPWIN GR7(松下plc编程软件) v2.21 中文安装版(附序列号) 下载-脚本之家...
  12. Android 手机锁屏解锁后Activity走了onDestroy
  13. python元组操作_python元组操作
  14. jQuery源码分析-10事件处理-Event-事件绑定与删除-bind/unbind+live/die+delegat/unde
  15. mysql中删除数据库语句
  16. 2008年中国电子商务十大时刻
  17. 输入一个年份,输出是否为闰年。闰年的条件,又能被4整除但不能被100整除,或者能被400整除的年份都是闰年
  18. 经验分享|在龙芯2K上运行RT-Thread系统并开源
  19. JavaScript中数据类型的转换与undefined及Null
  20. 连锁零售系统能解决多门店管理哪些痛点

热门文章

  1. ELINK编程器典型场景之多APP文件下载
  2. 和平精英吃鸡助手微信小程序源码一键设置灵敏度键位捏脸
  3. 百度钱包杀入移动支付背后的“阴谋论”
  4. 印尼数据中心失火令人深思,数据安全难题有何解?
  5. Windows Mobile(移动手机)
  6. 读《施一公院士:优秀博士如何养成》一文的总结
  7. 【行研报告】2021中国低代码市场研究报告—附下载链接
  8. 软甲开发者应有的八大特征
  9. 计算机审计经验,计算机审计经验交流.doc
  10. 不用ps也能做出高大上的图