iPhone 5 CSS媒体查询


132

iPhone 5的屏幕更长,无法捕捉到我网站的移动视图。iPhone 5新增了哪些响应式设计查询,可以与现有iPhone查询结合使用吗?

我当前的媒体查询是这样的:

@media only screen and (max-device-width: 480px) {}

3
我们可以看到您现有的媒体查询吗?
BoltClock

Answers:


283

另一个有用的媒体功能是device-aspect-ratio

请注意,iPhone 5没有16:9的宽高比。实际上是40:71。

iPhone <5:
@media screen and (device-aspect-ratio: 2/3) {}

iphone 5:
@media screen and (device-aspect-ratio: 40/71) {}

iPhone 6:
@media screen and (device-aspect-ratio: 375/667) {}

iPhone 6 Plus:
@media screen and (device-aspect-ratio: 16/9) {}

iPad:
@media screen and (device-aspect-ratio: 3/4) {}

参考:
媒体查询@ W3C
iPhone模型比较
宽高比计算器


2
我喜欢这种方法,但直到Stephen Sprawl zsprawl.com/iOS/2012/09/css-media-queries-for解释了添加-webkit-min-device-pixel-ratio之前,它无法在PhoneGap应用程序Webview中工作。 -iphone-5。@media屏幕和(device-aspect-ratio:40/71)和(-webkit-min-device-pixel-ratio:2){// iphone5用于电话间隙}
TaeKwonJ​​oe

and (-webkit-min-device-pixel-ratio: 2)如@TaeKwonJ​​oe所述,我不得不添加iPhone 5媒体查询以使其在PhoneGap Webview中工作
Mahendra Liya

1
感谢您对此进行更新以包括iPhone 6!
Maverick 2014年

当我需要在CSS中区分iPhone 4和iPhone 5时,此方法效果很好。
euccas

1
对于iphone 6,(设备纵横比:667/375)在实际的物理iphone 6上不起作用。它在iOS模拟器上有效。我将其更改为375/667,并且可以在物理设备上使用。
做现在的

64

我将这个归功于此博客

@media only screen and (min-device-width: 560px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 2) {
    /* iPhone 5 only */
}

请记住,它会对iPhone 5做出反应,而不是针对该设备上安装的特定iOS版本。

要与现有版本合并,您应该可以用逗号分隔它们:

@media only screen and (max-device-width: 480px), only screen and (min-device-width: 560px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 2) {
    /* iPhone only */
}

注意:我还没有测试上面的代码,但是我之前已经测试了逗号分隔的@media查询,它们工作得很好。

请注意,以上内容可能会影响其他具有类似比率的设备,例如Galaxy Nexus。这是另一种方法,该方法仅针对尺寸为640像素(由于某些奇怪的显示像素异常而导致像素为560像素)且介于960像素(iPhone <5)和1136像素(iPhone 5)之间的设备。

@media
    only screen and (max-device-width: 1136px) and (min-device-width: 960px) and (max-device-height: 640px) and (min-device-height: 560px),
    only screen and (max-device-height: 1136px) and (min-device-height: 960px) and (max-device-width: 640px) and (min-device-width: 560px) {
    /* iPhone only */
}

1
您能建议我如何将这个查询与我的旧查询结合起来以同时捕获iPhone 4和iPhone 5?
Maverick 2012年

6
请注意,这也会影响其他手机-而不仅仅是iPhone。一个例子是三星Galaxy Nexus。
Mike Sweeney 2012年

@MikeSweeney很好的电话。我已使用不应该包含其他设备的新方法更新了帖子。
埃里克(Eric)

@Eric这是我在进行一系列交叉电话测试后最终决定解决的问题-必须提高高度!似乎在我测试过的7-8部各种手机上都能正常工作。
Mike Sweeney 2012年

这行是正确的iPhone 5 and not to iOS 6吗?应该是:“ iPhone5而不是iPhone 6”吗?
Sgnl

38

上面列出的所有这些使用max-device-widthmax-device-height用于媒体查询的答案都存在非常强大的错误:它们还针对许多其他流行的移动设备(可能是不需要的且从未经过测试,或者将来会投放市场)。

该查询将适用于屏幕较小的任何设备,并且可能会破坏您的设计。

结合类似的特定于设备的媒体查询(针对HTC,Samsung,iPod,Nexus ...),此做法将引发定时炸弹。为了简化设计,这种想法会使CSS成为不受控制的意大利面条。您永远无法测试所有可能的设备。

请注意,唯一始终以IPhone5目标且没有其他目标的媒体查询是:

/* iPhone 5 Retina regardless of IOS version */
@media (device-height : 568px) 
   and (device-width : 320px) 
   and (-webkit-min-device-pixel-ratio: 2)
/* and (orientation : todo: you can add orientation or delete this comment)*/ {
                 /*IPhone 5 only CSS here*/
}

请注意,此处检查的是确切的宽度和高度,而不是最大宽度。


现在,解决方案是什么?如果您要编写一个在所有可能的设备上看起来都不错的网页,则最佳做法是使用降级

/ *降级模式,我们只能确定屏幕宽度,否则这种变化将由纵向变为横向* /

/*css for desktops here*/

@media (max-device-width: 1024px) {
  /*IPad portrait AND netbooks, AND anything with smaller screen*/
  /*make the design flexible if possible */
  /*Structure your code thinking about all devices that go below*/
}
@media (max-device-width: 640px) {
 /*Iphone portrait and smaller*/
}
@media (max-device-width: 540px) {
 /*Smaller and smaller...*/
}
@media (max-device-width: 320px) {
 /*IPhone portrait and smaller. You can probably stop on 320px*/
}

如果您的网站访问者中有30%以上来自移动设备,请颠倒此方案,以移动设备优先的方式。min-device-width在这种情况下使用。这将加快移动浏览器的网页渲染速度。


10
我会先进行渐进式增强,然后再移动。首先从移动设备开始,然后使用min-device-width建立。
primavera133

2
还要注意,仅与iPhone 5匹配的高度/宽度/像素比率解决方案也将与出现的具有相同特征的下一部手机匹配。您的答案的总体主题是正确的:根据特定设备进行思考是错误的方法。
Pointy

@Dan –即使您的答案没有直接解决问题,但它会在响应式设计最佳实践的更广泛角度内进行研究。在我看来,您在这里写的内容非常深入和实用。五星。
Dimitri Vorontzov

@Dan –尝试实施您的建议,但没有任何效果。我可以请请你看一看:stackoverflow.com/questions/16486078/...
迪米特里Vorontzov

@primavera,请说为什么。移动优先方法的优势是什么?
秒。

7

对我来说,完成这项工作的查询是:

only screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)

