我目前有一个这样的页面:



body {
    background-image: url("http://placehold.it/1920x1200");
    min-height: 100vh;
    min-width: 100vw;
    overflow: hidden;
}

<!DOCTYPE html>
    <html>
        <head>
            <title>Cool Background Man</title>
            <link rel="stylesheet" type="text/css" href="stylesheet.css">
        </head>
        <body>
        </body>
    </html>





但是我需要background-image在保持缩放比例(不拉伸)的同时始终保持最小。这意味着在任何时候width: 100vwheight: 100vh,取决于屏幕大小。同样,图像将始终充满屏幕。它永远不会显示任何空白。图像还必须始终显示右上角,图像尺寸应相对于该图像进行调整。

总而言之,图像将始终:


拥有width: 100vwheight: 100vh
显示右上角,尺寸将相对于该尺寸进行调整。
填满屏幕以适合任何屏幕尺寸。完全没有空格。
永远不要伸展。始终保留缩放比例。

最佳答案

Background size是你的朋友。浏览器支持为very good at 95% according to caniuse.com

身体 {
    背景图片:url(“ ”);
    最低高度:100vh;
    最小宽度:100vw;
    溢出:隐藏;
}



body {
    background-image: url("http://placehold.it/1920x1200");
    min-height: 100vh;
    min-width: 100vw;
    overflow: hidden;
    background-size: cover;
    background-position: top right;
}

<!DOCTYPE html>
    <html>
        <head>
            <title>Cool Background Man</title>
            <link rel="stylesheet" type="text/css" href="stylesheet.css">
        </head>
        <body>
        </body>
    </html>





更新:一种允许您使用CSS过滤器的方法是将背景图像应用于伪内容,然后将过滤器应用于伪内容:



body {
  min-height: 100vh;
  min-width: 100vw;
  overflow: hidden;
  position: relative;
}
body:before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background-image: url("http://placehold.it/1920x1200");
  background-size: cover;
  background-position: top right;
  -webkit-filter: blur(5px); /* Or whatever filter you want */
  z-index: -1; /* Ensures it's behind the rest of the content */
}

<!DOCTYPE html>
<html>

<head>
  <title>Cool Background Man</title>
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
  Some content
</body>

</html>

10-07 21:16