【问题标题】:It is possible use transition delay for the properties of transform style? [duplicate]可以对变换样式的属性使用过渡延迟吗? [复制]
【发布时间】:2020-11-16 04:08:39
【问题描述】:

我有这样的财产

transition: top .5s, transform .5s .5s;

通常,为了获得更好的性能,我们应该只对动画使用变换和不透明度。

这样的动画可以吗?

transition: transform(translateY) .5s, transform(rotate) .5s .5s;

document.querySelector(".burger").onclick = function(e) {toggleActive(e)};

function toggleActive({target}) {
  target.classList.toggle('active')
}
span {
  top: 50%;
  transform: translateY(-50%);
  transition: background-color 0.1s 0.5s;
}

span, span:before, span:after {
    background-color: #555;
    height: 5px;
    width: 35px;
    display: block;
    border-radius: 5px;
    position: absolute;
    animation-duration: 3s;
    animation-fill-mode: forwards;
}
  
span:before, span:after {
  content: '';
}

.basic:before, .basic:after {
    transition: transform 0.5s, top 0.5s 0.5s;
}
span:before {
    top: 200%;
}

span:after {
    top: -200%;
}

.basic.active {
    background-color: rgba(0, 0, 0, 0);
}

.basic.active:before {
    transform: rotate(-45deg);
}
.basic.active:after {
    transform: rotate(45deg);
}
.basic.active:before, .basic.active:after {
    top: 0;
    transition: top 0.5s, transform 0.5s 0.5s;
}
<span class="burger basic"></span>

在这种情况下,我确实使用了top 属性。我想转换transform 的属性。

我不需要任何使用 JS 的补丁。唯一的问题是,是否存在这种可能性。我可能会补充一点,我最初使用的是 SCSS。

【问题讨论】:

    标签: html css sass


    【解决方案1】:

    如果您添加更多元素,您可以轻松做到这一点。我还优化了代码以删除背景转换,因此我们只保留转换转换:

    document.querySelector(".burger").onclick = function(e) {
      document.querySelector(".burger").classList.toggle('active')
    };
    .burger {
      top: 50%;
      transform: translateY(-50%);
      transition: transform 0.5s;
      background-color: #555;
      height: 5px;
      width: 35px;
      position: absolute;
      border-radius: 5px;
      cursor: pointer;
    }
    
    .burger div:before {
      content: '';
      display: block;
      height: 100%;
      background-color: #555;
      border-radius: 5px;
      transition: transform 0.5s;
    }
    
    .burger div {
      position: absolute;
      height: 100%;
      width: 100%;
      transition: transform 0.5s 0.5s;
      transform: translateY(-200%);
    }
    
    .burger div:last-child {
      transform: translateY(200%);
    }
    
    .basic.active {
      transform: translateY(-50%) rotate(-45deg);
      transition: transform 0.5s 0.5s;
    }
    
    .basic.active div {
      transform: translateY(0%);
      transition: transform 0.5s;
    }
    
    .basic.active div:last-child::before {
      transform: rotate(90deg);
      transition: transform 0.5s 0.5s;
    }
    <div class="burger basic">
      <div></div>
      <div></div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2013-06-11
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多