CSS转换不工作的百分比高度?

前端之家收集整理的这篇文章主要介绍了CSS转换不工作的百分比高度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下CSS定义:
.detailsCollapsed
{
   display:none;
   height:0%;
   width:100%;
   -webkit-transition:height 40s ease-in-out;
}

.detailsExpanded
{
    display:block;
    visibility:visible;
    height:100%;
    width:100%;
    -webkit-transition:height 40s ease-in-out;
}

这些应用于其中包含一些内容的div。

我也有一些javascript,当一个div被点击它改变元素的类名。这工作正常扩展和折叠,但没有动画在iphone上? (所有其他转换我试图用流体动画精细工作)任何想法?

解决方法

到目前为止,(纯CSS)解决方

如果你离开height:auto;并使用max-height的固定值,您可以模拟转换:

.details-expanded {
    max-height: 300px; /* try to guess a max-height for your content */
}

.details-collapsed {
    height: auto;
    max-height: 0;
    transition: max-height 500ms linear; /* pick a proportional duration */
}

当元素展开时,请注意过渡持续时间和最大高度。使用值直到你得到想要的行为。

这样,您可以在两个定义的值(在上面的示例中,从0到300)之间转换,而height属性将“跟随”max-height转换并增长,直到它获得内容的大小。

演示

DEMO 1 – 这个解决方案的工作示例

DEMO 2 – 只是示范演示1中发生了什么

观察

现在转换仅在预定义的值之间实现,我认为这是因为引擎在某些情况下不能猜测初始值或最终值。如果你有一个高度过渡,其最终值是50%,但过渡本身影响父的高度不知何故?它可能需要在每个帧的几个reflow计算导致性能问题。

Like fabb said,CSS转换的规范确定应该支持百分比值,所以它可能只是一个时间问题,直到引擎决定在哪些情况下他们将支持使用动态赋值点的转换。不过,我不知道什么可以被认为是汽车价值观的正确行为。

猜你在找的CSS相关文章