Страшная горизонтальная полоса прокрутки iframe не может быть удалена в IE?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
19
0
47 296
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вы можете попробовать поместить 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, которая в моем случае будет отличаться. Я собираюсь использовать это, и мне нужно будет указать очень большую высоту для iframe, что немного взломано. Но большое спасибо, что я там оказался.

mrjrdnthms 16.09.2008 21:55

Полоса прокрутки - это не свойство <iframe>, это свойство страницы, которую он содержит. Попробуйте поместить overflow-x: hidden в элемент <html> внутренней страницы.

это решение намного лучше, поскольку позволяет сохранить легкий код iframe и способствует инкапсуляции. мне не нужно помнить о добавлении и запоминании синтаксиса.

Danny G 29.09.2011 21:42

Я согласен с @DannyG. Мы миновали эру атрибутов представления в нашей разметке. Решения на чистом CSS предпочтительнее по ряду причин.

DuxPrime 01.08.2012 21:11

Это гораздо лучшее решение, которое позволяет сохранить действующий HTML-код.

Dhaulagiri 04.02.2015 20:01

<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, и я считаю, что установка скрытого переполнения удалит и то, и другое. Это правильно?

mrjrdnthms 16.09.2008 21:03
Ответ принят как подходящий

scrolling = "yes"  horizontalscrolling = "no" verticalscrolling = "yes"

Поместите это в свой тег iFrame.

Вам не нужно возиться с попытками отформатировать это в CSS.

zOMG. Хотя атрибуты горизонтальной и вертикальной прокрутки в MSDN кажутся полностью недокументированными, это помогло решить мою проблему с IE 6.

Simon Lieschke 18.08.2009 07:11

Отличное решение, именно то, что я искал, tyvm.

David 19.07.2010 10:39

Возникла проблема с IE10 (да, наши клиенты все еще его используют), когда мы показываем некоторые пользовательские объявления HTML5 в iframe. Этот трюк у нас не сработал ...

lkartono 17.01.2017 08:08

Все эти решения у меня не работали или меня не устраивали. С помощью прокручиваемого 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%.

Другие вопросы по теме