jquery - 让图像弹出叠加层工作

标签 jquery html css image overlay

首先,代码:

CSS:

.popup_foreground {
    position:   fixed;
    top:    0px;
    left:    0px;
    width:    100%;
    height:    100%;
    vertical-align:  middle;
    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();
    });
}

似乎有效。只需调用函数 popupImage() 即可将给定图像显示为可以通过单击将其关闭的叠加层。用英语来说,有一个固定到 View 的前景元素,一个没有预设大小(只有填充)的“容器”,以及一个进入容器内部的图像。

我的问题是大于屏幕宽度或高度的图像会被不成比例地挤压以适应屏幕。我真的不能那样。我不想使用滚动。如何让图像按比例缩放以适应浏览器窗口?

最佳答案

如果将 container.append() 行更改为:

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

它应该将容器元素的宽度分配给创建的img。不过,对于较小的图像,这可能是个问题,因此可能值得使用 if/else 语句来检查是否需要缩放。

仅使用 width 意味着图像将按比例缩放,而如果您设置 height (以及 width) 图像很可能会失真。

关于jquery - 让图像弹出叠加层工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680070/

相关文章:

javascript - 如何将添加的文本保存到 Jquery 文本区域中的复选框值?

php - 如何在基于 PHP 的视频转换器中处理大文件?

css - 在嵌套较少的级别导入时,Google 字体将无法使用。

html - 标题栏的内容没有对齐

javascript - CSS :not selector act strangely on section tag

javascript - 在 PHP、MySQL 和 JS 站点上存储琐碎数据的有效方法

html - 使用 Bootstrap 网格系统和 CSS 媒体查询查询响应式网页

html - 使用 Jquery 创建某种 SPA

javascript - 从 Canvas 下载时不支持图像文件格式

CSS 样式表未应用于 Rails 3.2.8