在一些帮助下,我能够使div在过渡时平稳扩展。现在,我想反转它,以便在类更改时,它不仅消失在茫茫人海中,而且像打开时一样关闭。

我以为我只能检查最小高度,这会使它反向滑动。但这似乎对我不起作用。

我在这里做错了什么?



$(function() {
  $('.pp-post-banner-overlay').on('click', function() {
    let postFullId = $(this).attr('id');
    let postNumId = postFullId.slice(23);
    $('.pp-post-container').not('.element-invisible').addClass('element-invisible');
    jQuery('#pp-post-container-' + postNumId).removeClass('element-invisible');
  });
});

.element-invisible {
  position: absolute !important;
  max-height: 0px;
  width: 100%;
  overflow: hidden;
  clip: rect(1px 1px 1px 1px);
  /* IE6, IE7 */
  clip: rect(1px, 1px, 1px, 1px);
}

.pp-post-container {
  overflow: hidden;
  width: 100%;
  max-height: 9999px;
  min-height: 0px;
  -webkit-transition: max-height, min-height, 4s;
  -webkit-transition-timing-function: ease-in;
  transition: max-height, min-height, 4s;
  transition-timing-function: ease-in;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pp-post-{post_id}" class="pp-post">
  <div id="pp-post-item-{post_id}" class="pp-post-item">
    <div id="pp-post-banner-overlay-{post_id}" class="pp-post-banner-overlay"></div>
  </div>
</div>
<div id="pp-post-container-{post_id}" class="pp-post-container element-invisible"></div>

最佳答案

这取决于您要如何实现这一目标。
由于您的代码不起作用,并且您没有提供有效的jsfiddle,我可以尝试为您提供一些替代方法:

由于您提到了类“ pp-post-banner-overlay”,因此将其用作选择器:

点击时:

$('.pp-post-banner-overlay').click(function() {
 $(this).fadeOut("slow", function() {
    $(this).removeClass("desiredClasstoRemove");
  });
});


鼠标离开时

 $('.pp-post-banner-overlay').mouseleave( function() {
     $(this).fadeOut("slow", function() {
        $(this).removeClass("desiredClasstoRemove");
      });
    });


使用CSS:
可以仅使用css添加transions。适用于所需的选择器,例如:

.pp-post-banner-overlay{
     transition: opacity 500 ease-in-out;
}


这是未经测试的。但是,猜测它应该起作用。

安德烈

07-28 12:12