【问题标题】:Animating divs in a set在集合中设置 div 动画
【发布时间】:2014-11-18 03:46:39
【问题描述】:

我目前有一个对象(项目)列表,最初作为 div 呈现给用户,具有 100px x 200px 高度/宽度、绝对位置和向左浮动。该列表包含在一个角度 ng-repeat 方法中(不确定这会对整个问题产生影响,但我想我会添加它以防万一)。在特定的项目列表页面上可能有 100 个这样的 div。目前,我有页面设置,因此如果您单击其中一个项目,它的详细信息会出现在模式对话框中。根据我的项目的要求,此功能很好,但我想通过添加执行以下操作的动画来添加一些“umph”:

1) 如果单击其中一个项目,框会向上展开以填充包含所有项目的父容器

2) 随着 div 增长到填充空间或当它完全变大时,我想公开项目本身的细节。本质上,当项目被取消选择时,它只是一个标题/描述显示。当它被选中时,项目 div 会全屏显示,显示它的所有详细信息,并在 div 的全屏版本中显示它的可编辑字段。

3) 当用户关闭全屏 div 时,我希望它回到原来位置的原始状态。

我只为这个项目使用最新版本的 Chrome,所以它不需要是跨浏览器解决方案。我更愿意让动画尽可能接近纯 css,并且更愿意将 jquery 排除在外。

我目前没有 css3 动画方面的经验,但有一本关于它的书,我希望最终能教给我这方面的知识。但是,我想我会同时问一下,以防有人能尽快帮助我,这样我就可以把这个功能放进去,同时仍然满足我的功能截止日期。

提前致谢!

【问题讨论】:

    标签: javascript html angularjs css angularjs-ng-repeat


    【解决方案1】:

    创建第二个 CSS 类,当它被选中时可以添加到您的 div 元素中,当它未被选中时可以将其删除。类似的东西

    div {
        top: 100px;
        bottom: 200px;
        left: 100px;
        right: 300px;
        transition: all 1s; /* animate changes */
    }
    
    .active {
        top: 0px;
        bottom:0px;
        left: 0px;
        right: 0px;
    }
    
    .content {
        display: none; /* hide the content unless active */
    }
    
    .active .content {
        display: block; /* show the content when .active class is added */
    }
    

    确保父容器填满整个窗口并且其本身设置为positiion: absoluteposition: relative。随着你的进展,会有更多的细节需要解决,但这应该会给你一个开始的框架。然后,您可以根据需要使用 JavaScript add or remove the .active class

    【讨论】:

    • 感谢您的指导!我试图做你所说的:jsfiddle.net/n7pmz3ng
    • 抱歉,不知道如何编辑之前的评论,但是:感谢您的指导!我试图做你所说的:jsfiddle.net/n7pmz3ng 但是当我单击文档时,内容区域按预期显示,但没有发生转换。当您单击“活动”类元素回到原始“文档”类时,会发生转换。我错过了一项任务吗?
    • 我讨厌用 cmets 轰炸这个,但我不知道如何删除以前的 cmets。无论如何,我让它动画正确(当它回到原来的位置时有点不稳定,我认为解决方案可能是错开动画,以便 z-index 最后发生),但是“documentArea”不会随着其中的文档数量,因此添加足够多的文档后,活动文档不会覆盖所有文档。关于如何使 documentArea 随其中的文档数量增长的任何想法?
    • 感谢您的帮助@apostl3pol!我想我想通了。对于那些引用这个问题的人,这就是我想出的:jsfiddle.net/jakehova/kfq63qto 我添加了粘性栏,因为我需要有过滤器来过滤掉始终可用的文档元数据。我现在唯一想做的就是错开动画,以便在返回常规网格时,z-index 不会更改,直到框的大小变为网格文档大小。这应该有助于缓解所有网格项目四处移动的问题。
    • @JakeHova 看起来不错!您还可以查看 jQuery 的 position 函数。如果您使用它来获取每个元素的 x 和 y 坐标,则可以将它们全部保留在 position: absolute 并仅使用 toprightbottomleft CSS 属性进行动画处理。然后它们在调整大小时不会滑动,并且可以让它们从它们碰巧所在的位置而不是左上角扩展。此外,当重复引用同一个 DOM 节点时,首先将其分配给变量会更快,即$documentDiv = $(documentDiv);。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    相关资源
    最近更新 更多