【问题标题】:Internet Explorer 11 transition translateY acting strangeInternet Explorer 11 过渡 translateY 行为怪异
【发布时间】:2015-01-09 18:41:17
【问题描述】:

我正在尝试将一个元素从上到下转换(0 到 100vh)。 Internet Explorer 11 在转换转换属性时正在做奇怪的事情。它在应该下降的时候上升,而不是考虑持续时间。

JSFIDDLE1

JSFIDDLE2

div{
    width:200px;
    height:200px;
    background:black;
    transition:transform 5s;
    -ms-transition: -ms-transform 5s;
}

div:hover{
    transform:translateY(100vh);
    -ms-transform:translateY(100vh);
}

为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 这可能与问题I tweeted about some time ago有关。我已经在内部提出了一个关于此问题的问题,并将将此问题添加到人们被此问题困扰的示例列表中。
  • 你好像很了解,不知道是不是只有ie11?
  • 我在 IE 团队工作。我创建的测试(在上面链接的推文中)也在 Internet Explorer 10 中重现。我们没有立即解决它只是因为我们希望尽快解决更紧迫的问题。但是,today we shipped over 2,000 interop fixes,所以我们有很大的动力。
  • 我明白了,谢谢你的信息。所以这是一个错误,有什么办法可以绕过它?

标签: html css internet-explorer internet-explorer-11


【解决方案1】:

我知道这个问题很老,但我今天遇到了同样的问题。我正在构建一种幻灯片,它使用 CSS 过渡来动画幻灯片进出。大多数浏览器处理 transform: translateX(-100vw) 和 transform: translateY(-100vh) 分别向左和向上移动幻灯片,但是 IE 在计算正确的开始/结束位置时遇到了麻烦,并且就像 @Alvaro 提到的那样对时间感到困惑。

解决方案是使用绝对单位(例如像素)而不是相对单位。但是,鉴于我需要支持的屏幕尺寸范围很广,我不能使用单个值。

我的解决方法是使用一系列@media 查询来定义一组翻译规则,这些规则将始终确保幻灯片移出屏幕,但不会走得太远。例如:

/* Slide left */
@media (max-width: 480px) {
  .slide.left {
    transform: translateX(-480px);
  }
}
@media (min-width: 481px) and (max-width: 960px) {
  .slide.left {
    transform: translateX(-960px);
  }
}
@media (min-width: 961px) and (max-width: 1920px) {
  .slide.left {
    transform: translateX(-1920px);
  }
}
@media (min-width: 1921px) and (max-width: 3840px) {
  .slide.left {
    transform: translateX(-3840px);
  }
}
@media (min-width: 3841px) {
  .slide.left {
    transform: translateX(-7680px);
  }
}

/* Slide up */
@media (max-height: 480px) {
  .slide.up {
    transforom: translateX(-480px);
  }
}
/* Etc. */

这些查询将支持高达 8K 的分辨率,尽管在更高的分辨率下粒度要小得多。您需要根据预期的使用情况来调整它们。

【讨论】:

  • 这真的是唯一的解决方案吗?
  • 没有冒犯。 ;)
  • 我并不是想侮辱,但似乎 IE 11(最新版本的 IE)现在应该已经修复了这个问题(迟了一年多),或者现在应该已经找到了真正的解决方案并且不使用大量的 CSS 查询。所以我收回这一点,我是在侮辱微软,而不是你。
  • 为了记录,这似乎是所有相对单位的问题,而不仅仅是视口单位。我在 ems 中使用 translateY 并遇到此问题。切换到 px 修复它。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2014-08-29
  • 2014-02-11
  • 2023-04-07
  • 1970-01-01
  • 2019-11-20
  • 2015-01-27
相关资源
最近更新 更多