Html 使用CSS3媒体查询响应屏幕覆盖图像的最可靠方法?

Html 使用CSS3媒体查询响应屏幕覆盖图像的最可靠方法?,html,css,responsive-design,Html,Css,Responsive Design,我目前正在为一个个人项目设计一个登录页,我考虑使用一个屏幕覆盖图像(浏览器窗口的100%宽度和100%高度)来总结经验 在正常化之后,我从 html, body { height: 100%; overflow: hidden; } #hero { width: 100%; min-height: 100%; height: auto; background-size: cover; background-position: center

我目前正在为一个个人项目设计一个登录页,我考虑使用一个屏幕覆盖图像(浏览器窗口的100%宽度和100%高度)来总结经验

在正常化之后,我从

html, body {
    height: 100%;
    overflow: hidden;
}

#hero {
    width: 100%;
    min-height: 100%;
    height: auto;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
从大量的纵向和横向媒体查询开始,您将从以下片段中了解到这一概念:

...

@media only screen and (min-width: 2049px) and (max-width: 2560px) and (min-height: 1441px) and (max-height: 1600px) {
    #hero {
        background-image: url(../img/hero/landscape/cover-2560-1600.jpg); /* 8:5 */
    }
}

@media only screen and (min-width: 2049px) and (max-width: 2560px) and (min-height: 1601px) and (max-height: 2048px) {
    #hero {
        background-image: url(../img/hero/landscape/cover-2560-2048.jpg); /* 5:4; */
    }
}

@media only screen and (min-width: 2561px) and (min-height: 2049px) {
    #hero {
        background-image: url(../img/hero/cover-any-max.jpg); /* fallback for ultra high resolutions */
    }
}
除了为最常用的分辨率创建高质量图像和为每个分辨率编写媒体查询所需的大量工作之外,如果用户将窗口拖得很宽但也很短,那么这些查询都无法处理不常见的浏览器大小,他只有白色背景


我会很感激关于这个问题的提示,因为我在网上找到的大多数响应图像的报道都不是很有帮助,因为它没有像我所希望的那样被广泛使用。

一种方法是使用一个大图像,比你希望你的网站访问者使用的任何分辨率都大,并降低质量。这在100%大小时看起来不太好,但当缩小到较小的分辨率时,它将开始看起来不错。执行此操作后,您可以将一幅图像用于纵向,另一幅图像用于横向,或者仅将一幅图像用于以下内容:

    html, body {
        height:100%;
        margin:0;
    }
    body {
        background-image:url('../img/hero/cover-any-max.jpg');
        background-size:cover;
    }
纵向和横向媒体查询:

@media only screen and (orientation : landscape)
@media only screen and (orientation : portrait)

有关HiDPI低质量方法的更多信息,请参阅本文-

一种方法是使用单个大图像,比您网站的访问者预期使用的任何分辨率都大,并降低质量。这在100%大小时看起来不太好,但当缩小到较小的分辨率时,它将开始看起来不错。执行此操作后,您可以将一幅图像用于纵向,另一幅图像用于横向,或者仅将一幅图像用于以下内容:

    html, body {
        height:100%;
        margin:0;
    }
    body {
        background-image:url('../img/hero/cover-any-max.jpg');
        background-size:cover;
    }
纵向和横向媒体查询:

@media only screen and (orientation : landscape)
@media only screen and (orientation : portrait)

有关HiDPI低质量方法的更多信息,请参阅本文-

一种方法是使用单个大图像,比您网站的访问者预期使用的任何分辨率都大,并降低质量。这在100%大小时看起来不太好,但当缩小到较小的分辨率时,它将开始看起来不错。执行此操作后,您可以将一幅图像用于纵向,另一幅图像用于横向,或者仅将一幅图像用于以下内容:

    html, body {
        height:100%;
        margin:0;
    }
    body {
        background-image:url('../img/hero/cover-any-max.jpg');
        background-size:cover;
    }
纵向和横向媒体查询:

@media only screen and (orientation : landscape)
@media only screen and (orientation : portrait)

有关HiDPI低质量方法的更多信息,请参阅本文-

一种方法是使用单个大图像,比您网站的访问者预期使用的任何分辨率都大,并降低质量。这在100%大小时看起来不太好,但当缩小到较小的分辨率时,它将开始看起来不错。执行此操作后,您可以将一幅图像用于纵向,另一幅图像用于横向,或者仅将一幅图像用于以下内容:

    html, body {
        height:100%;
        margin:0;
    }
    body {
        background-image:url('../img/hero/cover-any-max.jpg');
        background-size:cover;
    }
纵向和横向媒体查询:

@media only screen and (orientation : landscape)
@media only screen and (orientation : portrait)

有关HiDPI低质量方法的更多信息,请参阅本文-

当视口变得非常宽但也非常短时,可以使用纵横比查询进行捕获:

