Colorbox 似乎非常适合响应式设计。我正在使用百分比来覆盖默认的尺寸设置,然后设置最大值,以避免在超大屏幕上变得混乱:
$.colorbox.settings.width = "92%";
$.colorbox.settings.height = "90%";
$.colorbox.settings.maxHeight = 850;
$.colorbox.settings.maxWidth = 1200;
那样做可以。我还调整了cboxTitle元素的大小,使其与上面的图像的宽度完全一致,这样我的有时很长的字幕就总是能够整齐地排列。
$(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 resize事件,以便在Webkit中限制调整大小事件的流,但我将其省略,因为它与问题无关。此外,我在调整大小选项中重复相同的宽度和高度百分比值,否则不会发生调整大小。 :( )
最后这部分完全不起作用。我尝试分解一下问题:
1)当用户在标准桌面大小下加载colorbox,然后缩小视口时,cboxPhoto
元素的高度没有正确缩放。宽度正确缩小,但高度保持不变,创建了“挤压”效果。所以我尝试在cboxPhoto
的css中添加height:auto
。这可以恢复纵横比,但现在cboxPhoto
元素太大了,而且被裁剪了。我之前没有出现模态框内滚动条的情况。照片的大小并不是如果我以新的浏览器视口宽度关闭colorbox并重新打开它时的大小。
2)cboxTitle
的CSS没有被重新计算。colorbox重新调整大小的函数似乎没有触发cbox_complete
事件。难道不应该吗?
我很想解决这些问题,但我也意识到,考虑到插件的当前状态,处理这种情况的最简单方法可能是在窗口调整大小时关闭和重新加载整个colorbox,但回到用户在调整大小事件之前正在查看的相册内容。但我对如何编写代码并不明确。感谢您提前提供任何帮助!
P.S.请大家不要跟我争论只有设计师才会调整窗口大小的事情。抱歉,我就是不信。当一张令人惊叹的照片出现在屏幕上时,人们会放大它,而且平板电脑特别经常旋转...