全屏媒体查询

Posted

技术标签:

【中文标题】全屏媒体查询【英文标题】:Media query for fullscreen 【发布时间】:2015-12-31 11:29:00 【问题描述】:

我使用以下媒体查询在全屏模式下应用我的 CSS 覆盖:

@media (device-width: 100vw) and (device-height: 100vh) 
  .content 
    padding: 0px !important;
  

In 在 Firefox 中完美运行,但在 Chrome 中非常不可靠(Windows 7 x64 上的两个最新版本)。我只能在不处于全屏模式但需要反转查询时尝试应用我的覆盖。所以我的问题是:

    Chrome 应该支持查询吗? 如何否定它(逻辑非)?

附言

我的viewport 声明如下:

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

【问题讨论】:

我在 Linux 上遇到了相反的情况:这个媒体查询在 Chrome 中有效,在 Firefox 上无效 【参考方案1】:

使用新的 css 功能display-mode

@media all and (display-mode: fullscreen) 
  .content 
    padding: 0px;
  

同时避免使用!important,因为它是bad practice

您可以使用not 否定@media 规则。详情请见here。

【讨论】:

问题还问如何否定它!?【参考方案2】:

收听全屏事件可能不那么优雅,但更健壮,然后可能会在正文中添加一个is-fullscreen 类,这样您就可以像这样编写规则:

body.is-fullscreen .content  padding...

例如:

document.addEventListener('fullscreenchange', function() 
  document.body.classList.toggle('is-fullscreen', document.fullscreenEnabled);
);

此活动具有供应商前缀版本,因此请确保您使用的是您需要的版本。

【讨论】:

以上是关于全屏媒体查询的主要内容,如果未能解决你的问题,请参考以下文章

退出 html5 全屏模式时 css 媒体查询不起作用 - safari

使用媒体查询隐藏 HTML5 视频

响应式网页设计 - 添加正确的媒体查询

投影媒体查询:浏览器支持和解决方法?

从 chrome 浏览器打印错误地应用来自媒体查询的移动类

媒体查询分组而不是匹配的多个分散的媒体查询