iframe高度寬度自適應

2021-08-15 06:47:26 字數 2799 閱讀 5492

最近在專案中用到了iframe,寫出來做個記錄,能幫到大家最好。

一.首先簡單介紹一下iframe

iframe 元素會建立包含另外乙個文件的內聯框架(即行內框架)。

所有瀏覽器都支援 標籤。

二.頁面引用

三.設定iframe的高度自適應

四.設定iframe的寬度自適應

iframe的使用是為了引入乙個子頁面,如果說子頁面是自適應的,那麼寬度自適應自然很容易解決。

但是如果子頁面是通過內容編輯器生成並且沒有做自適應處理,那麼問題就沒那麼簡單了。

或許你會用viewport進行解決,這個也是乙個思路,但是子頁面與主頁面的viewport之間的關聯需要處理。

我說的這種情況自然不是用viewport。而是使用-webkit-transform:scale();對iframe進行縮放。實現裝置是iphone8與華為p8高配版。

首先說明,iframe的寬度如果不能自適應那麼在兩個裝置的展現情況不一樣。iphone上邊可以左右滾動以檢視所有的內容,但是在安卓上邊會自動擷取手機螢幕寬度的iframe,也就是不會左右滾動。參考資料:

其次介紹一下有關-webkit-transform:scale();的用法,參考資料:

整體的思想就是計算出手機寬度與iframe內容寬度的比例,然後按照這個比例進行縮放,即-webkit-transform:scale();的作用。

所以就要獲得兩個寬度的值。

獲取iframe的不同型別的寬度:android  iphone 手機瀏覽器獲取子頁面寬度。

// var phonewidth = document.body.clientwidth;//手機寬度

// var iframewidth = document.getelementbyid("myiframe").contentwindow.document.body.offsetheight;//iframe寬度

// 360 2602 -> 375 2628

// var phonewidth = document.body.clientwidth;//手機寬度

// var iframewidth = document.getelementbyid("myiframe").contentdocument.body.clientwidth;//iframe寬度

// 360 310 -> 375 876

// var phonewidth = document.body.clientwidth;//手機寬度

// var iframewidth = document.body.scrollwidth;//iframe寬度

// 360 360 -> 375 910

// var phonewidth = document.body.clientwidth;//手機寬度

// var iframewidth = document.getelementbyid("myiframe").contentwindow.document.body.scrollwidth;//iframe寬度

// 360 884 -> 375 892 採用的這一種。

注釋:箭頭前是安卓裝置,之後是蘋果裝置。第乙個數是手機寬度,第二個數是iframe的寬度。

核心**:

var obj = document.getelementbyid("myiframe");

var phonewidth = document.body.clientwidth;//手機寬度

var iframewidth = document.getelementbyid("myiframe").contentwindow.document.body.scrollwidth;//iframe寬度

var n = phonewidth/iframewidth;//縮放比例

if (useragentinfo.indexof('android') > -1 || useragentinfo.indexof('linux') > -1)

obj.style.webkittransform="scale("+ n +")";

以上測試均是真機測試,瀏覽器包括qq瀏覽器安卓與蘋果版本,以及蘋果和安卓的自帶瀏覽器。

經過縮放之後會出現左右滑動,但是內容區域已經適應了手機寬度,這時再用document.body.style.overflowx="hidden";禁止左右滾動即可。以上均是自己的見解,如有不足之處還望多多見諒。

五.iframe的屬性

iframe常用屬性:

1.frameborder:是否顯示邊框,1(yes),0(no)

2.height:框架作為乙個普通元素的高度,建議在使用css設定。

3.width:框架作為乙個普通元素的寬度,建議使用css設定。

4.name:框架的名稱,window.frames[name]時專用的屬性。

5.scrolling:框架的是否滾動。yes,no,auto。

6.src:內框架的位址,可以使頁面位址,也可以是的位址。

7.srcdoc , 用來替代原來html body裡面的內容。但是ie不支援, 不過也沒什麼卵用

8.sandbox: 對iframe進行一些列限制,ie10+支援

六.iframe參考文件

iframe 自適應高度

由於html沒有include或require,做網頁時我們會用iframe來達到包含頁面的目的。如果呼叫的iframe頁面高度會根據內容多少而發生變化,這時通常要保持iframe與內容頁面的高度,以避免出現iframe的滾動條。先搜尋了一下,有不少好的例子,但總覺得說的還不夠明了。下面給出詳細例子...

iframe自適應高度

來自 http ued.koubei.com 2008 05 07 iframe auto fit height 這貼比較長,沒有耐性的朋友請直接拖到帖子末尾的 示例,或者直接去玩我提供的demo。demo頁面 主頁面 iframe a.html 被包含頁面 iframe b.htm 和 ifram...

iframe高度自適應

nl ad this.height document.frames src document.body.scrollheight 例子 1,建立頁面 test.html 頁面中含有乙個 iframe,name為 ifrname id為 ifrid,src 為 iframe.html頁面。2,建立 i...