iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
Modern Web

跟著 OXXO 一起學 HTML系列 第 27

( Day 12.3 ) HTML 內嵌頁框 <iframe>

  • 分享至 

  • xImage
  •  

<iframe> 是 HTML 的內嵌頁框元素,可以在一個網頁中內嵌另外一個網頁,像是在網頁裡放入 Youtube 影片、Facebook 貼文區塊或廣告,通常都是使用 <iframe> 實現,這篇教學會介紹 <iframe> 內嵌頁框元素的用法。

原文參考:內嵌頁框 iframe

認識 <iframe>

<iframe> 是 HTML 的內嵌頁框元素,只要指定 src 屬性的網址內容,就能在一個網頁中內嵌另外一個網頁,例如網頁裡的 Youtube 影片、Facebook 貼文區塊或廣告,通常都是使用 <iframe> 的技術。

  • <iframe> 屬於「容器元素」,需要有「起始標籤」以及「結束標籤」,內容元素會在網頁無法顯示時才會出現。
  • <iframe> 的顯示類型為「inline-block 區塊元素」,預設不會自動換行。
  • <iframe> 不可以是 <a><button> 的子元素

例如下方的 HTML 開啟後,會使用 <iframe> 內嵌特定網頁。

<iframe src="https://www.oxxostudio.tw" frameborder="1" width="400" height="300">
  看不到頁面時才會顯示這行文字
</iframe>

HTML 教學 - 內嵌頁框  - 認識

<iframe> 支援屬性

<iframe> 除了支援「全域屬性」以及「可見元素的事件屬性」( 參考「HTML 元素屬性」),也會使用下方的專門屬性:

屬性 說明
src 要嵌入的網頁網址。
width 頁框寬度 ( px )。
height 頁框高度 ( px )。
name 元素名稱。
sandbox 針對嵌入的網頁開啟一些限制,如果不設定,表示採用預設的限制。
seamless 使 iframe display 變成 block 強制換行。

關於 sandbox 屬性,在沒有設定的狀態下,針對嵌入的網頁會有一些限制,如果需要開啟這些限制,可以使用下列對應的屬性值,可以放入「多個值」,每個值採用「空白」分格,各個屬性值的說明如下:

sandbox 屬性值 說明
allow-forms 允許提交表單。
allow-modals 允許打開 modal 視窗。
allow-orientation-lock 允許鎖定螢幕方向,例如行動裝置的水平或垂直。
allow-pointer-lock 允許使用 Pointer Lock API。
allow-popups 允許彈出視窗 ( 例如 target="_blank" )。
allow-popups-to-escape-sandbox 允許彈出視窗不繼承 sandbox 的設定。
allow-presentation 允許開啟 presentation session。
allow-same-origin 允許將 iframe 的內容視作 same origin。
allow-scripts 允許 iframe 內容可以執行 JavaScript。
allow-top-navigation 允許 iframe 可以將內容載入到 top level 的父層視窗 ( 例如 target="_top" )。
allow-top-navigation-by-user-activation 如果是使用者手動去點擊,允許 iframe 可以將內容載入到 top level 的父層視窗。

例如下方的例子,嵌入的網頁可以使用表單、JavaScript、彈出視窗...等功能。

<iframe src="https://www.oxxostudio.tw"
        frameborder="0"
        width="400"
        height="300"
        sandbox="allow-modals allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts">
  看不到頁面時才會顯示這行文字
</iframe>

<iframe> 預設樣式

下方是 <iframe> 的預設樣式:

iframe:focus {
  outline: none;
}
iframe[seamless] {
  display: block;
}

更多教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 12.2 ) HTML 水平分隔線 <hr>
下一篇
( Day 13.1 ) HTML 粗體字 <strong>、<b>
系列文
跟著 OXXO 一起學 HTML90
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言