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

标签 html css

这看起来微不足道,但在所有研究和编码之后我无法让它工作。条件是:

  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 的解决方案。图像将动态居中并调整大小以适合窗口。

<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>

[other, old] 解决方案,使用 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 插件非常相似的解决方案。

关于html - 如何调整图像大小以适应浏览器窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169666/

相关文章:

jquery - CodeMirror 将项目插入 HTML 编辑器 JQUERY

javascript - 如何在 onclick 时滚动到某个 div?

jquery - 使下拉父链接对于较小的设备可点击,并在 Bootstrap 中隐藏下拉菜单

javascript - 全屏组件 ReactJS

javascript - 这个 DIV 背景图像分配有什么问题?

javascript - 单击页面中的其他位置时将搜索恢复到其原始宽度?

javascript - 循环遍历未隐藏的复选框

html - 如何使用 Cheerio 获取所有情况下给定页面上图像的 URL

javascript - 无需重新加载页面的数组中的 PHP 随机值

javascript - 具有自动宽度的 div 上的 DOM