Iframe HTML - tắt cuộn


84

Tôi có iframe sau trong trang web của mình:

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

Và nó có các thanh cuộn.
Làm thế nào để có được loại bỏ chúng?


5
Herman - Tôi nghĩ scrolling="no"nên làm việc. Nó hiệu quả với tôi. nó có trong HTML5 không?
Yagnesh Agola,

@Yagnesh Tôi đã gửi cho bạn mẫu iframe của tôi và nó không hoạt động.
Michał Herman,

Tôi đã thử với mã của bạn và nó hoạt động tốt mà không cần cuộn. Xin vui lòng kiểm tra xem iframe nằm dưới bất kỳ div nào.
Yagnesh Agola

Có lẽ <body> bên trong iframe đang thêm các thanh cuộn chứ không phải <iframe>?
oriadam

Câu trả lời:


162

Thật không may, tôi không tin rằng nó có thể hoàn toàn phù hợp với HTML5 chỉ với các thuộc tính HTML và CSS. Tuy nhiên, may mắn thay, hầu hết các trình duyệt vẫn hỗ trợ thuộc scrollingtính (đã bị xóa khỏi đặc tả HTML5 ).

overflowkhông phải là giải pháp cho HTML5 vì trình duyệt hiện đại duy nhất hỗ trợ sai điều này là Firefox.

Một giải pháp hiện tại sẽ là kết hợp cả hai:

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

Nhưng điều này có thể bị lỗi thời khi trình duyệt cập nhật. Bạn có thể muốn kiểm tra điều này để tìm giải pháp JavaScript: http://www.christersvensson.com/html-tool/iframe.htm

Chỉnh sửa: Tôi đã kiểm tra và scrolling="no"sẽ hoạt động trong IE10, Chrome 25 và Opera 12.12.


1
Thuộc tính cuộn <iframe> không được hỗ trợ trong HTML5. Sử dụng CSS để thay thế. Nguồn: w3schools.com/tags/att_iframe_scrolling.asp
Linus

4
@LinusĐây là dòng đầu tiên trong câu trả lời của tôi. Vấn đề là mặc dù các trình duyệt không thể thực sự loại bỏ nó hoàn toàn vì nó sẽ phá vỡ các trang web HTML4, vì vậy scrollingthuộc tính vẫn là một tùy chọn khả thi, mặc dù không hợp lệ.
James Donnelly

Điều này đúng, nhưng trong Chrome, điều này phá vỡ scrollIntoView trên các phần tử trong iframe. Xem code.google.com/p/chromium/issues/detail?id=137214
Peter Brand

@Linus - rất tiếc, điều đó sẽ không hoạt động và bất kỳ trình duyệt nào mà nó hoạt động đều không tuân thủ: không nên áp dụng tràn cho các phần tử thay thế như nút, phần tử biểu mẫu và iframe.
Jimmy Breck-McKye,

3
@DaniSpringer Giải pháp này ĐƯỢC HỖ TRỢ để cắt bỏ nội dung. Việc tải iframe mà không có khả năng cuộn sẽ không tự động thay đổi kích thước của toàn bộ trang con để vừa với kích thước iframe được chỉ định.
Nate

20

Tôi đã giải quyết vấn đề tương tự với css này:

    pointer-events:none;

8
Có vẻ như để ngăn chặn các nỗ lực về thể chất để cuộn, chỉ cần không phải là thanh cuộn hình ảnh ...
LWC

6
Điều này sẽ ngăn mọi sự kiện chuột kích hoạt trên iframe, bao gồm cả thao tác cuộn. Cách quá rộng để trở thành một giải pháp mạnh mẽ
Tom McKenzie

Tôi đã sử dụng điều này để ngăn chặn di chuyển trong một iframe được nhúng trong một foreignobjecttrong một hình ảnh SVG (chỉ cần overflow: hiddenkhông làm việc)
Tim

Thao tác này không ngừng cuộn qua con lăn chuột (trong Chromium). Ngoài ra, tôi tin rằng OP muốn thực sự ẩn các thanh cuộn; bạn nên chuyển câu trả lời của mình sang stackoverflow.com/questions/2712034 vì tôi tin rằng điều này giải quyết một phần câu hỏi đó.
EoghanM

Cảm ơn, ít nhất thì tính năng cuộn iframe đã bị tắt.
Sören

11

Nó dường như hoạt động bằng cách sử dụng

