bxSlider 切断幻灯片查看移动
bxSlider cuts off slide viewing mobile
我正在使用 bxSlider
,它运行良好...我在某些功能上遇到了一个小问题...当我在移动设备上查看幻灯片时,它显示 1.5...基本上是一张完整的幻灯片然后是下一个的一部分。在代码中,我将 minSlides
设置为 1,将 maxSlides
设置为 3...我想做的是让 bxSlider
仅在以下情况下显示特定的 li
整个 li
将适合屏幕。例如,我的 div 的宽度为 300 像素,为了显示其中两个,您的屏幕尺寸必须至少为 600 像素宽...这可能吗?
我创建了一个fiddle:https://jsfiddle.net/785gcrnp/。
示例页面是:http://joshrodg.com/hallmark/ - 一直在底部的黑暗区域显示 "Latest Media"。
谢谢,
乔什
很好,看起来你取得了一些不错的进步。有一种方法可以将当前代码包装在一个函数中,并在 window 调整大小或方向更改时调用它。
这是包装在函数中的样子:
function adjustSlider(){
var sw = 200;
var sm = 20;
var ms = Math.floor($('#nocrop').width() / (sw + sm));
$('#nocrop .bxslider').bxSlider({
pager: false,
slideWidth: sw,
slideMargin: sm,
maxSlides: ms > 1 ? ms : 1,
});
}
然后,我们需要在文档首次加载时调用此函数,否则您的计算将仅在 window 调整大小时使用:
$(document).ready(function(){
adjustSlider();
});
然后,我们添加一个 window 调整大小事件。我将对 adjustSlider 函数的调用放在一个计时器中,这样如果 window 在短时间内调整了很多大小,它会有所帮助。我们也可以在这里添加 onorientationchange 事件来进行相同的调用。方向更改有自己的内置延迟,并且此事件不会像 window 调整大小那样频繁触发,所以我没有将其放入计时器中。
$(window).resize(function(){
setTimeout(function(){
adjustSlider();
}, 250);
});
window.onorientationchange = function(event){
adjustSlider();
}
定时器的 250 毫秒可能有点高,请随意调整。在 jsfiddle 上调整窗格大小时对我来说仍然感觉很重。这可能是由于 javascript 在 jsfiddle 中如何被 运行,或者它可能与此滑块处理其属性设置的方式有关。它将在您的实际站点上显示得最好,因此请在那里进行一些测试以确保速度和性能不会成为问题。让我知道事情的后续!
此外,这里有一个有效的 jsfiddle 示例,展示了将它们放在一起时的样子:http://jsfiddle.net/sm1215/0517f76w/4/
edit: 话说,哎呀还将 onorientationchange 放在调整大小事件中,这是行不通的。这是固定的,我已经更新了 fiddle.
我的一个朋友帮助我完成了这项工作!
我更新了fiddle:https://jsfiddle.net/785gcrnp/1/
var sm = 20;
var podcastSlider;
function podcastSettings() {
var minmax;
var win=$(window).width();
if(win > 960) {
minmax=3;
var sw = 300;
} else if(win > 660) {
minmax=2;
var sw = 300;
} else {
minmax=1;
var sw = 480;
}
var sliderSettings={
adaptiveHeight: true,
infiniteLoop: false,
maxSlides: minmax,
mode: 'horizontal',
nextSelector: '.next',
nextText: 'Next',
pager: false,
prevSelector: '.prev',
prevText: 'Prev',
slideMargin: sm,
slideWidth: sw
};
return sliderSettings;
}
$(window).resize(function() {
podcastSlider.reloadSlider(podcastSettings());
});
$(document).ready(function(){
podcastSlider = $('.podcast').bxSlider(podcastSettings());
});
这将使幻灯片居中,并且只显示完全可见的幻灯片数量,而不会剪切任何内容。
这也是响应式的,所以如果我调整浏览器的大小,一切都会更新。
此外,我为较小的屏幕指定了不同的宽度。
我希望这对其他人有帮助!
谢谢,
乔什
我正在使用 bxSlider
,它运行良好...我在某些功能上遇到了一个小问题...当我在移动设备上查看幻灯片时,它显示 1.5...基本上是一张完整的幻灯片然后是下一个的一部分。在代码中,我将 minSlides
设置为 1,将 maxSlides
设置为 3...我想做的是让 bxSlider
仅在以下情况下显示特定的 li
整个 li
将适合屏幕。例如,我的 div 的宽度为 300 像素,为了显示其中两个,您的屏幕尺寸必须至少为 600 像素宽...这可能吗?
我创建了一个fiddle:https://jsfiddle.net/785gcrnp/。
示例页面是:http://joshrodg.com/hallmark/ - 一直在底部的黑暗区域显示 "Latest Media"。
谢谢,
乔什
很好,看起来你取得了一些不错的进步。有一种方法可以将当前代码包装在一个函数中,并在 window 调整大小或方向更改时调用它。
这是包装在函数中的样子:
function adjustSlider(){
var sw = 200;
var sm = 20;
var ms = Math.floor($('#nocrop').width() / (sw + sm));
$('#nocrop .bxslider').bxSlider({
pager: false,
slideWidth: sw,
slideMargin: sm,
maxSlides: ms > 1 ? ms : 1,
});
}
然后,我们需要在文档首次加载时调用此函数,否则您的计算将仅在 window 调整大小时使用:
$(document).ready(function(){
adjustSlider();
});
然后,我们添加一个 window 调整大小事件。我将对 adjustSlider 函数的调用放在一个计时器中,这样如果 window 在短时间内调整了很多大小,它会有所帮助。我们也可以在这里添加 onorientationchange 事件来进行相同的调用。方向更改有自己的内置延迟,并且此事件不会像 window 调整大小那样频繁触发,所以我没有将其放入计时器中。
$(window).resize(function(){
setTimeout(function(){
adjustSlider();
}, 250);
});
window.onorientationchange = function(event){
adjustSlider();
}
定时器的 250 毫秒可能有点高,请随意调整。在 jsfiddle 上调整窗格大小时对我来说仍然感觉很重。这可能是由于 javascript 在 jsfiddle 中如何被 运行,或者它可能与此滑块处理其属性设置的方式有关。它将在您的实际站点上显示得最好,因此请在那里进行一些测试以确保速度和性能不会成为问题。让我知道事情的后续!
此外,这里有一个有效的 jsfiddle 示例,展示了将它们放在一起时的样子:http://jsfiddle.net/sm1215/0517f76w/4/
edit: 话说,哎呀还将 onorientationchange 放在调整大小事件中,这是行不通的。这是固定的,我已经更新了 fiddle.
我的一个朋友帮助我完成了这项工作!
我更新了fiddle:https://jsfiddle.net/785gcrnp/1/
var sm = 20;
var podcastSlider;
function podcastSettings() {
var minmax;
var win=$(window).width();
if(win > 960) {
minmax=3;
var sw = 300;
} else if(win > 660) {
minmax=2;
var sw = 300;
} else {
minmax=1;
var sw = 480;
}
var sliderSettings={
adaptiveHeight: true,
infiniteLoop: false,
maxSlides: minmax,
mode: 'horizontal',
nextSelector: '.next',
nextText: 'Next',
pager: false,
prevSelector: '.prev',
prevText: 'Prev',
slideMargin: sm,
slideWidth: sw
};
return sliderSettings;
}
$(window).resize(function() {
podcastSlider.reloadSlider(podcastSettings());
});
$(document).ready(function(){
podcastSlider = $('.podcast').bxSlider(podcastSettings());
});
这将使幻灯片居中,并且只显示完全可见的幻灯片数量,而不会剪切任何内容。
这也是响应式的,所以如果我调整浏览器的大小,一切都会更新。
此外,我为较小的屏幕指定了不同的宽度。
我希望这对其他人有帮助!
谢谢,
乔什