2015-05-04 4 views
2

У меня есть два карусельных слайдера на странице, я использую slick, чтобы сделать событие салфетки, и я хочу, чтобы при прокрутке одной карусели другая карусель тоже пробиралась. Я достиг этого, но есть детали, которые было бы здорово реализовать. Первый взгляд на этой скрипке:Синхронизированные карусели при перетаскивании

http://jsfiddle.net/eqreem8m/1/

$(document).ready(function(){ 
    $('.slider').slick({ 
    }); 

    // On swipe event 
    $('.slider').on('swipe', function(event, slick, direction){ 
    var current = $(this).attr('data-slider'); 
    if (direction=='left') { 
     $('.slider:not([data-slider=' + current + '])').slick('slickNext'); 
    } 
    else if (direction == 'right') { 
     $('.slider:not([data-slider=' + current + '])').slick('slickPrev'); 
    } 

    });  
}); 

Я хочу, чтобы, когда вы тянете слайд в карусели, другие карусельный сделать то же увлекая и быть 100% синхронизировано.

Я просмотрел документацию, но я ничего не нашел для этого, поэтому, если вы знаете какое-либо решение (даже с другой библиотекой), я бы хотел его прочитать.

+1

должно быть где-то в вашем файле js (slick) фрагмент кода, который выполняет эту работу (вы должны искать код, который делает ваш «ползунок» перемещающимся слева направо или справа налево при перетаскивании). Просто отредактируйте его и примените функцию к обоим элементам одновременно, а не только к одному ... посмотрите в коде slick.js, то, что похоже на LINE 2130, должно помочь вам ... – Julo0sS

+1

Если вы хотите «мастурбировать», просто посмотрите на это, что должно помочь вам найти способ обработать событие «перетаскивания»;): http://stackoverflow.com/questions/4127118/can-you-detect-dragging-in-jquery – Julo0sS

+0

Спасибо за идеи , я, наконец, достиг этого, применяя функцию к обеим ползункам, как вы предположили :) Я положу код, объясняющий это позже. – Sogeking

ответ

2

Наконец-то я достиг этого, меняя библиотеку slick.js, применяя функцию, которая оживляет перетаскивание на оба ползунка, а не только слайдер с фокусом, как @ julo0ss, предложенный в его комментарии.

Вот скрипка: http://jsfiddle.net/eqreem8m/21/

А теперь я объясню, что я, в принципе есть несколько строк, где библиотека первоначально применяет преобразование и переходные свойства текущего слайдера, хранившиеся в _. $ slideTrack.

Чтобы получить синхронизированные слайдеры, я изменил _. $ SlideTrack.css ({...}) на $ ('. Slick-track'). Css ({...}). Методы и линии, где я сделал это:

Примечание: .slick дорожка является элементом, который вводит Slick оберточной слайды

Slick.prototype.animateSlide

Эта функция выполняет окончательный переход когда вы бросаете слайд.

Line 325

Оригинал:

_.$slideTrack.css(animProps); 

Синхронизация:

$('.slick-track').css(animProps); 

Slick.prototype.applyTransition

Эта функция применяется свойства CSS переходов к ползунков

Line 360 ​​

Оригинал:

_.$slideTrack.css(transition); 

Синхронизация:

$('.slick-track').css(transition); 

Slick.prototype.disableTransition

Эта функция удаляет свойства CSS перехода от ползунков

Line 828

Оригинал:

_.$slideTrack.css(transition); 

Синхронизация:

$('.slick-track').css(transition); 

Slick.prototype.setCSS

Эта функция применяется CSS преобразования свойств ползунков, это называется в то время как вы тянете слайд

Line 1541

Оригинал:

_.$slideTrack.css(positionProps); 

Синхронизация:

$('.slick-track').css(positionProps); 

Я уверен, что есть лучшие способы сделать это, и изменение кода библиотеки не является хорошей практикой. Поэтому не стесняйтесь его улучшить :)

+1

Good Job man :) может быть, вам стоит опубликовать свой код на странице slick.js, чтобы поделиться своей идеей с ними;) – Julo0sS