【问题标题】:CSS transition not working when the starting position is display:none;当起始位置为 display:none 时,CSS 过渡不起作用;
【发布时间】:2016-03-31 11:44:42
【问题描述】:

我有一个以display: none 开头的元素,从left: 0 开始。我需要展示它并将其移至left: 40。但过渡不起作用。该元素直接显示在左侧:40。

注意,我不会从无显示过渡到阻止。我正在转换一个完全不同的属性。

在这里拉小提琴:

https://jsfiddle.net/5t43rdkb/2/

【问题讨论】:

    标签: css css-transitions


    【解决方案1】:

    注意,我不会从无显示过渡到阻止。我正在转换一个完全不同的属性。

    您是否正在转换显示属性并不重要。为了使过渡完全开始,元素必须已经处于可以动画的状态。由于display: none 完全禁止生成框,因此您无法为根本不存在的框设置动画,即使您在新规则中立即将其更改为display: block 并使其随后生成框。特别是,positionleft 之类的属性在不存在的盒子上没有任何意义,因为同样,首先没有任何东西可以定位。

    【讨论】:

    • 谢谢。我想可能是这样。但以下内容也不起作用:jsfiddle.net/0ma8g3Lf。在这里,我将元素设置为在过渡之前显示。
    • 在 settimeout 中运行第二个命令是可行的,但是:jsfiddle.net/u1m6xot1
    • @Coffee Bite:我在这两个小提琴中看到的代码与原始代码相同。确保正确保存它们。
    • @Coffee Bite:我猜 setTimeout 的作用是在启动计时器之前强制重绘。因此,在添加类时,元素已经显示出来,因此过渡工作。
    • 非常感谢。我用所有三种策略创建了一个小提琴:jsfiddle.net/xvg8crm6/2。我不明白为什么 #2 不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2015-12-01
    • 2012-09-27
    相关资源
    最近更新 更多