ElementUI自定义组件之左右折叠展开动画

背景

        我们都知道,element ui官网提供了一个上下折叠展开动画,在实现可伸缩的查询面板等业务中非常实用。美中不足的是,不支持配置左右过渡动画。而实际开发中,左右过渡动画的场景还比较多,比如左树右表(左树可收缩)等。在此,笔者参考el-collapse-transition实现,做了个简单的左右过渡动画组件。

演示效果 

核心代码 

beforeEnter(el) {
  addClass(el, 'drawer-transition')
  if (!el.dataset) el.dataset = {}

  el.dataset.oldPaddingLeft = el.style.paddingLeft
  el.dataset.oldPaddingRight = el.style.paddingRight

  el.style.width = '0'
  el.style.paddingLeft = 0
  el.style.paddingRight = 0
},
enter(el) {
  el.dataset.oldOverflow = el.style.overflow
  if (el.scrollWidth !== 0) {
    el.style.width = el.scrollWidth + 'px'
    el.style.paddingLeft = el.dataset.oldPaddingLeft
    el.style.paddingRight = el.dataset.oldPaddingRight
  } else {
    el.style.width = ''
    el.style.paddingLeft = el.dataset.oldPaddingLeft
    el.style.paddingRight = el.dataset.oldPaddingRight
  }
  el.style.overflow = 'hidden'
},
afterEnter(el) {
  removeClass(el, 'drawer-transition')
  el.style.width = ''
  el.style.overflow = el.dataset.oldOverflow
},
beforeLeave(el) {
  if (!el.dataset) el.dataset = {}
  el.dataset.oldPaddingLeft = el.style.paddingLeft
  el.dataset.oldPaddingRight = el.style.paddingRight
  el.dataset.oldOverflow = el.style.overflow

  el.style.width = el.scrollWidth + 'px'
  el.style.overflow = 'hidden'
},
leave(el) {
  if (el.scrollWidth !== 0) {
    addClass(el, 'drawer-transition')
    el.style.width = 0
    el.style.paddingLeft = 0
    el.style.paddingRight = 0
  }
},
afterLeave(el) {
  removeClass(el, 'drawer-transition')
  el.style.width = ''
  el.style.overflow = el.dataset.oldOverflow
  el.style.paddingLeft = el.dataset.oldPaddingLeft
  el.style.paddingRight = el.dataset.oldPaddingRight
}

PS:有需要的朋友可以考虑下载组件+样例完整代码,附上链接

ElementUI自定义组件之左右折叠展开动画组件 + 组件样例 代码-Vue代码类资源-CSDN下载

相关文章

el-menu 有个属性 :default-active="curActive"...
基础用法1<el-inputv-model="input1"palcehode...
 1.安装element-uinpminstallelement-ui-S 2.在main.js中i...
layout布局通过基础的24分栏,可进行快速布局基础布局使用单...
 今天做一个选择年份的功能,直接调用了ElementUI里面的Dat...
  that.end 即为结束日期