javascript - 无需裁剪的响应式全屏图像

标签 javascript jquery html css

我正在尝试调整响应式全屏图像的大小以适应浏览器窗口,而不会发生任何裁剪。

到目前为止,我的起点是设置 max-width: 100%在图像上,使其填满页面的宽度。但是,如果窗口的高度发生变化,我需要将其从 max-width: 100% 切换到至 max-height: 100%所以图像永远不会裁剪。

我能想到的唯一方法是找出哪个方面更大,然后将 CSS 更改为使用 max-width: 100%max-height: 100%相应地。

这是到目前为止的代码。它在按宽度而不是按高度调整大小时有效:

$(document).on("ready", function() {

    resizeImage($("#image"), $(window));

    $(window).on("resize", function() {
        resizeImage($("#image"), $(window));
    });

});

function resizeImage(image, container) {

    var widthRatio = Math.min(image.width() / container.width()),
        heightRatio = Math.min(image.height() / container.height());

    if (heightRatio > widthRatio) {
        image.css({
            "max-width" : "none",
            "max-height" : "100%"
        });     
    }
    else {
        image.css({
            "max-width" : "100%",
            "max-height" : "none"
        });
    }
}

这是标记:

<div class="imageContainer">
    <img src="ferrari5.jpg" id="image">
</div>

这是一个 CodePen 示例:

http://cdpn.io/yAHeb

最佳答案

容器是否 max-width: 100%, max-height: 100%?如果不是,您只是将问题从图像转移到了容器。 jsfiddle.net 会有所帮助。

很高兴这有帮助:)

关于javascript - 无需裁剪的响应式全屏图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681811/

相关文章:

javascript - 如何使这些菜单项链接到其他页面?

javascript - Html:折叠按钮充当表单中的表单提交按钮

javascript - 如果 e.keyCode 是 "enter"按钮并且元素包含其他文本,则条件已验证

html - 如何使用 Markdown 在表格中插入图像

javascript - 无法通过 "querySelector"找到元素

javascript - 访问 JSON 对象中的字段

javascript - 使用 jquery 将数据属性(带有特殊字符)添加到 dom 元素

html - jQuery Mobile 不触发 pageinit

javascript - 在悬停时选择 sibling

javascript - 异步加载 HTML 的搜索引擎行为