我知道如何对平板电脑纵向进行媒体查询,为手机进行另一次媒体查询。但是,是否可以只为所有人提供一个媒体查询:平板电脑肖像和手机?
/* tablets portrait */
@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px)
and (orientation : portrait) {
}
/* phones */
@media screen and (max-device-width: 640px) {
}
/* tablets portrait and phones
Is it possible to have only one media query for this that do the same than the other media queries together?
*/
答案 0 :(得分:14)
没有。
<强>为什么吗
iPad和iPhone是具有不同屏幕尺寸,分辨率和不同像素密度的不同设备(基于不同版本/版本 - 请参阅here)。
Device Screen(res) CSS pixel ratio
iPad (generation 1,2) 1024 × 768 1
iPad (generation 3,4) 2048 × 1536 2
iPhone (gen 1,3G,3GS) 480 × 320 1
iPhone (gen 4,4S) 960 × 640 2
iPhone (gen 5) 1136 x 640 2
iPad被归类为平板电脑,iPhone是移动设备,因此您永远无法使用一个媒体查询来完全满足这两种设备或为这两种设备创造理想的体验。
我该怎么办?
一种解决方案是提供一种相当常见的方法,并为3个级别的设备类型和/或屏幕宽度/方向提供媒体查询:
基本理论是您需要在尽可能多的设备上使用您的网站或应用程序,从而使您的方法标准化,而不是错过过多的单个设备和/或制造商。
一个粗略的例子可能是:
@media screen and (max-width:500px) {
/* Mobile styles */
}
@media screen and (min-width:501px) and (max-width:999px) {
/* Tablet styles */
}
@media screen and (min-width:1000px) {
/* Desktop styles */
}
但对于三种类型之间的最佳断点的看法差异很大,我知道这些断点的研究/数据会受到开发者社区的广泛欢迎。
如果我想专门定位iOS设备该怎么办?
你可以这样做。有些人提出了满足特定iOS设备特定要求的媒体查询(未经过测试,但我经常看到以下列出的链接):
/* iPads (portrait and landscape) ----------- */
@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px) {
/* Styles */
}
/* iPads (landscape) ----------- */
@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px)
and (orientation : landscape) {
/* Styles */
}
/* iPads (portrait) ----------- */
@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px)
and (orientation : portrait) {
/* Styles */
}
/* iPhone 4 ----------- */
@media
only screen and (-webkit-min-device-pixel-ratio : 1.5),
only screen and (min-device-pixel-ratio : 1.5) {
/* Styles */
}
其他人针对iOS的更多努力:
一般参考:
的买者强>
我上面使用了一个示例方法,但可以通过多种方式应用媒体查询:
@media screen and (max-width:500px) { ... }
@import url(mobile.css) (max-width:500px);
<link rel="stylesheet" type="text/css" media="screen and (max-width: 500px)" href="mobile.css" />
答案 1 :(得分:0)
看看Detectizr(https://github.com/barisaydinoglu/Detectizr)它是一个Modernizr(http://modernizr.com/)扩展名。
这个JS会将CSS类添加到html标记中,这样您就可以在没有媒体查询的情况下定位设备。例如.phone {}或.tablet {}