HTMLiframe-スクロールを無効にする


84

私のサイトには次のiframeがあります。

<iframe src="<<URL>>" height="800" width="800" sandbox="allow-same-origin allow-scripts allow-forms" scrolling="no" style="overflow: hidden"></iframe>

そして、それはスクロールバーを持っています。
それらを取り除く方法は?


5
ハーマン-scrolling="no"うまくいくはずだと思う。それは私にとってはうまくいく。HTML5ですか?
Yagnesh Agola 2013年

@Yagnesh iframeのサンプルを投稿しましたが、機能していません。
のMichałハーマン

私はあなたのコードで試しました、そしてそれはスクロールなしでうまく働きます。plsはiframeがdivの下にあるかどうかをチェックします。
Yagnesh Agola 2013年

おそらく、iframe内の<body>は、<iframe>ではなく、スクロールバーを追加していますか?
oriadam 2015年

回答:


162

残念ながら、HTMLとCSSのプロパティだけでHTML5に完全に準拠することは不可能だと思います。ただし、幸いなことに、ほとんどのブラウザは引き続きscrollingプロパティをサポートしています(HTML5仕様から削除されました)。

overflowこれを誤ってサポートしいる最新のブラウザはFirefoxだけなので、はHTML5のソリューションではありません。

現在の解決策は、2つを組み合わせることです。

<iframe src="" scrolling="no"></iframe>
iframe {
  overflow: hidden;
}

ただし、ブラウザが更新されると、これは廃止される可能性があります。JavaScriptソリューションについてこれを確認することをお勧めします:http//www.christersvensson.com/html-tool/iframe.htm

編集:確認しscrolling="no"ました。IE10、Chrome 25、Opera12.12で動作します。


1
<iframe>スクロール属性はHTML5ではサポートされていません。代わりにCSSを使用してください。出典:w3schools.com/tags/att_iframe_scrolling.asp
Linus

4
@LinusAnこれは私の答えの最初の行が述べていることです。問題は、ブラウザがHTML4 Webサイトを壊してしまうため、実際には完全にドロップできないため、scrolling無効なオプションではありますが、属性は実行可能であるということです。
James Donnelly 2014

これは正しいですが、Chromeではiframe内の要素のscrollIntoViewが壊れます。code.google.com/p/chromium/issues/detail?id=137214
Peter Brand

@ Linus-残念ながら、それは機能しないはずであり、それが機能するブラウザはすべて準拠していません。ボタン、フォーム要素、iframeなどの置き換えられた要素にオーバーフローを適用しないでください。
Jimmy Breck-McKye 2015

3
@DaniSpringerこのソリューションは、コンテンツを切り取ることが想定されています。スクロール機能なしでiframeを読み込んでも、指定されたiframeのサイズに合わせて子ページ全体のサイズが自動的に変更されることはありません。
ネイト

20

私はこのCSSで同じ問題を解決しました:

    pointer-events:none;

8
視覚的なスクロールバーではなく、物理的なスクロールの試みをブロックしているようです...
LWC

6
これにより、スクロールなど、iframeで発生するマウスイベントが防止されます。広すぎて堅牢なソリューションにはなりません
Tom McKenzie

これを使用foreignobjectして、SVG画像のに埋め込まれているiframeでのスクロールを防ぐ必要がありました(機能overflow: hiddenしませんでした)
Tim

これは、マウスのスクロールホイール(Chromium内)を介したスクロールを停止しません。また、OPは実際にスクロールバーを非表示にしたいと考えています。これで問題が部分的に解決すると私は信じているので、答えをstackoverflow.com/questions/2712034に移動する必要があります。
EoghanM

おかげで、少なくともiframeのスクロールは無効になっています。
ソレン

11

それを使用して動作するようです

html, body { overflow: hidden; }

IFrame

編集:もちろん、これは、Iframeのコンテンツ(私の場合は持っている)にアクセスできる場合にのみ機能します


