Медиа-запросы, протекающие по кадрам

Вот несколько HTML:

<iframe src="test.html" style="width: 200px; height: 100px;"></iframe>
<iframe src="test.html" style="width: 800px; height: 100px;"></iframe>

Страница test.html содержит некоторые CSS из внешнего файла:

<link rel="stylesheet" type="text/css" href="style.css" />

И таблица стилей имеет:

@media all and (max-width: 600px) {
  body {background-color: red;}
}

Вышеприведенное упрощено, но достаточно, чтобы продемонстрировать проблему: обе страницы красные, несмотря на то, что один из них явно шире другого. Страница демонстрации

Что дает?

(Примечание: протестировано в IE и Chrome - Chrome был в порядке, один красный и другой белый.)

Ответы

Ответ 1

Как вы можете прочитать этот ответ, Internet Explorer 9 поддерживает мультимедийные запросы CSS3, но не внутри фреймов, когда CSS, содержащий медиа-запрос, находится во внешнем файле, поэтому вы должны поместить свой медиа-запрос в начало страницы test.html. Предыдущие версии IE не поддерживают медиа-запросы изначально, но вы можете использовать javascript-библиотеку (см. response.js или css3-mediaqueries-js), чтобы решить эту проблему.

Ответ 2

Вы можете выполнить задание, используя jquery со следующим script:

<script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
<script>
    $(document).ready(function() {
        if ($(document).width() < 600) {
            $('body').css('background-color', 'red');
        };
    });
</script>