javascript - @media 仅屏幕对比。框架

标签 javascript css mobile

所以我有点进退两难。如果在计算机上查看,我有一个链接显示在 iframe 中,如果在移动设备上查看,则显示在父页面中。

如果在移动设备上查看,我只希望用户横向查看页面。所以,我使用了以下代码:

<style type="text/css">
#warning-message { display: none; }
@media only screen and (orientation:portrait){
    #wrapper { display:none; }
    #warning-message { display:block; }
}
@media only screen and (orientation:landscape){
    #warning-message { display:none; }
}
</style>

....

<div id="wrapper">
<!-- page -->
</div>
<div id="warning-message">
please turn to landscape
</div>

但是,问题出在 iframe 上。如果在计算机上查看,将显示警告消息 div,而不是包装内容,尽管计算机屏幕是横向的。我认为这是因为 iframe 是纵向的。

有谁知道在非移动设备中只显示包装 div 内容而不显示警告消息(即有效地将所有非移动设备视为横向)的方法吗?

我希望这个问题是有道理的。

在此先感谢您的帮助。

最佳答案

不,仅靠 CSS 是不可能的。您的假设是正确的,即 iframe 本身如果比宽度高,也会触发纵向方向规则,因为 iframe 本质上是一个沙盒浏览器。如果您在具有“纵向”大小的桌面浏览器中打开它,您会得到相同的结果。

解决方法可能是,因为您已经在检测桌面/移动浏览器,所以在 iframe 中打开时向 URL 添加一个特殊的 GET 参数,即。将 ?iframe=1 添加到 URL,然后在代码中(或者如果需要甚至在 JS 中)检测此参数以将额外的类添加到您的 htmlbody 元素。然后,您可以使用这个额外的类来扩展媒体查询规则。

话虽如此,我强烈反对您现在正在做的事情 - 媒体查询都是为了让网站和应用程序更加动态,而不是限制性。禁止您的用户以他们想要的方式握住他们的设备只会引起提示和刺激,如果您只是使用相同的媒体查询来实现替代布局或缩小横向内容以适应纵向,则不需要这么重要。

关于javascript - @media 仅屏幕对比。框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345450/

相关文章:

javascript - 某些 Android 设备在渲染 Canvas 元素时速度极慢

javascript - 使用 ObjLoader three.js 后如何计算边界框

javascript - async.waterfall 回调在哪里定义

html - 什么语言的 css 会减少我使用的代码量?

css - Shopify - 移动图像在桌面上加载 1 秒 - 即使它是隐藏的

android - 哪些移动网络类型允许通话期间的 http 流量?

javascript - 为什么在 ASP.NET MVC 中我得到 JSON 而不是 FileDownload?

javascript - 导航集成后不再显示 HTML 图像

html - 移动网站背景图片未调整大小

html - 页脚调整问题