【问题标题】:Using calc() to transition width and height in IE在 IE 中使用 calc() 转换宽度和高度
【发布时间】:2014-04-15 09:02:29
【问题描述】:

我今天遇到了一个问题,即尝试使用 CSS 过渡来使用 calc() 更改对象的尺寸在 IE 中不起作用。或者,更确切地说,它们在应用计算值但忽略转换规则的意义上工作。

在此处查看示例:http://jsfiddle.net/32Qr7/

.block {
  width: 350px; height: 100px;
  background-color: red;
  margin: 10px; padding-left: 10px;
  transition: all 1s ease-in-out;
}

.block:hover {
  width: calc(100% - 50px);
  height: calc(150px + 10%);
}

在此示例中,存在一个 div,它在悬停时会在一秒钟内更改其宽度、高度和背景颜色。在 IE 中,背景颜色仍然是平滑的动画,但是宽度和高度的变化是瞬时的。

这对我来说是一个很大的问题,因为我有一个响应式 Web 应用程序,其抽屉从侧面滑出,并且布局的其余部分必须进行调整以进行补偿。由于我要处理多种屏幕尺寸,我不能使用硬编码值。

(是的,我查看了IE 10 + 11: CSS transitions with calc() do not work,希望在那里找到解决方案,但该问题不涉及尺寸变化,因此接受的解决方案对我不起作用。)

有没有人知道这个问题的解决方法,或者有任何其他替代策略可以建议?我希望能够在 CSS 中做到这一点,避免不得不回退到使用 jQuery 动画技术或类似的东西。

【问题讨论】:

  • height: calc(150px + 25px);?为什么不height: 175px;? :)
  • 这只是一个例子。显然,在现实生活中,你永远不会做那样的事情。 (不过,好点。已编辑。)
  • 你的 div 需要保证金吗?

标签: css internet-explorer transition


【解决方案1】:

似乎我在玩了一会儿之后找到了解决方法(至少它适用于IE10IE11)。我使用max-width 属性代替calc() 方法。 CSS 悬停:

.notworks:hover {
    width: 100%;
    max-width: calc(100% - 50px);
    height: 175px;
}

Example

【讨论】:

  • 抱歉延迟回复。这目前在我的项目中不起作用,但它比我上面发布的简单示例要复杂得多,因此我的代码库中可能有其他东西在干扰。不过,仍然将您的答案标记为正确!
  • 这个答案救了我的命。谢谢!!
  • 在我的情况下,我需要left 属性上的过渡动画:(
  • 答案有效,但有一个错误。当您首先将鼠标悬停在块外时,它会达到 100%,然后开始过渡到较低的宽度,因此更好的解决方案是在 .block 类中设置 max-width: calc(100% - 50px); jsfiddle.net/m0vLsfeh
猜你喜欢
  • 2016-02-27
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
相关资源
最近更新 更多