【问题标题】:Is there a way to have a smooth animation always happening on hover with translate3d?有没有办法让translate3d悬停时总是发生流畅的动画?
【发布时间】:2016-01-21 21:47:34
【问题描述】:
  • 我有一个带有右侧菜单(绿色)的 CSS 布局。
  • 菜单的主要部分默认隐藏在视口之外。
  • 鼠标悬停在右侧菜单上:经过短暂延迟后,菜单完全转换到视口中(经过一点延迟)。
  • 鼠标移出右侧菜单时:菜单应转换回其初始位置(无延迟)。

查看此JsFiddle 上的绿色菜单:尝试将鼠标悬停在绿色菜单上

以下是相关的 CSS 代码:

section#base-layer section#base-layer-contact-bar {
    position: absolute;
    box-sizing: border-box;
    top: 60px;
    right: -90px;
    width: 150px;
    height: calc(100% -  60px);
    transform: translate3d(0, 0, 0);
    transition: transform 0.6s ease-in;
    background-color: green;
}
section#base-layer section#base-layer-contact-bar:hover {
    transform: translate3d(-90px, 0, 0);
    transition-delay: 1s;
}

重现:当动画处于初始状态时,将鼠标移出绿色部分,即在其完全延伸之前。

  • 有没有办法让流畅的动画始终出现?
  • 我的 CSS 有问题吗?
  • 这可能吗?
  • 如果是这样,是否有纯 CSS 解决方案,或者我必须采取不同的方式吗?

注意我在 ubuntu 上使用的是 Chrome v45。

【问题讨论】:

  • 我在你的 jsfiddle 上看不到所说的动画,也许你错过了在那里描述的东西?
  • @AGE 就像描述的那样,动画在绿色菜单上,它会在一点延迟后启动(故意)
  • 我看不到任何闪烁,您的意思是当菜单打开并且在动画完成之前您将鼠标移出绿色部分菜单会跳回原位?如果不是我不知道你的意思
  • 我没有看到任何闪烁,也没有看到跳回。当我将鼠标移出时,它只是动画关闭。必须是特定于浏览器的(我在 osx Chrome 上)。仅供参考,这种延迟很烦人——用户会想什么“哦,让我们打开菜单吧——我希望它能让我先等一会儿!” ;)
  • @Moob 我不是在寻求 UX 建议,显然我为了调试目的让所有事情都变慢了。你知道在生产版本中颜色会改变;)

标签: css hover css-animations translate3d


【解决方案1】:

以下内容对我有用。我只是删除了#base-layer-contact-bar 上的transform: translate3d(0, 0, 0)

见:https://jsfiddle.net/wuacxfn1/1/

section#base-layer section#base-layer-contact-bar {
  position: absolute;
  box-sizing: border-box;
  top: 60px;
  right: -90px;
  width: 150px;
  height: calc(100% -  60px);
  /* transform: translate3d(0, 0, 0); < remove this */
  transition: transform 0.6s ease-in;
  background-color: green;
}

问题是我真的不知道为什么它有效!也许比我更聪明的人可以为我们提供答案?

FWIW,this version 使用 translateX 也适用于我。您的里程可能会有所不同。

【讨论】:

  • 两个版本我都有过跳跃:'(
  • @SebastienLorber 令人沮丧。你能看看这个 jsFiddle:jsfiddle.net/wuacxfn1/2 我用 JS 来切换一个 .hover 类,但它的删除有延迟。它是否为您显示相同的问题?我不建议将其作为解决方案 - 只是做一些侦探工作。
  • 是的,我也有这个问题。看来:hover 不是这里的问题
  • 你用的是什么操作系统+浏览器?
  • Ubuntu 14.04 上的 Chrome v45
【解决方案2】:

起初我无法重现您的问题。

唯一可靠的方法是当我对您的小提琴应用更改并点击run 时,跳转开始发生。

当您在“新”加载(重新加载页面)时遇到问题时,跳转不会发生。或者非常非常非常偶尔,如果您一直快速移动鼠标(这不是正常的用户行为)。

所以我想在开发过程中,当你对 CSS 应用更改时可能会出现这个问题,否则这不应该发生。

我希望这会有所帮助:)

【讨论】:

  • 实际上我每次都可以重现它,考虑到您的陈述,这是一种奇怪的行为
  • 是的,我也可以每次都复制它,无论是否正常,它都会发生在真实用户身上,而不是性感的用户体验
  • 嗯,很奇怪。好吧,起初我在复制它时遇到了问题,这就是我的管理方式。另一件要提的事情是你的 CSS 有点过于严谨,但也许这只是为了你的例子
猜你喜欢
  • 2012-07-10
  • 2021-05-17
  • 2014-08-29
  • 2011-08-10
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
相关资源
最近更新 更多