html, body { overflow: hidden; }

bên trong IFrame

chỉnh sửa: Tất nhiên điều này chỉ hoạt động, nếu bạn có quyền truy cập vào nội dung của Iframe (tôi có trong trường hợp của mình)


1
Tuy nhiên, khi sử dụng iframe, bạn thường không thể truy cập nội dung trong đó, bởi vì nó thường để bao gồm nội dung trên một miền khác.
Tim Malone

2

Đặt tất cả nội dung thành:

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

Vấn đề là cuộn iframe được đặt bởi nội dung KHÔNG phải bởi iframe của chính nó.

đặt nội dung thành 100% bên trong bằng CSS và mong muốn cho iframe trong HTML


1

Tôi đã thử cuộn = "không" trong trình duyệt hiện tại của mình (Phiên bản Google Chrome 60.0.3112.113 (Bản dựng chính thức) (64-bit)) và điều đó không hoạt động. Tuy nhiên, scroll = "no" đã hoạt động. Có thể đáng để thử

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

1
thực sự, tìm hiểu kỹ hơn một chút về vấn đề này, tôi nghĩ nguyên nhân chỉ là do tôi thay đổi chiều cao = "" để dài hơn iFrame thực mà tôi đang cố tải. Vì vậy, việc làm cho chiều cao đủ dài để làm cho việc cuộn trở nên vô nghĩa thực sự đã khiến thanh cuộn biến mất đối với tôi. Tuy nhiên, tôi đang cố gắng hiển thị toàn bộ trang, có thể khác với những gì bạn đang cố gắng đạt được.
Zach Imholte

Điều này giống như một bình luận hơn là một câu trả lời thực sự cho câu hỏi.

1
Cảm ơn JDV! Tôi mới sử dụng StackOverflow nên tôi đã cố gắng bình luận nhưng không có đủ điểm danh tiếng hoặc bất cứ điều gì được gọi. Vì vậy, tôi đồng ý, nó nên được một bình luận. Đánh giá cao sự hướng dẫn của bạn!
Zach Imholte

Có nhiều cách bạn có thể đóng góp cho đến khi bạn nhận được đại diện cần thiết. stackoverflow.com/help/whats-reputation

0

Thêm kiểu này..cho thẻ iframe của bạn ..

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

8
Overflowkhông hoạt động trên iFrames HTML5. Trình duyệt duy nhất hỗ trợ sai điều này là Firefox.
James Donnelly,

1
@JamesDonnelly Trên thực tế ông didnt định nó là html5, thats lý do tại sao chúng tôi sử dụng tràn
Sasi

0

Kể từ khi "tràn: ẩn;" thuộc tính không hoạt động bình thường trên chính iFrame, nhưng dường như cho kết quả khi áp dụng cho phần nội dung của trang bên trong iFrame, tôi đã thử điều này:

iframe body { overflow:hidden; }

Điều đáng ngạc nhiên là đã hoạt động với Firefox, loại bỏ những thanh cuộn khó chịu đó.

Tuy nhiên, trong Safari, một đường trong suốt rộng 2 pixel kỳ lạ đã xuất hiện ở phía bên phải của iframe, giữa nội dung và đường viền của nó. Thật kỳ lạ.


0

Chỉ cần thêm iframe được tạo kiểu giống như một trong hai tùy chọn bên dưới. Tôi hy vọng điều này giải quyết được vấn đề.

Lựa chọn đầu tiên:

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

Tùy chọn thứ 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

Điều này phù hợp với tôi:

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

Lưu ý: nếu bạn cần thanh cuộn trong bất kỳ phần tử nào khác, hãy thêm css {overflow:scroll!important;}vào phần tử đó


-1

Đối với khung này:

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

Tôi đã thử điều này trên mã css của mình:

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

-1

bên dưới các phiên bản html5

iframe {
    overflow:hidden;
}

Trong html5

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


iframe[seamless]{

   overflow: hidden;
}

nhưng chưa được hỗ trợ chính xác


2
Theo điều nàyđiều này , seamlessthuộc tính đã bị xóa khỏi thông số kỹ thuật.
Tim Malone

-5

Bạn có thể sử dụng mã CSS sau:

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

Để giới hạn chế độ xem của iframe.


3
margin-downtài sản mới hay ý bạn là margin-bottom?
Bjørn-Roger Kringsjå
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.