• vue custom animation All In One


    vue custom animation All In One

    drawer-out animation 怎么定义的 ❓

    Q: 全局搜索不到 ltr-drawer-in 定义出处,但是却能正常使用;

    A: 显然是引入了第三方的全局样式 ✅

    demo

    
    
    
    <style lang="scss">
        .drawer-wrapper {
            position: absolute;
            top: 0;
            z-index: 551;
            height: 100%;
            background-color: #fff;
            box-shadow: 0 8px 10px -5px rgba(0,0,0,.2), 0 16px 20px 2px rgba(0,0,0,.14), 0 6px 20px 5px rgba(0,0,0,.12);
    
            // 从左往右开
            &.ltr {
                animation: ltr-drawer-out 300ms cubic-bezier(0, 0, .2, 1) 0ms;
                left: 0;
            }
            &.drawer-opened.ltr {
                animation: ltr-drawer-in 300ms cubic-bezier(0, 0, .2, 1) 0ms;
            }
    
            // 从右往左开
            &.rtl {
                animation: rtl-drawer-out 300ms cubic-bezier(0, 0, .2, 1) 0ms;
                right: 0;
            }
            &.drawer-opened.rtl {
                animation: rtl-drawer-in 300ms cubic-bezier(0, 0, .2, 1) 0ms;
            }
    
            // 从上往下开
            &.ttb {
                animation: ttb-drawer-out 300ms cubic-bezier(0, 0, .2, 1) 0ms;
                left: 0;
            }
            &.drawer-opened.ttb {
                animation: ttb-drawer-in 300ms cubic-bezier(0, 0, .2, 1) 0ms;
            }
    
            // 从下往上开
            &.btt {
                animation: btt-drawer-out 300ms cubic-bezier(0, 0, .2, 1) 0ms;
                left: 0;
            }
            &.drawer-opened.btt {
                animation: btt-drawer-in 300ms cubic-bezier(0, 0, .2, 1) 0ms;
            }
        }
    </style>
    
    
    

    element-ui& scss

    @mixin / $direction / @keyframes

        direction: {
          type: String,
          default: 'rtl',
          validator(val) {
            return ['ltr', 'rtl', 'ttb', 'btt'].indexOf(val) !== -1;
          }
        },
    
    

    https://github.com/ElemeFE/element/blob/dev/packages/drawer/src/main.vue

    @import "mixins/mixins";
    @import "common/var";
    
    @keyframes el-drawer-fade-in {
      0% {
        opacity: 0;
      }
      100% {
        opacity: 1;
      }
    }
    
    @mixin drawer-animation($direction) {
    
      @keyframes #{$direction}-drawer-in {
        0% {
    
          @if $direction == ltr {
            transform: translate(-100%, 0px);
          }
    
          @if $direction == rtl {
            transform: translate(100%, 0px);
          }
    
          @if $direction == ttb {
            transform: translate(0px, -100%);
          }
    
          @if $direction == btt {
            transform: translate(0px, 100%);
          }
        }
    
        100% {
          @if $direction == ltr {
            transform: translate(0px, 0px);
          }
    
          @if $direction == rtl {
            transform: translate(0px, 0px);
          }
    
          @if $direction == ttb {
            transform: translate(0px, 0px);
          }
    
          @if $direction == btt {
            transform: translate(0px, 0px);
          }
        }
      }
    
      @keyframes #{$direction}-drawer-out {
        0% {
          @if $direction == ltr {
            transform: translate(0px, 0px);
          }
    
          @if $direction == rtl {
            transform: translate(0px, 0px);;
          }
    
          @if $direction == ttb {
            transform: translate(0px, 0px);
          }
    
          @if $direction == btt {
            transform: translate(0px, 0);
          }
        }
    
        100% {
          @if $direction == ltr {
            transform: translate(-100%, 0px);
          }
    
          @if $direction == rtl {
            transform: translate(100%, 0px);
          }
    
          @if $direction == ttb {
            transform: translate(0px, -100%);
          }
    
          @if $direction == btt {
            transform: translate(0px, 100%);
          }
        }
      }
    }
    
    @mixin animation-in($direction) {
      .el-drawer__open &.#{$direction} {
        animation: #{$direction}-drawer-in .3s 1ms;
      }
    }
    
    @mixin animation-out($direction) {
      &.#{$direction} {
        animation: #{$direction}-drawer-out .3s;
      }
    }
    
    @include drawer-animation(rtl);
    @include drawer-animation(ltr);
    @include drawer-animation(ttb);
    @include drawer-animation(btt);
    
    $directions: rtl, ltr, ttb, btt;
    
    

    refs

    https://juejin.cn/post/6915955723310481421



    ©xgqfrms 2012-2020

    www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

    原创文章,版权所有©️xgqfrms, 禁止转载 ️,侵权必究⚠️!


    xgqfrms
  • 相关阅读:
    javascript控制页面(含iframe进行页面跳转)跳转、刷新的方法汇总
    window下安装docker
    http协议
    php环境选择
    jsmooth和exe4j
    域名解析
    clientHeight,offsetHeight,scrollHeight迷一样的三个值
    LinkedHashMap和hashMap和TreeMap的区别
    fiddler抓包
    mac下配置openfire
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/15263537.html
Copyright © 2020-2023  润新知