2016-04-29 1 views
0

В основном здесь я пытаюсь сделать div медленно скользить вниз, щелкнув ссылку. По умолчанию значение div (см. Ниже) скрыто, если для свойства отображения нет значения. После щелчка div становится видимым (display-> block) и медленно сдвигается вниз. Со следующим кодом js, div просто появляется, без скольжения. Вы можете считать это тривиальным, но ваш отзыв будет очень полезен для меня. Спасибо.Создание div медленно сползает вниз, не работая с jquery

<div class="js-app-container" id="subscription_popup" style="padding-top: 70px; display: none;"> 
// contents inside the divs 
</div> 

<li class="menu-16246 last"> 
    <a href="#" class="subscribe-link open_popup" onclick="displaySubscription();">Subscribe</a> 
</li> 


<script> 
    function displaySubscription() { 
     // $('.js-app-container').css('display', 'block').fadeIn("slow", function() {}); 
     var node = document.getElementById('subscription_popup'); 
     if (node.style.display == 'block') { 
      // node.style.display = 'none'; 
      $('.js-app-container').css('display', 'none').fadeOut("slow", function() {}); 
     } else 
     // node.style.display = 'block' 
      $('.js-app-container').css('display', 'block').slideDown("slow", function() {}); 

    } 
</script> 
+0

Не могли бы вы настроить скрипку или plunkr? –

+2

Может быть, вы можете создать анимацию от непрозрачности: от 0 до непрозрачности: 1, а сползание поможет. –

+0

Anay, дисплей: блок/нет не работает с анимацией. – Aslam

ответ

1

Перед анимацией вам не нужно устанавливать css display. Если вы не ищете разные анимации для hide и show, вы можете использовать slideToggle или fadeToggle.

function displaySubscription() { 
 
    var node = $('#subscription_popup'); 
 
    if (node.is(':visible')) 
 
    $('.js-app-container').fadeOut("slow", function() {}); 
 
    else 
 
    $('.js-app-container').slideDown("slow", function() {}); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="js-app-container" id="subscription_popup" style="padding-top: 70px; display: none;"> 
 
    // contents inside the divs 
 
</div> 
 

 
<li class="menu-16246 last"> 
 
    <a href="#" class="subscribe-link open_popup" onclick="displaySubscription();">Subscribe</a> 
 
</li>

1

Вы устанавливаете свойство отображения CSS до анимации есть шанс бежать. Попробуйте это:

<script type="text/javascript"> 

    function displaySubscription() { 
     // $('.js-app-container').css('display', 'block').fadeIn("slow", function() {}); 
     var node = $('#subscription_popup'); 
     if (node.is(':visible')) { 
      // node.style.display = 'none'; 
      $('.js-app-container').fadeOut("slow", function() {}); 
     } else 
     // node.style.display = 'block' 
      $('.js-app-container').slideDown("slow", function() {}); 

    } 

</script> 
0

Просто удалить все css('display','block') и css('display','none') из всех функций, вам не нужно их

Смежные вопросы