我想在这里添加一个答案。我需要通过尊重不同的断点宽度并根据窗口宽度更改弹出框的宽度来使颜色框响应。基本上,当颜色框显示在浏览器中时,我可以在颜色框的左侧和右侧留出空白空间,但在手机/平板电脑中显示时则不行。
我已经使用了这篇文章(https://stackoverflow.com/a/23431190/260665)中答案的概念,但做了一些修改:
/**
* Raj: Used basic source from here: https://stackoverflow.com/a/23431190/260665
**/
// Make sure the options are sorted in descending order of their breakpoint widths
var cboxDefaultOptions =
[
{
breakpointMinWidth: 1024,
values: {
width : '70%',
maxWidth : '700px',
}
},
{
breakpointMinWidth: 640,
values: {
width : '80%',
maxWidth : '500px',
}
},
{
breakpointMinWidth: 320,
values: {
width : '95%',
maxWidth : '300px',
}
}
];
$(window).resize(function(){
// alert (JSON.stringify($.colorbox.responsiveOptions));
// var respOpts = $.colorbox.attr('responsiveOptions');
var respOpts = $.colorbox.responsiveOptions;
if (respOpts) {
var breakpointOptions = breakpointColorboxOptionsForWidth (window.innerWidth);
if (breakpointOptions) {
$.colorbox.resize({
width: window.innerWidth > parseInt(breakpointOptions.values.maxWidth) ? breakpointOptions.values.maxWidth : breakpointOptions.values.width,
});
}
}
});
function breakpointColorboxOptionsForWidth (inWidth) {
var breakpointOptions = null;
for (var i=0; i<cboxDefaultOptions.length; i++) {
var anOption = cboxDefaultOptions[i];
if (inWidth >= anOption.breakpointMinWidth) {
breakpointOptions = anOption;
break;
}
}
return breakpointOptions;
}
用法:
$.colorbox.responsiveOptions = cboxDefaultOptions;
当 colorbox 对象准备好时,只需将这个附加属性添加到它。我们还可以配置 cboxDefaultOptions 或提供不同的自定义值对象,$.colorbox.responsiveOptions
以便在需要时加载不同的断点。