Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.03.2018, 06:35
Аспирант
Отправить личное сообщение для VasyOK Посмотреть профиль Найти все сообщения от VasyOK
 
Регистрация: 08.12.2017
Сообщений: 31

Как сделать ракрытие пунктов аккордеона по движению колесом внутри каждого пункта?
Приветствую специалистов по JS!
Хочу сделать аккордеон, в котором соседние табики раскрывались от того, что пользователь крутит колесо мыши вниз или вверх.

В jsfiddle (https://jsfiddle.net/PlayboyZP/xbmv63rr/) все выглядит хорошо, а на реальном сайте плохо: http://test.spamer35.myjino.ru/

Скрипт тут http://test.spamer35.myjino.ru/sites.../animations.js

Оно то работает, но если крутить мышкой быстро, то цепляет табик аккордеона, который еще "не приехал". Как это побороть? mousewheel поможет?
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2018, 08:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

VasyOK,
Throttle-debounce
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2018, 09:07
Аспирант
Отправить личное сообщение для VasyOK Посмотреть профиль Найти все сообщения от VasyOK
 
Регистрация: 08.12.2017
Сообщений: 31

Спасибо за наводку. Сделал так http://test.spamer35.myjino.ru/
Скрипт все еще тут: http://test.spamer35.myjino.ru/sites.../animations.js.
Вот он:
(function($){
  $(document).ready(function(){      

      $( ".region-harmonika" ).accordion({       
        header: ".block-title",
        animate: 1000,
        heightStyle: "fill"                     
      });

      $(".region-harmonika").accordion("refresh");

      $(window).resize(function() {      
        $(".region-harmonika").accordion("refresh");
      });         
      
      var scroll_place = $(".region-harmonika .block-content").toArray();    
      

      $.each( scroll_place, function( i, value ) {
        
        var funk = function(e){
          if(e.originalEvent.deltaY < 0 && $( this ).scrollTop() == 0 ) {
              
            $(".region-harmonika").accordion({ active: i-1 });            
            console.log('Moove up');
          
          } 
          
          if(e.originalEvent.deltaY >= 0 && $( this ).height() + $( this ).scrollTop() >= this.scrollHeight) 
          {                          
            
            $(".region-harmonika").accordion({ active: i+1 });            
            console.log('Moove down');
          
          }                    
           
        }

        $(value).on('wheel', $.debounce(1000, true, funk));            
        
      });        
    
  }); 
   
})(jQuery);


Как-то калично это работает. Можно это как-то "плавнее" сделать, как считаете?

Последний раз редактировалось VasyOK, 13.03.2018 в 09:11.
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2018, 09:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

VasyOK,
как то ненормально стало работать, может не использовать accordion, а сделать обычным animate?
Ответить с цитированием
  #5 (permalink)  
Старый 13.03.2018, 11:46
Аспирант
Отправить личное сообщение для VasyOK Посмотреть профиль Найти все сообщения от VasyOK
 
Регистрация: 08.12.2017
Сообщений: 31

Быть может. Дайте наводку как. Можно без подробных инструкций.

Последний раз редактировалось VasyOK, 14.03.2018 в 07:49.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно сделать при выборе пункта меню что бы появлялась кнопка? Annchousinka Элементы интерфейса 1 30.09.2013 15:38
Как сделать обход элементов внутри DIV reno4 jQuery 4 24.07.2013 13:30
Как сделать, чтобы ссылка окрывалась внутри <iframe>? lisawow Events/DOM/Window 2 30.03.2012 19:16
Как сделать как в JQ? faforty Общие вопросы Javascript 8 14.11.2011 01:35
Навигация внутри DOM. Как это сделать нормально? master_alf Events/DOM/Window 10 09.04.2010 10:18