如何调整图像大小以适合浏览器窗口?

2023-11-25

这看起来微不足道,但经过所有研究和编码后,我无法让它发挥作用。条件是:

  1. 浏览器窗口大小未知。因此,请不要提出涉及绝对像素大小的解决方案。
  2. 图像的原始尺寸未知,并且可能适合也可能不适合浏览器窗口。
  3. 图像垂直和水平居中。
  4. 必须保留图像比例。
  5. 图像必须完整地显示在窗口中(不得裁剪。)
  6. 我不希望出现滚动条(如果图像适合,则不应出现滚动条。)
  7. 当窗口尺寸发生变化时,图像会自动调整大小,以占据所有可用空间而不大于其原始大小。

基本上我想要的是这样的:

.fit {
  max-width: 99%;
  max-height: 99%;
}
<img class="fit" src="pic.png">

上面代码的问题是它不起作用:图片通过添加垂直滚动条占用了它所需的所有垂直空间。

我可以使用 PHP、Javascript、JQuery,但我宁愿选择纯 CSS 的解决方案。我不在乎它是否在 IE 中不起作用。


更新2018-04-11

这是一个没有 Javascript 的,CSS-only解决方案。图像将动态居中并调整大小以适合窗口。

<html>
<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .imgbox {
            display: grid;
            height: 100%;
        }
        .center-fit {
            max-width: 100%;
            max-height: 100vh;
            margin: auto;
        }
    </style>
</head>
<body>
<div class="imgbox">
    <img class="center-fit" src='pic.png'>
</div>
</body>
</html>

[其他,旧]解决方案使用 JQuery 设置图像容器的高度(body在下面的示例中),以便max-height图像上的属性按预期工作。当客户端窗口大小调整时,图像也会自动调整大小。

<!DOCTYPE html>
<html>
<head>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        .fit { /* set relative picture size */
            max-width: 100%;
            max-height: 100%;
        }
        .center {
            display: block;
            margin: auto;
        }
    </style>
</head>
<body>

<img class="center fit" src="pic.jpg" >

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" language="JavaScript">
    function set_body_height() { // set body height = window height
        $('body').height($(window).height());
    }
    $(document).ready(function() {
        $(window).bind('resize', set_body_height);
        set_body_height();
    });
</script>

</body>
</html>

注意:用户 gutierrezalex 在此页面上打包了一个非常相似的解决方案作为 JQuery 插件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调整图像大小以适合浏览器窗口? 的相关文章

