【发布时间】:2016-11-06 01:59:40
【问题描述】:
我正在使用AngularJS,它允许我使用ng-show 和ng-hide 根据逻辑条件显示和隐藏元素。我想要完成的是在子对象显示隐藏时为容器的大小变化设置动画,这样它就不那么跳跃了。
对于那些不熟悉AngularJS、ng-show 和ng-hide 的人,基本上只是应用了display: none 和display: block 属性。因此,当容器设置为show 时,显示设置为block。
除此之外,我一直在通过谷歌搜索的几页阅读关于动画高度变化的内容,我所能找到的只是使用max-height 将其从一个高度设置为另一个高度的示例,这些是静态定义的通过 CSS 规则,例如:
#animated-div {
max-height: 100px;
transition: max-height 1s ease;
}
#animated-div.hidden {
max-height: 0px;
}
他们会移除 .hidden 类以使过渡动画化高度变化。
问题是我没有打开/关闭容器,也没有预先确定容器的高度,因为容器可以根据各种变量动态修改。最重要的是,应用程序是响应式的,因此高度会因设备而异。
这是一个示例场景:
- Container
- Div A (Height: 200px); Shown
- Div B (Height: 100px); Shown
- Div C (Height: 300px); Hidden
- Div Slider (Height: Dynamic) Hidden.
目前容器的高度(即auto)是300px(基于子级),现在用户切换Div C 活动,这将高度增加到600px div 应该动画从@987654338 展开@ 现在用户点击了clear 按钮,容器的孩子都被隐藏了,容器应该从600px -> 0px 开始动画。
然后用户开始使用滑块,其值范围为0 to 100。此高度应用于Div Slider。假设用户滑动到 57。这应该会导致来自0px -> 57px 的动画,因为没有显示任何 div。
对于我想要的深入示例感到抱歉,但这是我能想到的解释它的唯一方法。作为参考,容器中的子项使用% 值和vw/vh 值动态缩放。当某个子元素组合处于活动状态时,容器的大小在不同分辨率下永远不会相同,因此这必须能够动画高度的动态变化。
欢迎使用 Javascript 示例,但是对于这个项目,我不希望涉及任何其他库,Javascript 示例必须适用于现代移动浏览器。
【问题讨论】:
标签: javascript css angularjs css-animations