@media only screen (min-aspect-ratio: 8/5) and (max-aspect-ratio: 8/4)
{
    #hero {
        background-image: url(../img/hero/landscape/cover-2560-1600.jpg); /* 8:4 ~8:5 */
    }
}

/* Your other aspect-ratio queries */


/* If browser is very wide + small */
@media only screen (min-aspect-ratio: 22/1) and (max-aspect-ratio: 22/2)
{
    /* Assign other styles to handle it */
}

/* If browser is very narrow + tall */
@media only screen (min-aspect-ratio: 1/22) and (max-aspect-ratio: 2/22)
{
    /* Assign other styles to handle it */
}

显然,您需要自己确定断点。

当视口变得非常宽但也非常短时,您可以使用纵横比查询来捕获:

@media only screen (min-aspect-ratio: 8/5) and (max-aspect-ratio: 8/4)
{
    #hero {
        background-image: url(../img/hero/landscape/cover-2560-1600.jpg); /* 8:4 ~8:5 */
    }
}

/* Your other aspect-ratio queries */


/* If browser is very wide + small */
@media only screen (min-aspect-ratio: 22/1) and (max-aspect-ratio: 22/2)
{
    /* Assign other styles to handle it */
}

/* If browser is very narrow + tall */
@media only screen (min-aspect-ratio: 1/22) and (max-aspect-ratio: 2/22)
{
    /* Assign other styles to handle it */
}

显然,您需要自己确定断点。

当视口变得非常宽但也非常短时,您可以使用纵横比查询来捕获:

@media only screen (min-aspect-ratio: 8/5) and (max-aspect-ratio: 8/4)
{
    #hero {
        background-image: url(../img/hero/landscape/cover-2560-1600.jpg); /* 8:4 ~8:5 */
    }
}

/* Your other aspect-ratio queries */


/* If browser is very wide + small */
@media only screen (min-aspect-ratio: 22/1) and (max-aspect-ratio: 22/2)
{
    /* Assign other styles to handle it */
}

/* If browser is very narrow + tall */
@media only screen (min-aspect-ratio: 1/22) and (max-aspect-ratio: 2/22)
{
    /* Assign other styles to handle it */
}

显然,您需要自己确定断点。

当视口变得非常宽但也非常短时,您可以使用纵横比查询来捕获:

@media only screen (min-aspect-ratio: 8/5) and (max-aspect-ratio: 8/4)
{
    #hero {
        background-image: url(../img/hero/landscape/cover-2560-1600.jpg); /* 8:4 ~8:5 */
    }
}

/* Your other aspect-ratio queries */


/* If browser is very wide + small */
@media only screen (min-aspect-ratio: 22/1) and (max-aspect-ratio: 22/2)
{
    /* Assign other styles to handle it */
}

/* If browser is very narrow + tall */
@media only screen (min-aspect-ratio: 1/22) and (max-aspect-ratio: 2/22)
{
    /* Assign other styles to handle it */
}

显然,您需要自己确定断点。

好的,如果您只有一个映像,这似乎不是一个很好的解决方案,但是如果您有多个映像,或者您接受用户提交的、您无法控制的内容,那么就有一个服务器端解决方案(RESS)在飞行中缩放或裁剪你的图像以完美地适应访问者的屏幕,这是你最好的选择

你会疯狂地写出所有可能的媒体查询并预先缩放图像。此外,正如您所提到的,设备纵横比是不同的,或者您可能会遇到分辨率奇怪的设备……更不用说视网膜显示器等了


如果你真的想要一个防傻子的方法,去RESS。我知道,但我肯定还有其他的。

好的,如果你只有一张图片,这似乎不是一个很好的解决方案,但是如果你有几个,或者你接受用户提交的内容,但你不能控制,然后有一个服务器端解决方案(RESS),可以动态缩放或裁剪你的图片,以完美地适应访问者的屏幕,这是你最好的选择

你会疯狂地写出所有可能的媒体查询并预先缩放图像。此外,正如您所提到的,设备纵横比是不同的,或者您可能会遇到分辨率奇怪的设备……更不用说视网膜显示器等了


如果你真的想要一个防傻子的方法,去RESS。我知道,但我肯定还有其他的。

好的,如果你只有一张图片,这似乎不是一个很好的解决方案,但是如果你有几个,或者你接受用户提交的内容,但你不能控制,然后有一个服务器端解决方案(RESS),可以动态缩放或裁剪你的图片,以完美地适应访问者的屏幕,这是你最好的选择

你会疯狂地写出所有可能的媒体查询并预先缩放图像。此外,正如您所提到的,设备纵横比是不同的,或者您可能会遇到分辨率奇怪的设备……更不用说视网膜显示器等了


如果你真的想要一个防傻子的方法,去RESS。我知道,但我肯定还有其他的。

好的,如果你只有一张图片,这似乎不是一个很好的解决方案,但是如果你有几个,或者你接受用户提交的内容,而