随机推荐

  • 终端中带有块字符的文本进度条[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我编写了一个简单的控制台应用程序 用于使用 ftplib 从 FTP 服务器上传和下载文件 我希望该应用程序向用户显示其下载 上传进度的一些可视化 每次下载数据块时 我希望它提供
  • IIS 7.5 中的 ASP.NET MVC3

    你好 我想在 Windows Server 2008 R2 SP1 中发布 MVC 3 站点 我安装了 MVC 3 和 MVC 2 当我创建 MVC 2 站点时 它工作正常 但 MVC 3 站点无法工作 我首先安装了 MVC 3 当该站点无
  • ASP Net Core Linux ERR_CONNECTION_REFUSED

    我正在测试将网络核心应用程序部署到运行 Ubuntu 18 04 和 Nginx 1 14 的 Digitalocean Droplet 为了进行测试 我使用 dotnet new 中提供的模板 The 点网新网 and dotnet新mv
  • 如何写入/传输到 V4L2loopback 模块创建的虚拟网络摄像头?

    我编写了一个应用程序 它从网络摄像头读取数据并在 Linux 上使用 OpenCV 处理帧 现在我想将应用程序的输出通过管道传输到由 V4L2loopback 模块创建的虚拟网络摄像头 以便其他应用程序能够读取它 我使用 C 编写了该应用程
  • 如何用 Javascript 替换整个 HTML 内容?

    我尝试使用 html html this responseText 它替换了内容 但不替换 head 和 body 标签 例如 如果我想替换此内容 h1 This is a Heading h1 然后我在检查器中检查 HTML 结构 结果如
  • 在顶部插入时,双端队列是否提供 O(1) 复杂度

    我正要过去thispost 并指出 deque 在顶部和底部提供高效的插入 但是这post这里指出除后面之外的双端队列的时间复杂度是 O n 我认为如果双端队列具有有效的顶部和底部插入 它将具有 O 1 而向量应该仅在底部插入具有 O 1
  • ReferenceError:未定义 privateSpecialRepair

    我在哨兵上收到此错误 我不知道下一个 路由器如何或为什么将用户重定向到同一页面 它发生在某些浏览器上 并且在某些浏览器上工作得很好 Tags routing instrumentation next router 操作 页面加载 看起来这与
  • Xcode 4 外部构建项目和调试

    我已经设置了一个基于 makefile 的项目 可以在多个平台上构建我的代码 在我的 Mac 上 我想使用 Xcode 进行调试 我已将 Xcode 设置为外部构建项目 我可以从 Xcode 中运行该应用程序 输出显示在 Xcode 中 如
  • 我应该如何组织我的 OCaml 项目?

    我知道这个问题很普遍 我什至不知道如何更好地问 我没有太多的经验C我只是希望我能在 OCaml 中做与 Java 类似的事情 例如 在Java 我通常创建一个项目 使用Eclipse或其他 IDE 那么我有一个src文件夹和一个bin文件夹
  • JTable 列跨越

    我正在尝试做一个JTable有可用的列跨度 具体来说 我希望嵌套一个JTable在另一个里面JTable 当用户单击查看嵌套表时 它应该展开以下推下面的行并填充空白空间 这与您在 MS Access 中看到的类似 您可以在其中嵌套表 单击行
  • JavaScript 中的全局变量和“window.variable”有什么区别?

    我正在读骨干网 js文档 并且我看到很多将属性分配给window object window something whatever 调用此代码与仅分配变量并创建全局变量有什么区别 如下所示 something whatever 我假设存在某
  • 将多级 JSON 菜单转换为多级 JSX/HTML 菜单

    我在用智能菜单创建一个下拉菜单 但是 我想动态创建菜单 React 应用程序将向 API 服务器查询 JSON 代码 并据此构建菜单 我正在尝试找出一种将 JSON 代码转换为 HTML JSX 代码的方法 从 API 检索到的 JSON
  • OpenCV 输入数组/输出数组

    我刚刚编译了 OpenCV 2 3 的最新版本 他们决定将所有 Matrix 输入 输出更改为 InputArray OutputArray 这让一切都变得混乱 在 OpenCV 2 2 下运行良好的同一段代码现在毫无价值 我可以接受两种解
  • 创建maven项目

    如何在 Eclipse 中创建一个简单的 Maven 项目 每次创建项目时都会出现错误 错误 描述 资源路径 位置类型 CoreException Could 不计算构建计划 插件 org apache maven plugins mave
  • CSRF 令牌与 Laravel sainttum 和 Angular http 不匹配

    我一直在尝试实现 Laravel Sanctum 但即使我遵循了 Laravel Sanctum 文档中所述的所有内容 我也遇到了 CSRF 令牌不匹配 错误 cors php配置文件 paths gt api login logout s
  • 显示不同时区的时间

    有没有一种优雅的方式来显示另一个时区的当前时间 我想要一些具有以下一般精神的东西 cur
  • 如何扩展 Array 类并保留其实现

    我想向 Array 类添加一些函数 我不想将它们作为类外部的函数 因为理想情况下在键入时可以发现它们 跟随物体 这是我到目前为止所拥有的 export class List
  • RDLC - 在VS2010中添加数据源

    问候 我有一个 RDLC 文件 并且想向其中添加数据源 尽管到目前为止还没有任何运气 数据源是我自己编写的自定义类 只是补充一下 我们一直这样做 我们最近转换为 VS2010 RDLC 格式 这导致了一些问题 但我们对实现进行了一些更改 解
  • 从任务栏隐藏外部应用程序

    我浏览了许多不同的论坛 但找不到方法 我希望从任务栏隐藏外部应用程序图标 但不最小化应用程序 我不知道从哪里开始 也不知道如何去做 任何帮助将不胜感激 NOTE隐藏外部应用程序图标 而不是我的表单的图标 您可以使用橱窗展示功能 这是一个小示
  • 如何调整图像大小以适合浏览器窗口?

    这看起来微不足道 但经过所有研究和编码后 我无法让它发挥作用 条件是 浏览器窗口大小未知 因此 请不要提出涉及绝对像素大小的解决方案 图像的原始尺寸未知 并且可能适合也可能不适合浏览器窗口 图像垂直和水平居中 必须保留图像比例 图像必须完整