Uni*_*lat 13 css jquery css-transitions css-animations jquery-animate
我在创建具有特定效果的弹出菜单时遇到问题.弹出窗口从display:none到block然后我使用jquery来设置从0到1的不透明度(反之亦然).这是必要的,因为否则当元素刚刚更改了显示属性时,不会发生转换.我不认为这会传播给孩子们.但是在我的弹出窗口中,我有4列链接,这些链接具有不透明度过渡,每个链接都有自己的延迟,因此它们一次只能进入一个.但是,当弹出窗口出现时,这不起作用.它们立即处于不透明状态:1即使延迟时间很长,它仍然无效.
有没有解决的办法?我知道CSS动画和同一元素上的显示更改不起作用,但发现任何子动画也不起作用有点令人沮丧.当CSS如此简单时,我宁愿不必编写javascript.但如果javascript是唯一的答案,那么这将是一个简单的解决方案.
这是一个非常简化的代码示例:
$flyout.addClass('in').animate({opacity: 1}, 200, "linear");
Run Code Online (Sandbox Code Playgroud)
"in"是导致列转换的类:
.flyout { display: none; }
.flyout.in { display: block; }
.columns li {
opacity: 0;
-webkit-transition: opacity 0.2s;
}
.flyout.in .columns li { opacity: 1; }
// delay increases with each column
.columns > li:first-child {
-webkit-transition-delay: 0.2s;
}
Run Code Online (Sandbox Code Playgroud)
rod*_*ehm 10
有没有解决的办法?我知道CSS动画和同一元素上的显示更改不起作用,但发现任何子动画也不起作用有点令人沮丧.
它不仅适用于同一个元素,而且适用于整个子树 - 因为整个子树不会被渲染.
display: block在包装器上设置,然后强制重排(通过刷新样式缓冲区wrapperElement.offsetHeight;),然后添加一个设置opacity:1给你的孩子的类(或者做你正在做的任何事情来启动动画).width: 0; height: 0; overflow: hidden; visibility: hidden;(或者,为了更好的过渡transform: scale(0); visibility: hidden; pointer-events: none;)一旦display:none涉及到,在转换时你就会被搞砸.最好的方法是避免它.我一直在使用第二种选择而没有任何重大问题.
在OP添加一些演示代码后编辑:
.animate()包装可在CSS来实现,以及-webkit-transition,但正确的transition,以及// delay increases with each column看起来像是一种误解.选择器.columns > li:first-child应用的所有元素将具有完全相同的延迟 - 它们不会等待前一个元素完成其转换.如果你想在CSS中定义它,你将不得不玩:nth-child()或它的一个表兄弟| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |