javascript - 如何在浏览器调整大小时重新加载 Javascript? BX slider 轮播

标签 javascript jquery bxslider

我正在使用 BXslider 轮播,并希望根据屏幕宽度在轮播中显示特定数量的静态幻灯片。

我尝试使用 jQuery resize(),但它无法正常工作。您可以在此处查看工作演示:pepnest.com/hbs

在这里,当您调整浏览器大小时,它会降低幻灯片的高度。

这是我在 JS 文件中的代码:

$(document).ready(function(){

    var width = $(window).width();

    if (width < 368) {
        $('.bxslider').bxSlider({
          minSlides: 1,
          maxSlides: 1,
          slideWidth: 200,
          slideMargin: 20,
          captions: true
        });
    } else if (width < 700) {
        $('.bxslider').bxSlider({
          minSlides: 1,
          maxSlides: 1,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    } else if (width < 980) {
        $('.bxslider').bxSlider({
          minSlides: 2,
          maxSlides: 2,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    } else if (width < 1200) {
        $('.bxslider').bxSlider({
          minSlides: 3,
          maxSlides: 3,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    } else {
        $('.bxslider').bxSlider({
          minSlides: 4,
          maxSlides: 4,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    }
 $(window).resize(function(){
    var width = $(window).width();

    if (width < 368) {
        $('.bxslider').bxSlider({
          minSlides: 1,
          maxSlides: 1,
          slideWidth: 200,
          slideMargin: 20,
          captions: true
        });
    } else if (width < 700) {
        $('.bxslider').bxSlider({
          minSlides: 1,
          maxSlides: 1,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    } else if (width < 980) {
        $('.bxslider').bxSlider({
          minSlides: 2,
          maxSlides: 2,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    } else if (width < 1200) {
        $('.bxslider').bxSlider({
          minSlides: 3,
          maxSlides: 3,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    } else {
        $('.bxslider').bxSlider({
          minSlides: 4,
          maxSlides: 4,
          slideWidth: 280,
          slideMargin: 20,
          captions: true
        });
    }
 });

});

任何人都可以帮我解决我出错的地方吗?

最佳答案

很遗憾,这不是办法。想象一下,您的浏览器在您调整大小的移动的每个像素处初始化一个新的 slider 。

您必须先销毁 bxSlider,然后才能初始化新的 bxSlider!

slider.destroySlider();

http://bxslider.com/options

除此之外,您实际上不必在每次调整大小操作时都触发该事件。请首先检查是否需要“重绘”(例如,不需要将大小从 1020 像素调整到 1080 像素)

例如使用 jQuery:

http://jsfiddle.net/r91ec9n6/3/

var resolutionLimits = [0, 368, 700, 980, 1200];
var currentResolutionLimit = null;

var resizeHandler = function()
{
    var foundResolution = 0;
    var windowSize = $(window.document).width();
    for(var i = 0; i < resolutionLimits.length; i++)
        foundResolution = windowSize > resolutionLimits[i] ? i : foundResolution;

    if(foundResolution !== currentResolutionLimit){
        currentResolutionLimit = foundResolution
        var currentResolution = resolutionLimits[currentResolutionLimit];

        // This is only called when the resolution is changed beyond a limit AND at document load
        $(window.document.body).empty().append('Resolution changed, currently > ' + currentResolution);

    }

}

$(window).resize(resizeHandler).resize();

关于javascript - 如何在浏览器调整大小时重新加载 Javascript? BX slider 轮播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25730677/

相关文章:

javascript - Bxslider 在 Firefox 和 IE11 中不工作

javascript - angular 4.根据if删除构造函数中的组件

javascript - 为什么我得到 undefined 不是函数,ReactJs

javascript - 如何添加事件选择器

jquery - 为什么我的 bx-slider 不显示 chrome 中的图像?

javascript - 设置 Bxslider 以加载不同的图像?

javascript - 理解(误解?)JavaScript 中基于原型(prototype)的类

javascript - 如何在本地测试 firebase onCall()?

javascript - 全日历上一个/下一个点击

javascript - jquery ui droppable 在父子问题上