我正在使用PhoneGap为一家本地公司构建基本的Web应用程序。我已经创建了两个图像,用于应用程序顶部的标题/横幅。一个图像针对纵向方向进行了优化,另一个图像则针对横向方向进行了优化。
我想根据设备的持有方式显示其中之一。我一直在阅读有关媒体查询的文章,老实说,这对我的需求来说有点过于复杂,因为JQuery mobile将为我处理其余功能,并且我仅在整个应用程序中使用一个CSS。
是否有人可以提供几行简单的代码来帮助解决此问题?
是否有人可以提供几行简单的代码来帮助解决此问题?
您可以使用CSS媒体查询来适应横向和纵向布局,这并不复杂:
@media screen and (orientation: portrait) { ... }
@media screen and (orientation: landscape) { ... }
@media screen and (orientation: portrait)
{
div.header { background-image:url(image1.jpg); }
}
@media screen and (orientation: landscape)
{
div.header { background-image:url(image2.jpg); }
}
或者,您可以使用<img>
标记。在这种情况下,您将需要两个标记,并仅通过CSS规则隐藏/显示一个标记。假设,<img>
标记分别具有类header-land
和header-portrait
:
@media screen and (orientation: portrait)
{
.header-land { display:none; }
.header-portrait { display:inline-block; }
}
@media screen and (orientation: landscape)
{
.header-land { display:inline-block; }
.header-portrait { display:none; }
}
这是一个关于如何使用媒体查询的答案,这是一种相当简单的解决方法。但前提条件是可以将图像显示为CSS背景,而不是作为<img ... />
标签。
伪代码
.my-banner {
...declarations like:
background-position:
border:
margin:
padding:
}
@media all and (max-width: 320px) {
.my-banner {
background-image: url(portrait.png);
}
@media all and (min-width: 321px) {
.my-banner {
background-image: url(landscape.png);
}
images/portrait.png
和images/landscape.png
,则可以使用此路径background-image: url(images/landscape.png);
。这会对您有帮助吗?请注意,@keaukraine还给出了一个很好的示例,说明如何通过<img ... />
包含图像来解决问题。 - Osserspe