【问题标题】:webkit loses transition animation when parent is temporarily hidden with display none当父项暂时隐藏且不显示时,webkit 会丢失过渡动画
【发布时间】:2013-01-11 19:47:27
【问题描述】:

似乎当我们更改过渡子元素的父元素的 display 属性时,在 webkit 中子元素的动画停止 - 当元素的显示恢复时,子样式显示为好像过渡已完成/css 转换属性不存在。

在 firefox 中,过渡不会中断,就好像即使父元素(和内部元素)暂时隐藏,元素也会继续过渡

这里是问题的复制:https://tinker.io/95219/1 动画,然后在矩形过渡时隐藏显示。试试firefox和webkit看看有什么区别

这是一个已知的错误吗?

【问题讨论】:

  • Tinker 似乎是死亡或down。您能否将相同的代码放在 JSFiddle 中,并将其复制到您的问题中,这样即使第三方服务失败,公众也可以使用它。
  • @RobertKoritnik tinker is donw 所以我无法获取代码。以后会确保在问题中添加代码!

标签: css css-transitions


【解决方案1】:

使用visibility: hidden; 代替display: none; 似乎可行。

像这样:https://tinker.io/95219/3

.hidden {
    visibility: hidden;
}

如果您想模拟display: none;(即好像元素确实完全隐藏),您可以将高度设置为零,如下所示:https://tinker.io/95219/4(必须以#container 而不是#parent 为目标实现这一目标。

#container.hidden {
    visibility: hidden;
    height: 0;
}

【讨论】:

  • 恐怕这是不可能的 :( 现实世界的场景我在 jquery mobile 上使用它,#parent 是发生转换的页面,即我们更改页面,这就是 display: none 的位置使用(由 jqmobile),当我回到页面时,动画应该继续
  • 我将不得不更改 jquery 移动插件代码,这不是我想要搞砸的东西,尤其是对于这种不太可能的情况
  • display: none 不仅在视觉上从 DOM 中删除元素。它完全删除它。例如,它还将它从跳位顺序中删除。所以visibility: hidden 只是在视觉上与它相似。
  • @tobib display: none 不会以任何方式删除元素。它在 DOM 中仍然可用。它确实以不会干扰流程的方式隐藏元素。
  • @BramVanroy 公平点。但是display: none 仍然隐藏了更多的元素,而不仅仅是它的可见性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2013-08-25
  • 1970-01-01
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多