263

我有这个@media设置:

HTML

<head>
  <meta name="viewport" content="width=device-width, user-scalable=no" />
</head>

CSS

@media screen and (min-width: 769px) {
    /* STYLES HERE */
}

@media screen and (min-device-width: 481px) and (max-device-width: 768px) { 
    /* STYLES HERE */
}

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

使用此设置,它可以在 iPhone 上运行,但不能在浏览器中运行。

是因为我已经device在元数据中,而且可能有max-width:480px吗?

4

6 回答 6

408

我发现最好的方法是为旧版浏览器编写默认 CSS,因为旧版浏览器(包括 IE 5.5、6、7 和 8)无法读取@media. 当我使用 时@media,我会这样使用它:

<style type="text/css">
    /* default styles here for older browsers. 
       I tend to go for a 600px - 960px width max but using percentages
    */
    @media only screen and (min-width: 960px) {
        /* styles for browsers larger than 960px; */
    }
    @media only screen and (min-width: 1440px) {
        /* styles for browsers larger than 1440px; */
    }
    @media only screen and (min-width: 2000px) {
        /* for sumo sized (mac) screens */
    }
    @media only screen and (max-device-width: 480px) {
       /* styles for mobile browsers smaller than 480px; (iPhone) */
    }
    @media only screen and (device-width: 768px) {
       /* default iPad screens */
    }
    /* different techniques for iPad screening */
    @media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait) {
      /* For portrait layouts only */
    }

    @media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape) {
      /* For landscape layouts only */
    }
</style>

但是你可以用你的@media. 这只是我在为所有浏览器构建样式时发现的最适合我的一个示例。

iPad CSS 规范。

还!如果您正在寻找可印刷性,您可以使用@media print{}.

于 2012-11-25T11:47:55.520 回答
45

根本问题是使用max-device-widthvs plain old max-width

使用“设备”关键字的目标是屏幕的物理尺寸,而不是浏览器窗口的宽度。

例如:

@media only screen and (max-device-width: 480px) {
    /* STYLES HERE for DEVICES with physical max-screen width of 480px */
}

相对

@media only screen and (max-width: 480px) {
    /* STYLES HERE for BROWSER WINDOWS with a max-width of 480px. 
       This will work on desktops when the window is narrowed.  */
}
于 2014-07-08T19:24:23.623 回答
26

如果小型设备上的网站行为像桌面屏幕,那么您必须先将此元标记放入标题中

<meta name="viewport" content="width=device-width, initial-scale=1">

对于媒体查询,您可以将其设置为

这将涵盖您所有的手机/手机宽度

 @media only screen and (min-width: 200px) and (max-width: 767px)  {
    //Put your CSS here for 200px to 767px width devices (cover all width between 200px to 767px //
   
    }

对于 iPad 和 iPad pro,您必须使用

  @media only screen and (min-width: 768px) and (max-width: 1024px)  {
        //Put your CSS here for 768px to 1024px width devices(covers all width between 768px to 1024px //   
  }

如果你想为横向模式添加 css,你可以添加这个

和(方向:风景)

  @media only screen and (min-width: 200px) and (max-width: 767px) and (orientation : portrait) {
        //Put your CSS here for 200px to 767px width devices (cover all mobile portrait width //        
  }
于 2019-05-02T10:21:24.763 回答
9

属性的正确值content应包括initial-scale

<meta name="viewport" content="width=device-width, initial-scale=1">
                                                   ^^^^^^^^^^^^^^^

于 2016-11-11T21:06:43.383 回答
4

如果您想在浏览器中同时包含最小和最大宽度以实现响应,那么您可以使用以下内容:

 @media (min-width: 768px) and (max-width: 992px){...}
 @media (min-width: 480px) and (max-width: 767px) {...}
于 2021-08-16T12:23:21.210 回答
0

对于某些 iPhone,您必须像这样放置视口

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, shrink-to-fit=no, user-scalable=0" />
于 2020-04-19T15:06:04.583 回答