溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用iframe怎么實現(xiàn)一個移動端縮放效果

發(fā)布時間:2021-05-17 16:31:05 來源:億速云 閱讀:581 作者:Leah 欄目:web開發(fā)

今天就跟大家聊聊有關(guān)使用iframe怎么實現(xiàn)一個移動端縮放效果,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

這是我習慣用的meta頭部,使頁面寬度根據(jù)設備寬度自適應變化

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />

可是后端落地的框架是按模板直接引入的,有部分的公共資源竟然也包含了設置viewport的meta。后端引入的是這個樣子的:

<meta name="viewport" id="viewport" content="width=640px, user-scalable=no">

這一頭部是被一段不得不被加入的js文件所append進入的,而且被明確告知,該js文件不可以被修改!所以這一設置寬度為固定640px的將我原本設置隨設備寬度變化的meta覆蓋了!

問題就來了,靜態(tài)頁面已經(jīng)完成,且由于歷史代碼因素,有相當部分的代碼在當初并沒有使用rem單位,已經(jīng)無法大規(guī)模修改css效果了。只有通過js重置設置viewport寬度再次進行覆蓋了......這倒是挺簡單的,無非就是代碼相當?shù)某舐选?/p>

但又一個問題來了,這個官網(wǎng)頁面還動態(tài)引入了iframe頁面,這些iframe頁面是固定的640px寬度。這就很崩潰了!我加了隨設備寬度變化的mata,那么這些iframe就不能看了;我不再次加meta,那么官網(wǎng)本身就不能看了!

好在這些iframe是通過統(tǒng)一的方法引入,雖然不能更改引入方法的js文件,但在業(yè)務代碼中再次監(jiān)聽倒也還可以。所以再次這個綁定點擊事件,判斷iframe是否被引入后,就是使用某些特殊方法的時候了!

css3有個transform: scale()的方法,可以對元素進行縮放,雖然真正占位的寬高并沒有變化,但在顯示效果上還是不錯的。

通過計算縮放比例 = 設備寬度 / 640 可以得出對應的縮放比例,再對引入的iframe設置transform: scale(縮放比例)就可以實現(xiàn)漂亮的縮放了!

事情到這里就結(jié)束了嗎?不!還沒有!iframe是縮放了,可高度也被縮放了,內(nèi)容顯示不完整了。這里設置height: 設備高度 / 縮放比例可以還原原本的iframe高度。

以為結(jié)束了?并沒有!還有問題存在!iframe層被scale()屬性縮放后,默認的向下和向右也移動了一段距離,這是因為scale()默認是按中心進行縮放的!這里花了大量時間去尋找合適的方法解決,比如負margin、translate()等,但是由于難以計算合適的移動比例系數(shù),恕本人算法辣雞,這一方法嘗試很久終于決定還是放棄......

翻看css手冊發(fā)現(xiàn)了一個熟悉又陌生的屬性
設置旋轉(zhuǎn)元素的基點位置:

transform-origin: x-axis y-axis z-axis;

它有3個屬性值,分別代表定義視圖被置于X、Y、Z軸的何處。

看完上述內(nèi)容,你們對使用iframe怎么實現(xiàn)一個移動端縮放效果有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI