Плавное скольжение вверх и вниз по контенту при нажатии на вкладку

0

Jsfiddle - аккордеон

HTML

          <div class="accordion">
            <div id="step-1">
             <a href="#step-1" class="tab">Step 1 - Information</a>
              <div class="content">
                <div style="background: yellow;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc iaculis, arcu aliquam tempor ultrices, est arcu vehicula eros, in iaculis mauris mauris ac orci. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus tempus velit libero, vel dapibus dui vulputate sollicitudin. Etiam cursus mauris magna, et condimentum mauris rutrum at. Nam lectus eros, accumsan nec ligula at, euismod fringilla lectus. Fusce ac egestas neque, nec accumsan arcu. Nam consequat sem et interdum rutrum. Nam adipiscing massa et congue dignissim. Morbi cursus libero urna, in mollis ligula dignissim ac. Suspendisse et lacinia nibh, at convallis nunc. Vestibulum ipsum nulla, tincidunt id tempus id, sollicitudin quis nunc. Suspendisse potenti.

                </div>
              </div>
            </div>
            <div id="step-2">
              <a href="#step-2">Step 2 - Select</a>
              <div class="content">
                <div style="background: green;">
               Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc iaculis, arcu aliquam tempor ultrices, est arcu vehicula eros, in iaculis mauris mauris ac orci. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus tempus velit libero, vel dapibus dui vulputate sollicitudin. Etiam cursus mauris magna, et condimentum mauris rutrum at. Nam lectus eros, accumsan nec ligula at, euismod fringilla lectus. Fusce ac egestas neque, nec accumsan arcu. Nam consequat sem et interdum rutrum. Nam adipiscing massa et congue dignissim. Morbi cursus libero urna, in mollis ligula dignissim ac. Suspendisse et lacinia nibh, at convallis nunc. Vestibulum ipsum nulla, tincidunt id tempus id, sollicitudin quis nunc. Suspendisse potenti.

                  </div>
                </div>
                </div>
          </div>
        </div>

CSS

    .accordion .tab {
  border-top: 1px solid #5b5b5b;
  display: block;
  height: 50px;
  text-decoration: none;
  color: #888;
}

.accordion .tab:hover,
.accordion div:target .tab {
  color: #000;
  border-top: 1px solid #7c7c7c;
}

.accordion div .content {
  display: none;
}

.accordion div:target .content {
  display: block;
}

.accordion > div {
  height: 50px;
  overflow: hidden;
}

.accordion > div:target {
  height: 300px;
}

JS

 $('.accordion .tab').on('click', function(event) {
        var parent_tab = $(this).parent();
        if (parent_tab.hasClass('active'))
            $(".accordion .tab div.content:visible").slideToggle("normal");
        else {
            $(".accordion .tab div.content:visible").slideToggle("normal");
            $(this).parent().find(".content").slideToggle("normal");
        }
    });

Проблема в том, что с css3 он не ведет себя так же, как на веб-сайте fortheloveoflaundry.com

Так что попробовал jquery для достижения плавного скольжения аккордеона. Когда вы нажимаете вкладки один или два раза, панель не скользит вверх или вниз плавно. Думайте, что JQuery работает неправильно.

Помогите оценить

Теги:

1 ответ

2
Лучший ответ

Вы уже использовали slideToggle для анимации, поэтому вам не нужен переход CSS, а также код CSS, изменяющий height в правиле :target. Так много CSS-кода в вашей демонстрации можно удалить (я просто прокомментировал их). Вот обновленный скрипт:

//hide the content intially
$('.accordion div .content').slideToggle(0);   
$('.accordion .tab').on('click', function(event) {
    var parent_tab = $(this).parent();
    if (parent_tab.hasClass('active')) return;                    
    $('.active div.content').slideToggle();
    $(this).next("div.content").slideToggle();              
    $('.accordion .active').removeClass('active');
    parent_tab.addClass('active');       
});

Demo.

UPDATE: если вы хотите сбрасывать функцию, например, в виджете аккордеона в пользовательском интерфейсе jQuery, вы можете попробовать эту демонстрацию.

  • 1
    Благодарю. но когда я нажимаю на одну вкладку, то содержимое открывается. все работало нормально, но когда я снова щелкаю ту же вкладку, содержимое не закрывается?
  • 0
    @ Джо, пожалуйста, проверьте демо, которое я обновил.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню