Отключить отказ от первого и последнего элемента в Owl Carousel

Я использую слайдер Owl Carousel.

Когда вы дойдете до последнего или первого элемента ползунка, вы все еще можете перетаскивать ползунок, хотя элементов больше нет. Вместо этого возникает эффект отскока, например, когда вы открываете родное мобильное приложение, чтобы обновить содержимое.

Демонстрация: (ссылка удалена, так как официальных документов больше нет) Перетащите ползунок вправо, и он вернется обратно.

Есть ли возможность отключить этот эффект отскока?


person Simon Knittel    schedule 24.06.2015    source источник
comment
Можете дать коды?   -  person Alberto I.N.J.    schedule 24.06.2015
comment
Что вы имеете в виду под кодами? Это простая карусель с некоторыми элементами. Ничего особенного. Это поведение по умолчанию   -  person Simon Knittel    schedule 24.06.2015
comment
В порядке. Я разместил свой ответ ниже. Надеюсь, поможет.   -  person Alberto I.N.J.    schedule 24.06.2015


Ответы (1)


Да, вы можете отключить эффект отскока. Я изо всех сил пытался найти это, но я сделал это.

Просто удалите или закомментируйте эти строки кода в owl.carousel.js:

base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe());
if (base.browser.support3d === true) {
    base.transition3d(base.newPosX);
} else {
    base.css2move(base.newPosX);
}


Например

owl.carousel.js

function dragMove(event) {
    var ev = event.originalEvent || event || window.event,
    minSwipe,
    maxSwipe;

    base.newPosX = getTouches(ev).x - locals.offsetX;
    base.newPosY = getTouches(ev).y - locals.offsetY;
    base.newRelativeX = base.newPosX - locals.relativePos;

    if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) {
        locals.dragging = true;
        base.options.startDragging.apply(base, [base.$elem]);
    }

    if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) {
        if (ev.preventDefault !== undefined) {
            ev.preventDefault();
        } else {
            ev.returnValue = false;
        }
        locals.sliding = true;
    }

    if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) {
        $(document).off("touchmove.owl");
    }

    minSwipe = function () {
        return base.newRelativeX / 5;
    };

    maxSwipe = function () {
        return base.maximumPixels + base.newRelativeX / 5;
    };

    // base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe());
    // if (base.browser.support3d === true) {
    //     base.transition3d(base.newPosX);
    // } else {
    //     base.css2move(base.newPosX);
    // }
}


Надеюсь, это поможет.

person Alberto I.N.J.    schedule 24.06.2015