【问题标题】:Resize Image to fit page based on height根据高度调整图像大小以适合页面
【发布时间】:2015-11-22 21:49:24
【问题描述】:

我遇到了问题。我有一个方形图像 (2048x2048) 想用作背景。我想要它,这样当页面被拉伸到宽屏纵横比时,页面上就会有边框。我还想要它,以便当页面的宽度小于纵横比时,图像会调整大小以保持其方形。

看来我只能做其中之一,不能同时做。

如果我在图像上使用:height:100% 作为 CSS 属性,它适用于更大的屏幕尺寸,但当屏幕变小时,图像不会调整大小以适应我的水平滚动条。

另一方面,如果我使用:width:100%;作为 CSS 属性,它适用于小屏幕,但一旦调整大小以适应全屏,我就会得到垂直滚动条...

我想如果我要使用:

width:100%;
height:100%;

max-width:100%;
max-height:100%;

它会起作用,但显然不是......

我也尝试过给bodytag max-height:100%,甚至是容器 div 赋予相同的属性,但没有运气......

谁能指出我正确的方向?

【问题讨论】:

  • 你用过background:cover;
  • 这似乎也不起作用。我应该将它与其他标签一起使用吗?我试过 100% 的宽度和高度
  • 你能做一个小提琴让我帮你吗?
  • 给我几分钟
  • 我的代码在这里[链接]jsfiddle.net/q3Lwo6ta/[/link]

标签: html css image resize


【解决方案1】:

试试这个 -

body {
background-image: url('imageurl.png');
background-size: contain;
}

@user3910071 你也可以用这段 CSS 来处理img 元素 -

img {
    max-width: 100vw;
    max-height: 100vh;
}

在此处查看有效的fiddle,调整结果窗口的大小并查看图像是否根据您的需要调整大小。

【讨论】:

  • contain 让我更接近,但如果它不被用作背景图像怎么办?如果我想将图像用作背景的叠加层怎么办?
  • @user3910071 如果您可以在 jsfiddle 上创建一个合适的工作示例,那么我可以考虑一下。此外,如果它不是背景图像,那么试试这个 - max-height: 100vh; max-width: 100vh;
  • @user3910071 你检查我更新的答案了吗?请参阅我在答案中提供的小提琴演示,请回复它是否按预期工作?看到这个 - jsfiddle.net/wupsyuga/3
【解决方案2】:

您希望您的图像宽度-高度始终遵循您的窗口宽度-高度,并且始终具有真实的纵横比并且任何时候都没有空白?

如果我对你理解正确,试试this

$(function() {

// responsive wallpaper
var img = $('.big_backgrounds img');
function bigPic() {
    if ( img.width() < $(window).width() ) {
        $('.big_backgrounds img').css({
            'width': '100%', 
            'height':'auto', 
            'left':'0', 
            'margin-left':'0'
        });
    } else if ( 
        img.outerHeight() > $(window).outerHeight() ) {
        img.css({
            'width': '100%', 
            'height':'auto', 
            'left':'0', 
            'margin-left':'0'});
    } else {
        img.css({
            'width': 'auto', 
            'height':'100%', 
            'left':'50%', 
            'margin-left': -(img.width()/2) });
    }
} 
bigPic();
$(window).resize(function () { 
    bigPic() 
});

});

【讨论】:

    【解决方案3】:

    您可以使用: 背景尺寸:封面; 要么 背景大小:包含;

    【讨论】:

    • contain 让我更接近,但如果它不被用作背景图像怎么办?如果我想将图像用作背景的叠加层怎么办?
    • 你可以试试:background-size: 100%;
    【解决方案4】:

    这就是你想要达到的目标吗?

    https://jsfiddle.net/z9mc0g4t/

    body {
        background-image: url("http://thefoxisblack.com/desktop-wallpaper/Slumber-wallpaper-ipad.jpg");
        background-size: cover;
        background-repeat: no-repeat;
    }
    

    【讨论】:

    • 不是真的,因为我总是想看到完整的图像,这意味着我需要侧边框以保持它的正方形纵横比
    • 你的意思是当浏览器高度太小时你想看到一个网站的滚动条?因为在此示例中,您将获得具有适当纵横比的完整图像。
    • 我不想要任何滚动条。我一直希望网站调整图像大小,以便没有滚动条
    【解决方案5】:

    您能否给body 提供背景并指定background-size 的值为cover

    body {
      background: url("2048x2048.png");
      background-size: cover;
    }
    

    来自文档,关于cover

    与包含相反的关键字。尽可能大地缩放图像并保持图像纵横比(图像不会被压扁)。图像“覆盖”了容器的整个宽度或高度。当图像和容器具有不同的尺寸时,图像被裁剪为左/右或上/下。除非被其他属性(例如 background-position)覆盖,否则图像会自动居中。

    【讨论】:

    • 好的,实际上我认为我的原帖措辞有误。它应该是背景的覆盖...对不起。所以会有一个跨越整个页面的背景图像,然后这将覆盖中心的一个正方形。是否同样适用?
    • @user3910071 是的,它确实适用。试试看。如果有小提琴,那就太棒了。
    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    • 2011-11-25
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多