1
ただし、iframeを使用する場合、別のドメインにコンテンツを含めるために使用されることが多いため、通常はiframeに含まれるものにアクセスできません。
ティム・マローン2016年

2

すべてのコンテンツを次のように設定します。

#yourContent{
 width:100%;
height:100%;  // in you csss
}

重要なのは、iframeのスクロールは、iframe自体ではなく、コンテンツによって設定されるということです。

CSSを使用して内部のコンテンツを100%に設定し、HTMLのiframeに必要なものを設定します


1

現在のブラウザ(Google Chromeバージョン60.0.3112.113(公式ビルド)(64ビット))でscrolling = "no"を試しましたが、機能しませんでした。ただし、scroll = "no"は機能しました。試す価値があるかもしれません

<iframe src="<<URL>>" height="800" width="800" sandbox="allow-same-origin allow-scripts allow-forms" scroll="no" style="overflow: hidden"></iframe>

1
実際、これをもう少し掘り下げてみると、原因は、height = ""をロードしようとしている実際のiFrameよりも長く変更しただけだと思います。したがって、高さを十分に長くしてスクロールを無意味にすることで、実際にはスクロールバーが消えてしまいました。私はページ全体を表示しようとしていますが、これはあなたが達成しようとしているものとは異なる場合があります。
Zach Imholte 2017

これは、質問に対する実際の回答というよりも、コメントのように感じます。

1
JDVに感謝します!私はStackOverflowを初めて使用するので、コメントしようとしましたが、十分なレピュテーションポイントやそれが呼ばれるものがありませんでした。だから私は同意します、それはコメントであるべきでした。あなたの指導に感謝します!
Zach Imholte 2017

必要な担当者を取得するまで貢献できる方法がいくつかあります。stackoverflow.com/help/whats-reputation

0

このスタイルをiframeタグに追加します。

overflow-x:hidden;
overflow-y:hidden;

8
OverflowHTML5iFrameでは機能しません。これを誤ってサポートしいるブラウザはFirefoxだけです。
James Donnelly 2013年

1
@JamesDonnelly実際、彼はそれがhtml5であると指定しなかったので、オーバーフローを使用しました
sasi 2013年

0

「オーバーフロー:非表示」以降 プロパティはiFrame自体では正しく機能しませんが、iFrameのページの本文に適用すると結果が得られるようです。これを試してみました:

iframe body { overflow:hidden; }

これは驚くほどでしたそれらの迷惑なスクロールバーを削除し、Firefoxで仕事を。

ただし、Safariでは、iframeの右側、コンテンツと境界線の間に、幅2ピクセルの奇妙な透明線が表示されています。奇妙な。


0

以下のいずれかのオプションのようなスタイルのiframeを追加するだけです。これで問題が解決することを願っています。

最初のオプション:

<iframe src="https://www.skyhub.ca/featured-listing" style="position: absolute; visibility: hidden;" onload="this.style.position='static'; this.style.visibility='visible';" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" height="400px" width="1200px" allowfullscreen></iframe>

2番目のオプション:

<iframe src="https://www.skyhub.ca/featured-listing" style="display: none;" onload="this.style.display='block';" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" height="400px" width="1200px" allowfullscreen></iframe>

0

これは私のために働きます:

<style>
*{overflow:hidden!important;}
html{overflow:scroll!important;}
</style>

注:他の要素にスクロールバーが必要な場合は、その要素にもcss{overflow:scroll!important;}を追加してください


-1

このフレームの場合:

    <iframe src="" name="" id=""></iframe>

私は自分のCSSコードでこれを試しました:

    iframe#put the value of id here::-webkit-scrollbar {
         display: none;
    }

-1

html5バージョン以下

iframe {
    overflow:hidden;
}

html5で

<iframe seamless="seamless"  ....>


iframe[seamless]{

   overflow: hidden;
}

しかし、まだ正しくサポートされていません


2
これthisに従って、seamless属性は仕様から削除されました。
ティム・マローン2016年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.