html - 仅在某些情况下延迟过渡

标签 html css dom css-transitions

我在容器内有 4 个叠加层(overflow: hidden),默认情况下 100% 水平翻译。 .overlay 上的 .active 将其动画化到 View 中。 激活另一个从当前的中删除 .active 并将 .active 添加到新的。

现在我想要“新事件”元素的过渡延迟,因为同时对旧的和新的叠加层进行动画处理会导致视觉效果不一致(叠加层相互叠加等)。而且同时制作动画感觉太仓促了。

我的第一种方法: 兄弟选择器延迟 .active 的所有 sibling 的转换,没有成功,因为兄弟选择器看起来不是“后面”或“周围”......

第二种方法: 在父级 atLeastOneIsActive 上类,然后将转换延迟应用于 .active。效果不佳,因为新旧覆盖层都会出现过渡延迟,从而使一切变得更糟。

很遗憾,我无法向您展示实际示例。 无论如何,这个问题更笼统;但要在此处获取结果图片 2 个屏幕截图

hover on either pin or link

overlay displayed

我正在寻找一种在某些情况下应用延迟的简洁而巧妙的方法。 jQuery 仅用于类管理。

最佳答案

activating another one removes .active from the current one and adds .active to the new one.

这个“激活”是用jQuery做的吗.on("mouseover", function(){ ?
因为如果您以这种方式添加和删除类,为什么不简单地使用 setTimeout.addClass() 上?

------------------------
编辑

我研究了一段时间。
而且我很确定有一个解决方案...

假设我找到了您具体问题的确切性质,更确切地说。

我在 fiddle 中重现了你的问题和解决方案。
但在您查看之前,请阅读我的解释:

图像过渡是重叠的。
那是因为它们的宽度与动画开始位置的关系。 由于它们被推到视口(viewport)的右外侧特定距离...

这个距离与图像的宽度相比不够。它必须是较大图像的两倍(最小值)
我通过将它们全部设置为相同大小找到了它。
这不是强制性的……但确实是一件好事!

因此,解决方案是将它们推离视口(viewport)右侧两倍于“最大宽度”的位置。

我制作了一个 Fiddle 并制作了 4 个按钮(代表您的 map 图钉)来为图像设置动画。我还为它们分配了键盘编号,因此无需使用鼠标定位按钮即可更轻松地仔细观察图像。 ;)

最后,有一个按钮“Toggle class equalSize”,它强制图像大小相同。

Have a look now!
:D

.active {
    right:0;
}
img{
    position:fixed;
    right:-1200px;
    top:100px;
    transition: right 2s;
}
.equalSize{
    width:600px;
    height:450px;
}

关于html - 仅在某些情况下延迟过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38155817/

相关文章:

html - 在悬停或事件时更改背景位置的正确方法是什么

html - Sprite 图像未在 css 中裁剪

jquery - 更改 jQuery 对话框窗口位置

css - 在 Bootstrap 中为自定义跨度和装订线宽度设置的值

javascript - 对 d3 的 selectAll 方法的好奇心

php dom 获取节点的所有属性

javascript - 我需要访问 IFRAME 中文档的文档对象。有没有办法为 IE7 和 IE8 做到这一点?

javascript - 根据链接点击在主窗口中显示不同的 div

html - Flexbox - 显示页眉和页脚

html - 选择中的选项将与选择 css 的宽度相同