媒体查询无法在iframe中运行

时间:2014-12-01 11:17:03

标签: html css iframe media-queries

我有一个响应的网页。它利用媒体查询。

但iframe中加载的同一页面无效。

例如,考虑到我的网页,当屏幕宽度小于640px时,我将背景颜色设为红色。

@media only screen and (max-device-width : 640px) {

    .header-text {
        background-color: red;
    }
}

因此,当我在新标签页中加载该窗口并使浏览器宽度小于640像素时,背景颜色变为红色。

但是,在320 * 480维度的iframe中加载时,同一窗口的背景颜色没有红色。

如何让媒体查询在iframe中运行?

4 个答案:

答案 0 :(得分:30)

尝试这种方式,而不是device只定位width

更改

@media only screen and (max-device-width : 640px) {

@media only screen and (max-width : 640px) {

此外,如果您想避免在样式表中考虑媒体查询声明的顺序,建议同时定位 min max 视口宽度< / p>

@media screen and (min-width: 320px) and (max-width: 640px) {
    .header-text {
       background-color: blue;
    }
}

答案 1 :(得分:8)

将meta bellow包含在加载iframe的HTML中,它应该可以工作,至少在Android设备上。

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

答案 2 :(得分:6)

我最终不得不定位iframes的宽度。 (可能不适用于所有情况)
但我所做的是使iframe 100%宽度,然后它会调整窗口大小,所以我所做的只是目标iframe的px而不是窗口

答案 3 :(得分:0)

我遇到的一个类似的问题是媒体查询无法按预期工作,是iframe上的src值为空。

我有一个沙盒iframe可以预览另一页内的电子邮件模板。在使用服务的Ajax调用获取html数据后,我使用javascript注入来填充iframe的html内容。

对我来说,解决方案是创建一个空的html文件,将此文件设置为iframe src,然后使用javascript更新内容。

页面上的代码:

<iframe src="/myfolder/dummy.html"></iframe>

iframe src的代码:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <meta name="description" content="corrects media queries fails of email template previews" />
  <title></title>
</head>

<body>

</body>

</html>