将slimbox(灯箱)图像限制为窗口大小

Jas*_*son 3 jquery lightbox slimbox

大家好,

任何人都知道如何将slimbox的叠加窗口大小限制为用户窗口大小的百分比(就像prettyphoto一样)

谢谢

这是模块代码:http: //paste.ly/3Kz

还有slimbox js:http://paste.ly/3L0

小智 6

实际上你的解决方案都没有为我做过,所以我不得不把它们放在一个搅拌器中,并通过这样做来混合结果:

正如他所说,请注意slimbox2.js中的这一行

w(g).css({backgroundImage:"url("+n+")",visibility:"hidden",display:""});
w(p).width(k.width);
w([p,I,d]).height(k.height);
Run Code Online (Sandbox Code Playgroud)

并用这个块替换它们:

        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);            
        }       
Run Code Online (Sandbox Code Playgroud)

*善良,我是早期的业余开发者;)


tho*_*per 5

我试图使用Redscouse的解决方案,但我认为他使用的是较旧版本的slimbox.这是一个基于v2.04的解决方案,它将限制图像以适应当前浏览器窗口.

找到animateBox()函数.在顶部附近你应该找到如下所示的行:

$(image).css({backgroundImage: "url(" + activeURL + ")", visibility: "hidden", display: ""});
$(sizer).width(preload.width);
$([sizer, prevLink, nextLink]).height(preload.height);
Run Code Online (Sandbox Code Playgroud)

用这些替换这些行:

/* 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);
}
Run Code Online (Sandbox Code Playgroud)

-20和-104的调整是考虑到slimbox在图像周围使用的额外空间.随意根据需要调整它们.