【问题标题】:Viewport height is not setting correctly in bxslider jquery pluginbxslider jquery 插件中的视口高度设置不正确
【发布时间】:2016-11-13 12:39:47
【问题描述】:

我正在开发 bx 滑块 jquery 插件。有时视口高度设置不正确。这将在第一次加载滑块时发生。如果我在正确设置视口后单击下一个或上一个按钮。我还检查了 bxSlider.js,它也会返回错误的值。这表明只有一个孩子(图像),但我使用 5 张图片。我将宽度设置为 250 像素,但它返回 953 像素。我使用了以下插件。

https://cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.5/jquery.bxslider.min.css http://bxslider.com/js/jquery.min.js https://cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.5/jquery.bxslider.jshttps://cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.5/vendor/jquery.fitvids.js https://cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.5/vendor/jquery.easing.1.3.js

【问题讨论】:

  • 你应该考虑建立一个 [jsfiddle.net](jsfiddle) 或者使用内联代码编辑器
  • 我确实喜欢一个小部件
  • 如果你点击保存,你可以在这里分享它,这样你就可以为每个人提供一个工作演示,并且更有可能有人可以帮助你;-)

标签: jquery bxslider


【解决方案1】:

如果您尝试更改 bxslider,您会在以下行中看到高度

在这一行中设置高度内联,因此您首先尝试设置滑块图像高度。 或者您可以尝试使用 javascript 进行更改

【讨论】:

    【解决方案2】:

    如果您的页面加载方式发生变化,例如添加一个额外的插件,bxSlider 将无法完成计算,并且在重新绘制之前不会完成计算。通常通过使 bxSlider 移动 next 或 prev 来完成。我通过强制 bxSlider 在加载时重新计算来修复此行为。这里有两个建议,第一个是被动的和最小的,第二个是激进的和过度的。我建议单独尝试第一个,如果它不起作用,请同时使用它们。

    修复 #1。 将以下规则集添加到样式表的底部或 <style> 块的最后一行:

    .bx-viewport.bx-viewport { min-height: 90vh !important; }
    

    类选择器上的这种加倍可能看起来很奇怪,但它会增加选择器的选择性,!important 是可选的,双选择器也是如此。这是修复 #1 的基本要素:

    .bx-viewport { min-height: 90vh; }
    

    修复 #2。 将此 JS 放在结束 </body> 标记之前:

    document.documentElement.addEventListener('DOMContentLoaded', function(event)  {
        var $tgt = $('.bx-viewport')[0];
        var tgt = document.querySelector('.bx-viewport');
        tgt.style.height = ""
        tgt.removeAttribute('height');
        tgt.style.removeProperty('height');
        $tgt.css('height', '');
        $tgt.removeAttr('height');
    
    }, false);
    

    大部分时间使用 Fix #1 就足够了。 Fix #2 太过分了,但它总是有效。

    【讨论】:

    • 但是如何根据我要显示的滑块数量来设置高度?
    • bxSlider 已经为您计算好了。您可以使用一个选项来确定 bxSlider 如何处理高度。默认情况下,bxSlider 将找到最高的内容并将所有幻灯片设置在该高度。如果您设置选项:adaptiveHeight: true,bxSlider 将调整到每张幻灯片的高度。顺便说一句,90vh 可以是您喜欢的任何高度,我使用 90vh 因为我的滑块占据了视口的大部分。由于您没有提供任何代码,因此我无法为您提供具体数字。我对自己的回答很有信心,因为我遇到了您现在遇到的确切问题。
    • 在 bxslider 中,我将无限循环设置为真正的无限循环:真。我添加了 5 个图像和 2 个视频。但它需要很多克隆,所以滑动不能正常工作。它需要 2 个视频克隆和 2 个图像克隆。所以不能正常工作。你有解决这个问题的方法吗?
    • 不幸的是,这就是 bxSlider 处理无限循环的方式。我从不使用无限循环,因为克隆变得太重,浏览器无法处理。您可以将其设置为默认值,然后设置条件:if(bx.getCurrentSlide ===4) {...
    • 如果您有任何问题,请发布新问题,我会为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多