【问题标题】:CSS transition to smooth transition of elements after another element is hidden.在隐藏另一个元素后,CSS 过渡到元素的平滑过渡。
【发布时间】:2013-07-01 14:14:45
【问题描述】:

问题:我能否使用 CSS 过渡来控制一个 div 如何移动到另一个被隐藏的 div 创建的空出空间中。

我的应用中有元素根据用户设置的时间间隔出现和消失(显示:无)。正如 display:none 所期望的那样,有时相邻的元素会移动以占据由 . 腾出的空间。

我不介意在这种情况下移动。我想控制它的移动方式。我想要的是通过 css 转换或其他方法移动,而不仅仅是混蛋到位。这可能吗?

这是一个 JS fiddle,通过按钮单击来说明场景。当#red 被隐藏时,我希望看到#blue 逐渐移动到位。谢谢。

http://jsfiddle.net/uV6W7/1/

这是 jsfiddle 中的代码:

HTML

<div id="red"></div>
<div id="blue"></div>
<p>
<button id="remove" type="button">Remove Red</button>

CSS

#red {
    display: inline-block;
    background-color: red;
    height: 200px;
    width: 200px;
}
#blue {
    display: inline-block;
    background-color: blue;
    height: 200px;
    width: 200px;
}

Javascript

$("#remove").on("click", function(event){
    if($('#remove').text()=="Remove Red") {
      $('#red').fadeOut();
      $('#remove').html("Restore Red");
    }else {
      $('#red').fadeIn();
      $('#remove').html("Remove Red");
    }
});

【问题讨论】:

标签: html css css-transitions css-animations


【解决方案1】:

您可以通过将红色滑动到 0 宽度状态来隐藏红色。这会导致右侧元素似乎滑入左侧的位置。

$('#red').animate({width:'toggle'}); 可以用来向左滑动。

您也可以将#red 包裹在另一个div 中,然后淡出#red,然后滑动容器以组合视觉效果。

【讨论】:

  • 这是一个有趣的想法,我会调查的。但是要删除的元素可能在左侧,也可能在上方,因此管理起来可能会变得复杂。很可能我希望有一个太容易的解决方案。 :)
  • 你也可以使用 jquery slideUp()/slideDown() 方法。对于垂直解决方案。可悲的是,我不知道一个适用于各个方向的神奇通用选项。
  • 我必须玩它,但这些方面的东西可能对我有用。当我说它“高于”时,它不是真的,它只是被换到下一行,所以这个主题的变化可能有助于平滑它。我会继续并将其标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
相关资源
最近更新 更多