Высота iFrame 100% вызывает вертикальную полосу прокрутки
Я вижу много вопросов о iFrames высотой 100%, но никто, похоже, не имеет такой же проблемы, как и я.
Что я хочу сделать, так это иметь iFrame, который охватывает весь видовой экран, без полос прокрутки, без установки переполнения: скрытый на теле.
Я получаю нижний край 5px для моего iFrame, который не будет исчезать с помощью css, и это вызывает вертикальный scroolbar. Стандартный совет, похоже, заключается в том, чтобы установить переполнение: скрытое на теле, но это не реально решает проблему, и этого недостаточно для меня.
Здесь представлен супер простой пример jsFiddle. (обратите внимание на двойные вертикальные полосы прокрутки)
Такое поведение для Chrome 15, IE9 и FF9 одинаково для меня.
Ответы
Ответ 1
Это не iframe, создающий полосу прокрутки, пробел после нее
<iframe src="http://www.bbc.co.uk" frameborder="0"></iframe>
<!-- Whitespace here; This is being rendered! -->
</body>
Если вы не хотите его видеть, используйте
* { line-height: 0; }
edit: Оказывается, проблема остается, если вы удалите пробел, но решение одинаков. Iframe отображаются как встроенные элементы по умолчанию (iframe = 'inline frame') и, следовательно, имеют высоту строки, которая вызывает проблему.
В качестве альтернативы вы можете попробовать iframe { display: block; }
или комбинацию обоих решений.
Ответ 2
Update:
рабочий пример в chrome 16.0.*
, firefox 10.*
(видимо, ie9 действует вверх и отображает полосу прокрутки в любом случае - либо отключен, если высота установлена на 99%, либо активна, которая не может прокручиваться, если высота 100%):
поместите следующее в html файл и откройте его (не знаю, что jsfiddle делает по-другому, но он работает не так)
<style>
* {
margin: 0;
padding: 0;
height: 100%;
width: 100%;
/*overflow: auto;*/ /* not needed, this is the default value*/
}
</style>
<iframe src="http://www.bbc.co.uk" frameborder="0"/>
Ответ 3
Не видеть вертикальную полосу прокрутки вне jsFiddle с этим:
<html>
<head>
<style>
body {
padding: 0;
margin: 0;
}
iframe {
margin: 0;
padding: 0;
height: 100%;
width: 100%;
overflow: auto;
}
</style>
</head>
<body>
<iframe src="http://www.bbc.co.uk" frameborder="0"/>
</body>
</html>
РЕДАКТИРОВАТЬ: Здесь находится фрагмент под вкладками Элементы того, что выбирается при проверке пробела в Chrome.
![Developer Tools Snip]()
Ответ 4
Подводя итог этому:
- пробел перед вызовом 4px пробела в буфере iframe.
- пробел после csuses 4px пробела после iframe.
Это связано с встроенным символом iframe, как указано в первом сообщении.
Ответ 5
Чтобы предотвратить прокрутку, попробуйте следующее:
CSS
html, body { height:100%; margin:0;}
.bdr { border: thick solid grey }
.h100 { height:100%;}
.w100 { Width: 100% }
.bbox { box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.vat { font-size: 0; vertical-align:top}
HTML:
<body class="bbox"><!-- no WS here--><iframe
class="bdr h100 w100 vat bbox" name="iframe1"
src="http://www.bbc.co.uk"> </iframe><!--no WS here either--></body>
Стиль .bbox предотвращает рост подвыборок..Vat необходим для IE и Firefox.
Альтернативой для .vat является: display: block. Или
display: встроенный блок + вертикальное выравнивание: верх
.brd предназначен для демонстрационных целей.