jquery - removeClass 上的 CSS 过渡

标签 jquery css css-transitions

我正在尝试使用 css 过渡对 div 制作幻灯片效果,但显然过渡只在关闭时有效。

HTML:

<div class="slider closed" id="more-details"> Some content </div>

CSS:

.slider {
  overflow-y: hidden;
  transition-property: all;
  transition-duration: .8s;
  transition-timing-function: cubic-bezier(0, 1, 0.2, 1);
}

.slider.closed {
  max-height: 0;
}

.slider.opened {
  max-height: 10000px;
}

JS:

    $('.read-more').on('click', function(e){
        e.preventDefault();

        $(this).toggle();

        $('#more-details').removeClass('closed').addClass('opened');

        $('#read-less').show();

   });

   $('.read-less').on('click', function(e){
        e.preventDefault();

        $('#more-details').addClass('closed').removeClass('opened');

        $('#read-more').toggle();
   });

如前所述:div 打开和关闭,但转换仅在关闭时执行...有什么建议吗?

最佳答案

我认为您在最大高度上使用过渡是因为您不知道内容的最终高度,对吧?

无论如何,您根本无法从 max-height:0 到 max-height 等于一个巨大的值的动画。相反,返回是可能的,因为高度是已知的。

通常,对于这种类型的动画,我会使用类似这样的东西。

  • 我用 height: 0;overflow: hidden;
  • 将内容包装在一个 div 中
  • 点击时,我使用 jQuery 通过 $('selector').height();
  • 计算内容 div 的准确高度
  • 使用 jQuery 为我的内容的父级设置此值 $('wrapper').height(value);

CSS 过渡样式将实现动画效果。

关于jquery - removeClass 上的 CSS 过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37076676/

相关文章:

html - 如何使用 Bootstrap 行和列增加文本区域的高度

javascript - 使用 Javascript 动画库 VS 创建要在标题中注入(inject)的动态 &lt;style&gt; 标签

jquery - 使用 Backbone.js 的数据表/网格小部件

javascript - GAS按钮或输入[提交]保持刷新页面?为什么?

jquery - 如何将背景图像 div 居中?

html - 为什么我的 CSS 边框会到达页面末尾?

html - 是否有可能在网页中使用 CSS 将 "slide"的一个部分放在另一个之上

LESS 过渡混合

javascript - 注入(inject) jQuery、jQuery UI 和插件,无版本冲突

jquery - 了解数据表中的 fnServerData