将动画从display:none滑动到display:block



是否有一种方法来动画显示:none显示:块使用CSS,使隐藏的div滑动而不是突然出现,或者我应该去这个不同的方式?

$(document).ready(function() {
    $('#box').click(function() {
        $(this).find(".hidden").toggleClass('open');
    });
});
#box {
    height:auto;
    background:#000;
    color:#fff;
    cursor:pointer;
}
.hidden {
    height:200px;
    display:none;
}
    .hidden.open {
        display:block;
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="box">
    Initial Content
    <div class="hidden">
        This is hidden content
    </div>
</div>

和JSFiddle

是的,有一个方法:http://jsfiddle.net/6C42Q/12/

通过使用CSS3过渡,并操纵高度,而不是显示属性:

.hidden {
    height: 0px;
    -webkit-transition: height 0.5s linear;
       -moz-transition: height 0.5s linear;
        -ms-transition: height 0.5s linear;
         -o-transition: height 0.5s linear;
            transition: height 0.5s linear;
}
.hidden.open {
     height: 200px;
     -webkit-transition: height 0.5s linear;
        -moz-transition: height 0.5s linear;
         -ms-transition: height 0.5s linear;
          -o-transition: height 0.5s linear;
             transition: height 0.5s linear;
}

更多在这里:滑动div点击纯CSS?

既然您已经在使用jQuery,那么最简单的事情就是使用slideDown()。http://api.jquery.com/slidedown/

还有slideToggle()

那么你就不需要手动做所有浏览器特定的转换css。

我喜欢CSS过渡的想法,但它仍然非常跳跃。有时max-height必须设置为一个非常高的数字,因为动态内容会使过渡毫无用处,因为它非常跳跃。所以,我回到了jQuery,但它有自己的缺点。内联元素是跳跃的

我发现这个对我有用:

$(this).find('.p').stop().css('display','block').hide().slideDown();

停止符停止之前的所有转换。css确保它被视为块元素,即使它不是。hide会隐藏该元素,但jquery会将其记住为块元素。最后,slideDown通过滑动来显示元素

$("#yourdiv").animate({height: 'toggle'});

Toggle会打开/关闭你的div,动画会让它从下面出现。在这种情况下,您不需要特定的CSS来"隐藏"它。

我们可以用visibility: hidden to visibility: visible来代替display: none to display: block的属性。

请看下面的例子:

function toggleSlide () {
  const div = document.querySelector('div')
  
  if (div.classList.contains('open')) {
    div.classList.remove('open')
  } else {
    div.classList.add('open')
  }
}
div {
  visibility: hidden;
  transition: visibility .5s, max-height .5s;
  max-height: 0;
  overflow: hidden;
  
  /* additional style */
  background: grey;
  color: white;
  padding: 0px 12px;
  margin-bottom: 8px;
}
div.open {
  visibility: visible;
  /* Set max-height to something bigger than the box could ever be */
  max-height: 100px;
}
<div>
  <p>First paragraph</p>
  <p>Second paragraph</p>
</div>

<button
  onclick="toggleSlide()"
>
  toggle slide
</button>

我在我的React站点中为导航头做了这个解决方案。

这是一个常规的可见css类

.article-header {
  position: fixed;
  top: 0;
  transition: top 0.2s ease-in-out;
}

这是附加到div上的类(在我的例子中是滚动时)

.hidden {
  top: -50px !important;
  transition: top 0.5s ease-in-out;
 }

也可以使用

$('#youDiv').slideDown('fast');

或者你可以告诉活动的div向上然后被调用的div向下

$('.yourclick').click(function(e) {
       var gett = $(this).(ID);
       $('.youractiveDiv').slideUp('fast', function(){
        $('.'+gett).slideDown(300);
       });
});

差不多。

相关内容

  • 没有找到相关文章

最新更新