BxSlider отображает последний слайд как первый слайд
Я создал 4 слайдера. Первоначально все 4 скрыты (display: none), поэтому я использовал этот код для отображения соответствующего слайдера при щелчке соответствующей категории.
Конфигурация слайдера.
touchEnabled: true,
hideControlOnEnd: true,
preloadImages: 'all',
infiniteLoop: false,
mode: 'horizontal',
startSlide: 0,
slideWidth: 300,
minSlides: 2,
maxSlides: 3,
slideMargin: 10,
pager: false,
slideSelector: ".isotope-item",
nextSelector: "#forefoo2_next",
prevSelector: "#forefoo2_prev",
nextText: '',
prevText: '',
onSliderLoad: function(){
jQuery(".sliloading").hide();
},
jQuery(window).ready(function(){
var slider4 = jQuery('.cat_fore').bxSlider();
var slider2 = jQuery('#cat_two').bxSlider();
var slider3 = jQuery('.cat_three').bxSlider();
var slider1 = jQuery('.cat_one').bxSlider();
jQuery("#sel_cat a" ).on("click", function(){
var current = jQuery(this).attr("slider");
jQuery(".sliloading").show();
jQuery(".slider").hide();
if( current == "cat_one"){
slider1.reloadSlider(s1config);
}else if(current == "cat_two"){
slider2.reloadSlider(s2config);
}else if(current == "cat_three"){
slider3.reloadSlider(s3config);
}else if(current == "cat_fore"){
slider4.reloadSlider(s4config);
}
}
});
Проблема заключается в том, что слайдер имеет менее 20 слайдов, он меняет количество слайдов, которое отображает последний слайд в качестве первого слайда.
Для слайдов 20 или более 20 он отлично работает.
Я также пробовал различные решения, перечисленные на этой ссылке, но ничего не работало для меня.
Я попытался воспроизвести тот же пример на fiddle, который работает нормально, но на в прямом эфире он все еще дает та же проблема
Я думаю, что проблема находится на высоте или какой-то другой элемент css, который заставляет его начинать с последнего слайда, потому что в скрипте порт представления мал, поэтому он отображает слайдер с первым слайдом, а также когда мы пытаемся уменьшить размер представления порт браузера он также отобразил слайдер в правильном направлении.
Ответы
Ответ 1
У меня была эта проблема слишком недавно. Решение состоит в том, что вы должны поместить экземпляр BxSlider в событие $(window).load() не в $(window).ready() здесь образец.
$(window).load(function(){
$('.bxslider').bxSlider({
pagerCustom: '#bx-pager',
randomStart: false,
controls: true,
auto: true
});
});
Важно отметить, что проблема начинает сохраняться, если у вас есть как минимум 7 слайдов.
Ответ 2
Быстрое решение:
.bx-clone{
display: none !important;
}
Если вы не хотите потерять анимацию бесконечногоLoop:
onSliderLoad: function() {
$("YOUR_SLIDER_SELECTOR").css(
"-webkit-transform",
"translate3d(-" + YOUR_SLIDER_WIDTH + "px, 0, 0)"
);
}
Ответ 3
Это хром-единственная ошибка для меня, где "клон-слайд", предназначенный для создания бесшовной прокрутки с последнего слайда назад до первого, покажет сначала толкание фактического первого слайда в сторону. Скрытие слайда клонов является быстрым решением, но нарушает бесконечный эффект прокрутки.
Это решение было исправлено для меня строго с помощью CSS, без gnarly 3D-преобразования CSS, JQuery или чего-то еще... теперь играет в порядке с загрузкой:
/* BUG FIX FOR CLONE SLIDE FIRST */
.bx-wrapper img {
max-width: 100%;
display: inline-block;
}
.bx-viewport li {
min-height: 1px;
min-width: 1px;
}
Я думаю, если вы используете jquery, чтобы показать клон, используя onSlideBefore, когда вы зашли слишком далеко, возможно, исправление CSS зависит от вашей конкретной ситуации. Иногда это связано с проблемой размера изображения и/или стиля отображения с помощью BOOTSTRAP, поэтому, если вы используете BS, там есть исправление CSS. В общем случае, если все слайды имеют одинаковый размер, попробуйте установить высоту и ширину, максимальную высоту и ширину, а также минимальную высоту и ширину изображений, и это может исправить.
Это необязательно, но если это не сработает, в параметрах init bxSlider используйте useCSS: false, ex:
$(window).load(function(){
$('.bxslider').bxSlider({
pagerCustom: '#bx-pager',
randomStart: false,
controls: true,
auto: true
useCSS:false
});
});
Ответ 4
Вам просто нужно остановить цикл:
infiniteLoop:false
... и больше нет .bx-clone
http://bxslider.com/options
Ответ 5
Как упоминалось OG Sean, это ошибка Chrome.
У меня была одна и та же проблема, и единственное, что нужно, когда я пытался, - это код css:
.bx-viewport li { min-height: 1px; min-width: 1px; }
Ответ 6
Хорошо, я не знаю, почему, но когда я удаляю эту строку "minSlides: 2", она начинает работать правильно.
Ответ 7
<li>
<img src="_images/xxx.jpg" alt="xxx" width="X" height="X"/>
</li>
Настройка яркого ярлыка высоты и ширины на изображениях в слайдере исправила эту проблему для меня с ползунками, содержащими 2-5 изображений.
Ответ 8
Работа с bxslider была самой большой ошибкой в моей жизни.