Iframe, встроенный с высотой 100% в div, имеет странный нижний край
Я хочу обернуть элемент iframe
height 100%
и width 100%
в div with fixed size
.
Я пробовал вот так:
<div style="height: 410px; width: 480px; border: 1px solid black; overflow: auto;">
<iframe src="" style="border: none; background: blue;" height="100%" width="100%"></iframe>
</div>
С более старыми doctypes он работает отлично, но как только я добавляю HTML-тип документа <!DOCTYPE html>
, появляется тревожная полоса прокрутки, которая позволяет перемещать весь элемент iframe
вверх и вниз внутри окружающего div и если вы прокручиваете полностью вниз есть странное пространство, я не могу объяснить.
Когда я удаляю свойство overflow: auto;
из div-стиля, он тоже работает, но это не может быть решением.
Я не понимаю, почему это странное пространство/маржа ниже элемента iframe
?
Вот демоверсию, которую вы можете попробовать самостоятельно: http://jsfiddle.net/tmuecksch/b5jgn/
Я попробовал его в Safari 7.0 и Firefox 23.0.1.
Ответы
Ответ 1
Добавить display:block
для вашего элемента iframe
- без этого, он отображается как встроенное поле, и поэтому остается пространство для недостроек глифов, таких как g, p, f и т.д. (гипотетический) текст которые могут отображаться в одной строке.
Смотрите скрипту: http://jsfiddle.net/b5jgn/2/
(vertical-align:bottom
для iframe также будет работать.)
Ответ 2
iframe { vertical-align:bottom; }
или
iframe { display:block; }
Ответ 3
Причина overflow:auto
позволяет прокручивать div, если внутренний контент не подходит, и с высотой 100%, вызывающей конфликты двух стилей. Если бы они не теоретически, iframe мог продолжать расширяться.
Изменение overflow:auto
до overflow:hidden
или даже удаление overflow
исправят эту проблему
Ответ 4
По-моему, лучше использовать новый атрибут seamless
из HTML5. Вы можете прочитать об этом и других новых атрибутах здесь. Таким образом, ваш код будет выглядеть так: <iframe src="" class="" seamless="seamless" style="border: none; background: blue;" height="100%" width="100%"></iframe>
. К сожалению, довольно большая проблема - поддержка браузера для этого атрибута. Однако браузеры, обновленные в 2013 году, должны функционировать. Позвольте мне теперь, если это сработает! Я тестирую его в Opera 15.0 и Chrome 29, и он работает.