全部,
任何人都知道如何将slimbox的叠加窗口大小限制为用户窗口大小的百分比(就像prettyphoto一样)
由于
这是模块代码: http://paste.ly/3Kz
瘦身箱js: http://paste.ly/3L0
答案 0 :(得分:6)
实际上你的解决方案都没有为我做过,所以我不得不把它们放在一个搅拌器中,并通过这样做来混合结果:
正如他所说,请注意slimbox2.js中的这一行
w(g).css({backgroundImage:"url("+n+")",visibility:"hidden",display:""});
w(p).width(k.width);
w([p,I,d]).height(k.height);
并用这个块替换它们:
var winWidth = window.innerWidth - 20;
var winHeight = window.innerHeight - 120;
if (winWidth > winHeight) {
var maxSize = winHeight;
} else {
var maxSize = winWidth;
}
/* determine proper w and h for img, based on original image'w dimensions and maxSize */
var my_w = k.width;
var my_h = k.height;
if (my_w > my_h) {
my_h = maxSize * my_h / my_w;
my_w = maxSize;
} else {
my_w = maxSize * my_w / my_h;
my_h = maxSize;
}
if (k.width > my_w || k.height > my_h){ /* constrain it */
w(g).css({backgroundImage:"url("+n+")",backgroundSize:""+my_w+"px "+my_h+"px",visibility:"hidden",display:""});
w(p).width(my_w);
w([p,I,d]).height(my_h);
}
else { /* default behaviour NORMAL before hackeing*/
w(g).css({backgroundImage:"url("+n+")",backgroundSize:"",visibility:"hidden",display:""});
w(p).width(k.width);
w([p,I,d]).height(k.height);
}
*善待,我是早期的业余开发者;)
答案 1 :(得分:5)
我试图使用Redscouse的解决方案,但我认为他使用的是较旧版本的slimbox。这是一个基于v2.04的解决方案,它将限制图像以适应当前浏览器窗口。
找到animateBox()函数。在顶部附近你应该找到如下所示的行:
$(image).css({backgroundImage: "url(" + activeURL + ")", visibility: "hidden", display: ""});
$(sizer).width(preload.width);
$([sizer, prevLink, nextLink]).height(preload.height);
用这些替换这些行:
/* make sure the image won't be bigger than the window */
var winWidth = $(window).width() - 20;
var winHeight = $(window).height() - 104;
var maxSize = (winWidth > winHeight) ? winHeight : winWidth; /* the smaller dimension determines max size */
/* determine proper w and h for img, based on original image'w dimensions and maxSize */
var my_w = preload.width;
var my_h = preload.height;
if (my_w > my_h)
{
my_h = maxSize * my_h / my_w;
my_w = maxSize;
}
else
{
my_w = maxSize * my_w / my_h;
my_h = maxSize;
}
if (preload.width > my_w || preload.height > my_h){ /* constrain it */
$(image).css({backgroundImage: "url(" + activeURL + ")", backgroundSize: my_w + "px " + my_h + "px", visibility: "hidden", display: ""});
$(sizer).width(my_w);
$([sizer, prevLink, nextLink]).height(my_h);
}
else { /* default behaviour */
$(image).css({backgroundImage: "url(" + activeURL + ")", backgroundSize: "", visibility: "hidden", display: ""});
$(sizer).width(preload.width);
$([sizer, prevLink, nextLink]).height(preload.height);
}
-20和-104的调整是考虑到slimbox在图像周围使用的额外空间。随意根据需要调整它们。
答案 2 :(得分:1)
我有一个类似的问题,图像扩展超出了窗口的大小。我知道我可以通过在上传时限制图像的大小来解决这个问题,但我不想这样做,我宁愿能够设置slimbox窗口的大小,所以我开始设置任务,这就是我来的和它一起工作完美! :)
为了让以后更容易调整,您需要在选项中添加userDefinedWidth和userDefinedHeight行以调用slimbox:
示例:
$(function($) {
$("a[rel^='lightbox']").slimbox({
/* Put custom options here */
userDefinedWidth:640, /* set max width here */
userDefinedHeight:480, /* set max height here */
initialWidth: 250,
initialHeight: 250,
imageFadeDuration: 400
});
接下来,打开slimbox.js(或slimbox2.js)并再次查找选项,这次添加userDefinedWidth和userDefinedHeight时没有像这样的值:
w.slimbox=function(O,N,M){
u=w.extend({
userDefinedWidth:'',
userDefinedHeight:'',
loop:false,
...etc.
...etc.
接下来找到名为i的函数。 在i函数中替换以下行:
w(g).css({backgroundImage:"url("+n+")",visibility:"hidden",display:""});
w(p).width(k.width);
w([p,I,d]).height(k.height);
这些行:
var my_w = u.userDefinedWidth;
var my_h = u.userDefinedHeight;
w(g).css({backgroundImage:"url("+n+")",backgroundSize:""+my_w+"px "+my_h+"px",visibility:"hidden",display:""});
w(p).width(my_w);
w([p,I,d]).height(my_h);
一旦你做完了,你就可以去了,并且应该能够将slimbox的大小调整到你选择的设置。
皮特。
PS:我是一个熟悉jquery / javascript的人,所以如果有人能让这更好/更快/更容易,请随意。哦,请随意在任何您喜欢的地方使用此代码。 ;)答案 3 :(得分:0)
虽然Avinash的回应有效,但这更为简单:
.pp_overlay {max-width:100%; max-height:100%;}
上述字段中的百分比将其视为用户浏览器大小的百分比。
类.pp_overlay是PrettyPhoto中的名称。你需要找到slimbox的等价物。
答案 4 :(得分:-2)
捕获用户窗口分辨率并根据捕获的信息设置叠加层的宽度和高度......
$('#overlay').width($(window).width()).height($(window).height());