开发者

Getting an image popup overlay to work

First, code:

CSS:

.popup_foreground {
    position:   fixed;
    top:    0px;
    left:    0px;
    width:    100%;
    height:    100%;
    vertical-align:  middle;
  开发者_StackOverflow社区  text-align:   center;
    z-index:   1;
}
.popup_foreground_container {
    margin:    auto;
    padding:   24px;
    background-color: white;
    border:    1px solid black;
    display:   inline-block;
    display:   -moz-inline-stack;
    max-width:   100%;
    max-height:   100%;
    z-index:   2;
}
.popup_image {
    max-height:   100%;
}

Javascript:

function popupImage( img )
{
    var fg = $( "<div class='popup_foreground'></div>" );
    var container = $( "<div class='popup_foreground_container'></div>" );
    var image = $( "<img class='image_full popup_image' src='"+img+"' />" );
    fg.append( container );
    container.append( image );

    $("body").append( fg );

    fg.click( function(){
        fg.remove();
    });
}

Seems to work. Just calling function popupImage() displays the given image as an overlay that can be turned off with a click. In english, there's a foreground element that is fixed to the view, a 'container' with no preset size (only padding), and an image that goes inside of the container.

My problem is that an image larger than the width or height of the screen gets squeezed out of proportion in order to fit. I really can't have that. I don't want to have to use scrolling. How can I get images to scale proportionally to fit in the browser window?


If you change the container.append() line to:

container.append( $( "<img class='image_full popup_image' src='"+img+"' width='"+ $(container).width() +"'/>" ) );

It should assign the width of the container element to the created img. This might be a problem, though, for smaller images so it might be worth using an if/else statement to check whether the scaling is required.

Using only width means that the image will be scaled proportionally, whereas if you set height (as well as width) the image is likely to be distorted.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