如何在更改屏幕宽度时保持响应式背景图像高度?
How to maintain responsive background image height while changing screen width?
我一直在努力定位背景图片,但只有在网页 window 调整到其最小宽度时图片才能正确定位。当我调整浏览器 window 时,图像的所有边长都被裁剪了。照片的高度远大于其宽度 (1391 x 2471)。我想我可能必须合并一个垂直滚动条?该网站是为移动平台设计的,但我将主要在计算机显示器上查看和设计它。我如何保持 Min 图像的完整性。浏览器的最大宽度。浏览器的宽度?
* { margin: 0;
padding: 0;
}
html {
background: url("image.jpg") no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
我的 CSS 图像定位代码是在 CSS-Tricks 上教给我的,尽管它提供了迄今为止最好的结果。我在您要查看的图片中添加了 link。这是我自己拍的照片,所以我希望提供的 link 能正常工作。
如果我没有理解错的话,您希望图像在您想要的所有尺寸上都能正确显示吗?
在这种情况下,您可以使用 @media
查询。
@media(max-width: your max width in px) {
/*And here change the height and width so that it doesn't look weird*/
}
body{
background: url("");
background-repeat: no-repeat;
background-size: cover;
background-position: center;
background-attachment: fixed;
}
您需要让 html 元素(或任何您希望 img 显示的元素)在img 具有视口的全宽 (100vw)。
如果您知道图像的纵横比,就可以做到这一点。在这种情况下,您知道原件的自然宽度和高度,因此如果您将这些尺寸作为变量,则可以通过 CSS 计算纵横比。
这是一个使用您的 CSS 设置的示例(请参阅下面的警告):
* {
margin: 0;
padding: 0;
}
html {
--imgw: 1391;
--imgh: 2471;
width: 100vw;
min-height: calc(100vw * var(--imgh) / var(--imgw));
/* make sure the whole height of the image is always shown */
background-image: url(https://picsum.photos/id/1015/1391/2471);
background-size: cover;
}
HELLO
警告:您的 CSS 中已修复背景。这有两个问题:它使元素不可滚动,并且在任何情况下它在 Safari 中都没有得到正确支持,并且使背景看起来 'fuzzy' on IOS。所以此代码段已将其删除。
我一直在努力定位背景图片,但只有在网页 window 调整到其最小宽度时图片才能正确定位。当我调整浏览器 window 时,图像的所有边长都被裁剪了。照片的高度远大于其宽度 (1391 x 2471)。我想我可能必须合并一个垂直滚动条?该网站是为移动平台设计的,但我将主要在计算机显示器上查看和设计它。我如何保持 Min 图像的完整性。浏览器的最大宽度。浏览器的宽度?
* { margin: 0;
padding: 0;
}
html {
background: url("image.jpg") no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
我的 CSS 图像定位代码是在 CSS-Tricks 上教给我的,尽管它提供了迄今为止最好的结果。我在您要查看的图片中添加了 link。这是我自己拍的照片,所以我希望提供的 link 能正常工作。
如果我没有理解错的话,您希望图像在您想要的所有尺寸上都能正确显示吗?
在这种情况下,您可以使用 @media
查询。
@media(max-width: your max width in px) {
/*And here change the height and width so that it doesn't look weird*/
}
body{
background: url("");
background-repeat: no-repeat;
background-size: cover;
background-position: center;
background-attachment: fixed;
}
您需要让 html 元素(或任何您希望 img 显示的元素)在img 具有视口的全宽 (100vw)。
如果您知道图像的纵横比,就可以做到这一点。在这种情况下,您知道原件的自然宽度和高度,因此如果您将这些尺寸作为变量,则可以通过 CSS 计算纵横比。
这是一个使用您的 CSS 设置的示例(请参阅下面的警告):
* {
margin: 0;
padding: 0;
}
html {
--imgw: 1391;
--imgh: 2471;
width: 100vw;
min-height: calc(100vw * var(--imgh) / var(--imgw));
/* make sure the whole height of the image is always shown */
background-image: url(https://picsum.photos/id/1015/1391/2471);
background-size: cover;
}
HELLO
警告:您的 CSS 中已修复背景。这有两个问题:它使元素不可滚动,并且在任何情况下它在 Safari 中都没有得到正确支持,并且使背景看起来 'fuzzy' on IOS。所以此代码段已将其删除。