HTML iframe-스크롤 비활성화


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"Herman- 제 생각 에는 효과가 있습니다. HTML5에 있습니까?
Yagnesh Agola 2013 년

@Yagnesh 내 iframe 샘플을 게시했는데 작동하지 않습니다.
Michał Herman

나는 당신의 코드로 시도했고 스크롤없이 잘 작동합니다. Pls는 iframe이 div 아래에 있는지 확인합니다.
Yagnesh Agola 2013 년

아마도 iframe 내부의 <body>가 <iframe>이 아닌 스크롤바를 추가하고 있습니까?
oriadam

답변:


162

안타깝게도 HTML 및 CSS 속성만으로 HTML5를 완전히 준수하는 것이 가능하다고 생각하지 않습니다. 그러나 다행히도 대부분의 브라우저는 HTML5 사양scrolling 에서 제거 된 속성을 여전히 지원합니다 .

overflow이것은 Firefox 를 잘못 지원 하는 유일한 최신 브라우저이기 때문에 HTML5에 대한 해결책이 아닙니다 .

현재 해결책은 다음 두 가지를 결합하는 것입니다.

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

그러나 이것은 브라우저가 업데이트되면 쓸모 없게 될 수 있습니다. JavaScript 솔루션을 확인하려면 http://www.christersvensson.com/html-tool/iframe.htm

편집 :scrolling="no" IE10, Chrome 25 및 Opera 12.12에서 확인하고 작동합니다.


1
<iframe> 스크롤 속성은 HTML5에서 지원되지 않습니다. 대신 CSS를 사용하십시오. 출처 : w3schools.com/tags/att_iframe_scrolling.asp
리누스

4
@LinusAn 이것은 내 대답의 첫 번째 줄에 나와있는 것입니다. 문제는 브라우저가 HTML4 웹 사이트를 망가뜨릴 수 있기 때문에 실제로는 모두 삭제할 수 없기 때문에 scrolling속성은 유효하지만 유효하지 않은 옵션입니다.
James Donnelly 2014

이것은 정확하지만 Chrome에서는 iframe 내의 요소에서 scrollIntoView가 중단됩니다. 참조 code.google.com/p/chromium/issues/detail?id=137214
피터 브랜드

@Linus-안타깝게도 작동하지 않아야하며 작동하는 브라우저는 부적합합니다. 버튼, 양식 요소 및 iframe과 같은 대체 요소에 오버플로를 적용해서는 안됩니다.
Jimmy Breck-McKye 2015

3
@DaniSpringer이 솔루션은 콘텐츠를 잘라내는 것이 좋습니다. 스크롤 기능없이 iframe을로드하면 지정된 iframe 크기에 맞게 전체 하위 페이지의 크기가 자동으로 조정되지 않습니다.
Nate

20

이 CSS로 동일한 문제를 해결했습니다.

    pointer-events:none;

8
..., 그냥 시각적 스크롤바를 스크롤에 대한 물리적 시도를 차단하는 것
LWC

6
이렇게하면 스크롤을 포함하여 iframe에서 마우스 이벤트가 발생하지 않습니다. 방법은 너무 광범위 강력한 솔루션이 될 수 있습니다
톰 맥켄지

foreignobjectSVG 이미지에 포함 된 iframe에서 스크롤을 방지하기 위해이 기능을 사용해야했습니다 ( overflow: hidden작동하지 않음)
Tim

이것은 마우스 스크롤 휠 (Chromium)을 통한 스크롤을 중지하지 않습니다. 또한 OP가 실제로 스크롤 막대를 숨기고 싶어한다고 생각합니다. 이것이 부분적으로 그 질문을 해결한다고 생각하므로 귀하의 답변을 stackoverflow.com/questions/2712034 로 옮겨야합니다 .
EoghanM 2010 년

감사합니다. 최소한 iframe 스크롤이 비활성화되어 있습니다.
Sören

11

사용하여 작동하는 것 같습니다.

html, body { overflow: hidden; }

IFrame 내부

편집 : 물론 이것은 Iframe의 콘텐츠에 대한 액세스 권한이있는 경우에만 작동합니다 (제 경우에는)


1
하지만 iframe을 사용하는 경우 다른 도메인의 콘텐츠를 포함하는 경우가 많기 때문에 일반적으로 그 안에있는 항목에 액세스 할 수 없습니다.
Tim Malone

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
실제로 이것에 대해 좀 더 자세히 살펴보면, 그 원인은 내가로드하려는 실제 iFrame보다 더 길게 height = ""를 변경 한 것 뿐이라고 생각합니다. 그래서 스크롤을 무의미하게 만들만큼 높이를 길게 만들면 실제로 스크롤 막대가 사라졌습니다. 그래도 전체 페이지를 표시하려고하는데, 달성하려는 것과 다를 수 있습니다.
Zach Imholte 2017 년

이것은 질문에 대한 실제 답변 이라기보다는 댓글처럼 느껴집니다.

1
감사합니다 JDV! 저는 StackOverflow를 처음 사용했기 때문에 댓글을 달았지만 평판 포인트 나 그 이름이 무엇이든 충분하지 않았습니다. 그래서 동의합니다. 당신의지도에 감사드립니다!
Zach Imholte 17.09.17

필요한 담당자를 얻을 때까지 기여할 수있는 방법이 있습니다. stackoverflow.com/help/whats-reputation

0

iframe 태그에이 스타일을 추가합니다 ..

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

8
OverflowHTML5 iFrame에서는 작동하지 않습니다. 이것을 잘못 지원 하는 유일한 브라우저 는 Firefox입니다.
James Donnelly

1
@JamesDonnelly 사실 그는, 그것은 HTML5이다 지정된 didnt한다 우리가 오버 플로우를 사용하는 이유 이잖아
SASI

0

이후 "오버 플로우 : 숨겨진;" 속성이 iFrame 자체에서 제대로 작동하지 않지만 iFrame 내부 의 페이지 본문에 적용될 때 결과를 제공하는 것 같습니다 .

iframe body { overflow:hidden; }

어떤 의외로 했던 그 성가신 스크롤바를 제거, 파이어 폭스와 함께 일을.

그러나 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>

두 번째 옵션 :

<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>

참고 : 다른 요소에 스크롤바가 필요한 경우 {overflow:scroll!important;}해당 요소 에 CSS 를 추가하십시오.


-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
seamless속성은 사양에서 제거되었습니다.
Tim Malone

-5

다음 CSS 코드를 사용할 수 있습니다.

margin-top: -145px; 
margin-left: -80px;
margin-bottom: -650px;

iframe의보기를 제한하기 위해.


3
margin-down새로운 속성 또는 이것을 찾으 셨나요 margin-bottom?
Bjørn-Roger Kringsjå
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.