У меня есть iframe. Контент шире, чем ширина, которую я устанавливаю, поэтому iframe получает горизонтальную полосу прокрутки. Я не могу увеличить ширину iframe, поэтому хочу просто удалить полосу прокрутки. Я попытался установить для свойства scroll значение «no», но это убивает обе полосы прокрутки, и мне нужна вертикальная. Я попытался установить overflow-x на «скрытый», и это убило горизонтальную полосу прокрутки в ff, но не в IE. мне грустно.





Вы можете попробовать поместить iframe внутри div, а затем использовать div для прокрутки. Вы можете без проблем управлять прокруткой div в IE, у IE действительно проблемы с прокруткой iframe. Вот краткий пример, который должен помочь.
<html>
<head>
<title>iframe test</title>
<style>
#aTest {
width: 120px;
height: 50px;
padding: 0;
border: inset 1px #000;
overflow: auto;
}
#aTest iframe {
width: 100px;
height: 1000px;
border: none;
}
</style>
</head>
<body>
<div id = "aTest">
<iframe src = "whatever.html" scrolling = "no" frameborder = "0"></iframe>
</div>
</body>
</html>
Полоса прокрутки - это не свойство <iframe>, это свойство страницы, которую он содержит. Попробуйте поместить overflow-x: hidden в элемент <html> внутренней страницы.
это решение намного лучше, поскольку позволяет сохранить легкий код iframe и способствует инкапсуляции. мне не нужно помнить о добавлении и запоминании синтаксиса.
Я согласен с @DannyG. Мы миновали эру атрибутов представления в нашей разметке. Решения на чистом CSS предпочтительнее по ряду причин.
Это гораздо лучшее решение, которое позволяет сохранить действующий HTML-код.
<iframe style = "overflow:hidden;" src = "about:blank"/>
должен работать в IE. В IE6 были проблемы с поддержкой overflow-x и overflow-y.
Следует также отметить, что граница IE в iframe может быть удалена только в том случае, если вы установите атрибут «frameborder» в camelCase.
<iframe frameBorder = "0" style = "overflow:hidden;" src = "about:blank"/>
Было бы неплохо, если бы вы могли правильно стилизовать его с помощью CSS, но он не работает в IE.
В моем случае я хочу удалить полосу прокрутки x, но не y, и я считаю, что установка скрытого переполнения удалит и то, и другое. Это правильно?
scrolling = "yes" horizontalscrolling = "no" verticalscrolling = "yes"
Поместите это в свой тег iFrame.
Вам не нужно возиться с попытками отформатировать это в CSS.
zOMG. Хотя атрибуты горизонтальной и вертикальной прокрутки в MSDN кажутся полностью недокументированными, это помогло решить мою проблему с IE 6.
Отличное решение, именно то, что я искал, tyvm.
Возникла проблема с IE10 (да, наши клиенты все еще его используют), когда мы показываем некоторые пользовательские объявления HTML5 в iframe. Этот трюк у нас не сработал ...
Все эти решения у меня не работали или меня не устраивали. С помощью прокручиваемого DIV вы можете убрать горизонтальную полосу прокрутки, но тогда у вас всегда будет вертикальная.
Итак, для моего сайта, где я могу быть уверен, что контролирую фиксированную высоту всех фреймов, следующее решение работает очень хорошо. Он просто скрывает горизонтальную полосу прокрутки с помощью DIV :)
<!-- This DIV is a special hack to hide the horizontal scrollbar in IE iframes -->
<!--[if IE]>
<div id = "ieIframeHorScrollbarHider" style = "position:absolute; width: 768px; height: 20px; top: 850px; left: 376px; background-color: black; display: none;">
</div>
<![endif]-->
<script type = "text/javascript">
if (document.getElementById("idOfIframe") != null && document.getElementById("ieIframeHorScrollbarHider") != null)
{
document.getElementById("ieIframeHorScrollbarHider").style.display = "block";
}
</script>
Вы также можете попробовать установить ширину тела страницы, включенной в iframe, равной 99%.
Спасибо за это решение. Единственная проблема заключается в том, что вам нужно определить фиксированную высоту для содержимого iframe, которая в моем случае будет отличаться. Я собираюсь использовать это, и мне нужно будет указать очень большую высоту для iframe, что немного взломано. Но большое спасибо, что я там оказался.