【问题标题】:Does the browser's address bar dimensions affect the CSS media queries?浏览器的地址栏尺寸会影响 CSS 媒体查询吗?
【发布时间】:2015-05-05 21:53:35
【问题描述】:

当我为我的网站编写媒体查询时,我想到了这个: 浏览器的地址栏会影响 CSS 媒体查询吗?

当我编码时:

/* Portrait */
@media screen 
  and (device-width: 320px) 
  and (device-height: 640px)  
  and (orientation: portrait) {

}

我在考虑浏览器地址栏的高度吗? 地址栏会减去屏幕视口的像素吗?

我必须考虑这个媒体查询吗?

/* Portrait */
@media screen 
  and (device-width: 320px - <AddressBarHeight>) 
  and (device-height: 640px - <AddressBarHeight>)  
  and (orientation: portrait) {

}

【问题讨论】:

  • 您使用的是设备高度/宽度,因此您正在寻找设备屏幕的物理尺寸。
  • 不,只有视口。您的页面对浏览器的 chrome(呈现页面之外的 UI 元素)一无所知。

标签: html css media-queries responsiveness


【解决方案1】:

device-heightdevice-width 与屏幕上显示的内容无关。它们仅反映整个屏幕的整体尺寸。

设备宽度

“设备宽度”媒体特征描述了输出设备的渲染表面的宽度。对于连续媒体,这是屏幕宽度。对于分页媒体,这是页面大小的宽度。

设备高度

“设备高度”媒体功能描述了输出设备的渲染表面的高度。对于连续媒体,这是屏幕高度。对于分页媒体,这是页面大小的高度。

——Media Queries W3C Recommendation

示例

例如,我使用的是 1920x1080 像素的显示器。使用针对恰好 1920px 的 device-width 和正好 1080px 的 device-height 的媒体查询,我的显示器上的以下代码 sn-p 将显示红色背景,即使 sn-p 本身被限制在更小的范围内区域(660x201px):

@media (device-width: 1920px) and (device-height: 1080px) {
  body {
    background: red;
  }
}

结果(图片)

【讨论】:

  • 提前感谢您的时间和回答!但是我们如何处理地址栏呢?例如,如果我要让我的网站对手机做出响应,我的登录页面不会全屏显示,因为在我向下滚动之前,地址栏会占用我的屏幕空间。我该如何处理?我该如何“解决”这个小问题?
  • @AndreaGiachetto 您可以使用viewport 元标记:Using the viewport meta tag to control layout on mobile browsers 设置要在移动设备上使用的视口尺寸。 &lt;meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"&gt;。这将强制显示与设备的宽度和高度完全相同,无论地址栏如何。
【解决方案2】:

不,您不必考虑这一点,因为device-widthdevice-height 是设备整个显示的值。 widthheight 功能描述了实际渲染空间的宽度和高度。

例如,虽然您的 device-height 可能等于 640 像素,但视口的实际 height 可能只有 580 像素。一些 CSS 你可以考虑只针对特定尺寸的视口

/* Portrait */
@media screen 
  and (min-width: 320px) 
  and (min-height: 580px)  
  and (orientation: portrait) {

}

您正在寻找隐藏状态栏的方法,因为它占用了太多空间。有几个选择。我成功使用的一个是一点点 Javascript:

window.addEventListener("load",function() {
    setTimeout(function(){
        window.scrollTo(0, 1);
    }, 0);
});

这会等到页面加载并滚动一个像素,这将导致地址栏隐藏,这不会永久删除它。

还有一个元标记可以用来隐藏 iOS 设备上的状态栏

<meta name="apple-mobile-web-app-capable" content="yes" />

【讨论】:

  • 感谢您的回答!我知道设备宽度和设备高度针对设备的整个显示,但是我如何控制地址栏“窃取”我的设计的空间?我可以通过媒体查询来调整吗?
  • 您无法通过媒体查询来控制它,但是您可以使用一些元标记来定位某些移动浏览器以帮助减小它们的大小。 Mobile safari 有一个元标记,你可以用它来缩小地址栏,我会更新我的答案
【解决方案3】:

不!媒体查询使您的页面仅响应。

【讨论】:

  • 嗯?这不是他要问的。
  • dinesh123,为什么这么严重?
猜你喜欢
  • 1970-01-01
  • 2012-11-30
  • 2013-04-24
  • 2012-05-29
  • 2013-03-15
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
相关资源
最近更新 更多