Colorbox 似乎非常适合“开箱即用”的响应式设计。我用百分比覆盖默认尺寸设置,然后设置最大值,这样事情就不会在大屏幕上失控:
$.colorbox.settings.width = "92%";
$.colorbox.settings.height = "90%";
$.colorbox.settings.maxHeight = 850;
$.colorbox.settings.maxWidth = 1200;
这样可行。我还将 cboxTitle 元素的大小调整为正好是它上面的 img 的宽度,这样我有时很长的标题总是可以很好地排列。
$(document).bind('cbox_complete', function(){
var photoWidth = $(".cboxPhoto").innerWidth();
var photoContainer = $("#cboxContent").outerWidth();
var leftPix = (photoContainer - photoWidth) / 2;
$("#cboxTitle").css({'left' : leftPix, 'width' : photoWidth});
});
这似乎也有效。这留下了可怕的部分:处理窗口调整大小事件。我正在尝试以下
$(window).on("resize", function(){
$.fn.colorbox.resize({
height: "90%",
width: "92%"
});
});
(我实际上使用自定义debouncedresize事件而不是标准 jquery 调整大小,以限制 Webkit 中调整大小事件的流,但我将这部分排除在外,因为它不相关。另外,我在重复在调整大小选项中使用相同的宽度和高度百分比值,否则不会发生调整大小。:()
最后一部分根本不起作用。我将尝试分解问题:
1) 当用户以标准的 destop 大小加载颜色框,然后将视口缩放得更窄时,cboxPhoto
元素的高度无法正确缩放。宽度正确缩小,但高度保持不变,产生“挤压”。所以我尝试添加height:auto
到 css for cboxPhoto
. 这恢复了纵横比,但现在cboxPhoto
元素太大了,并且被剪裁了。我以前没有在模态框内获得滚动条。如果我关闭颜色框并以新的浏览器视口宽度重新打开它,照片的大小将不会如此。
cboxTitle
2)没有重新计算css 。颜色框调整大小功能似乎不会触发cbox_complete
事件。不应该吗?
我很想解决这些问题,但我也感觉到,考虑到插件的当前状态,解决这个用例的最简单方法可能是在调整窗口大小时关闭并重新加载整个颜色框,但回到与用户在调整大小事件之前查看的画廊中的内容完全相同。但我不清楚如何编码。提前感谢您的帮助!
PS大家,请不要说只有设计师才能调整窗口大小。对不起,我只是不买那个。当屏幕上出现令人惊叹的照片时,人们会放大,尤其是平板电脑一直在旋转......