7

iPhone 5纵向和横向

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) {

/* styles*/
}

iPhone 5风景

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) 
and (orientation : landscape) { 
/* styles*/

}

iPhone 5纵向

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) 
and (orientation : portrait) { 
 /* styles*/

}

为什么需要max-device-width : 568px肖像?
adi518 '17

1
@ adi518如果您不使用最大宽度,则css规则适用于任何大于320px的设备,这实际上就是大多数设备-平板电脑台式机等
Sudheer

1
为什么不使用它device-width: 320px and device-height: 568px呢?
adi518 '17

5

针对我的Phonegapp应用,没有任何响应对我有用。

作为以下链接点,以下解决方案有效。

@media screen and (device-height: 568px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) {
    // css here
}

5

只是非常快速的补充,因为我一直在测试一些选项,并且一路错过了这一点。确保您的页面具有:

<meta name="viewport" content="initial-scale=1.0">


0

afaik no iPhone使用的像素比例为1.5

iPhone 3G / 3GS:(-webkit-device-pixel-ratio:1)iPhone 4G / 4GS / 5G:(-webkit-device-pixel-ratio:2)


0
/* iPad */
@media screen and (min-device-width: 768px) {
    /* ipad-portrait */
    @media screen and (max-width: 896px) { 
        .logo{
            display: none !important;
        }
    }
    /* ipad-landscape */
    @media screen and (min-width: 897px) { 

    }
}
/* iPhone */
@media screen and (max-device-width: 480px) {
    /* iphone-portrait */
    @media screen and (max-width: 400px) { 

    }
    /* iphone-landscape */
    @media screen and (min-width: 401px) { 

    }
}

-3

您可能应该将“ -webkit-min-device-pixel-ratio”降低到1.5才能赶上所有iPhone?

@media only screen and (max-device-width: 480px), only screen and (min-device-width: 640px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 1.5) {
/* iPhone only */
}

1
哪个iPhone使用的设备像素比为1.5?
BoltClock

1
我强烈建议根据设备宽度而不是设备名称(iPhone)进行媒体查询。因此,如果iPhone 5具有更大的宽度,则只需使其可用即可。
汤姆·罗杰罗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.