【问题标题】:CSS Constant Transition Speed [duplicate]CSS恒定过渡速度[重复]
【发布时间】:2020-06-14 08:45:16
【问题描述】:

我正在努力实现恒定的过渡速度。

注意,我不是指“轻松”和“线性”之间的区别。我的意思是如果我们从 0px 到 20px 需要 1 秒,但从 0 到 100px 应该需要 10 秒。

.box {
    width: 0px;
    height: 20px;
    transition: width 1s linear;
}

似乎找不到方法来做到这一点。而我所有的搜索都只是出现了轻松/线性差异。

.

【问题讨论】:

    标签: css css-transitions transition css-transforms


    【解决方案1】:

    我发现最好的方法是使用自定义属性。在下面的示例中,我使用20 来表示一个宽度单位。当乘以.05 时,我们得到1,即一秒。使用自定义属性,我们可以将transition-width 变量覆盖为所需的像素长度。计算将动态更新并相应调整transition-duration

    setTimeout(() => {
      document.querySelector('.box.one').classList.add('start');
      document.querySelector('.box.two').classList.add('start');
    }, 0);
    .box {
      --transition-width: 20;
      --transition-speed: .05;
      width: 0px;
      overflow: hidden;
      height: 20px;
      transition-property: width;
      transition-timing-function: linear;
      transition-duration: calc(var(--transition-width) * var(--transition-speed) * 1s);
      background: black;
    }
    
    .box.one.start {
      width: 20px;
    }
    
    .box.two.start {
      --transition-width: 100;
      width: 100px;
    }
    <div class="box one"></div>
    <div class="box two"></div>

    jsFiddle

    【讨论】:

    • 不错,我正在寻找简单的解决方案,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 2014-02-04
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    相关资源
    最近更新 更多