ここに回答を追加したいと思います。さまざまなブレークポイント幅を尊重し、ウィンドウ幅に基づいてポップオーバーの幅を変更することで、カラーボックスをレスポンシブにする必要がありました。基本的に、ブラウザで表示するときはカラーボックスの左右に空きスペースを設けることができますが、電話/タブレットで表示するときはできません。
この投稿 ( 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;
カラーボックス オブジェクトが準備されたら、この追加の属性をそれに追加するだけです。cboxDefaultOptions を構成するか、別のカスタム値を持つオブジェクトを$.colorbox.responsiveOptions
提供して、必要に応じて別のブレークポイントでロードすることもできます。