濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > iframe在移動(dòng)端的縮放的示例代碼

iframe在移動(dòng)端的縮放的示例代碼

熱門標(biāo)簽:鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 四川點(diǎn)撥外呼系統(tǒng) 江蘇智能電銷機(jī)器人哪家好 云南大理400電話申請官方 當(dāng)涂高德地圖標(biāo)注 南寧點(diǎn)撥外呼系統(tǒng)哪家公司做的好 電銷機(jī)器人電話用什么卡 成都智能外呼系統(tǒng)平臺(tái) 黃島區(qū)地圖標(biāo)注

工作中碰到個(gè)奇怪的問題,折騰了大半天,終于算是解決了,這里把分析思路和解決辦法記錄下。

項(xiàng)目是做響應(yīng)式的公司官網(wǎng),前期的靜態(tài)圖頁面切完后就提交給后臺(tái)作為模板使用了,我也就基本退出項(xiàng)目。

在后端落地時(shí)發(fā)現(xiàn)在在移動(dòng)端頁面顯示不太對(duì)勁,顯得很模糊。第一想法是meta的頭部被覆蓋了,查看源代碼果然發(fā)現(xiàn)是被覆蓋了。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

他鄉(xiāng)遇故知,久旱逢甘霖!要的就是你??!設(shè)置transform-origin: 0 top 0 解決~

其實(shí)吧,這個(gè)屬性很早就被用到了,只不過我最開始寫的是縮寫transform-origin: 0,被瀏覽器解析之后的就是transform-origin: 0 center 0......當(dāng)時(shí)的感受就是左右解決了,一直想的都是把iframe移上去,殊不知人家自帶這樣的功能,只不過被我忽略了。學(xué)習(xí)還是不能囫圇吞棗啊,一個(gè)屬性竟然可以浪費(fèi)半天的時(shí)間,我大概不是個(gè)合格的前端......(逃

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:廣西 十堰 西寧 南京 咸寧 淮安 酒泉 佳木斯

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《iframe在移動(dòng)端的縮放的示例代碼》,本文關(guān)鍵詞  iframe,在,移動(dòng),端,的,縮放,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《iframe在移動(dòng)端的縮放的示例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于iframe在移動(dòng)端的縮放的示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    淮阳县| 兴山县| 海门市| 大港区| 黑山县| 上杭县| 宜宾县| 修武县| 镶黄旗| 岗巴县| 海宁市| 普洱| 苏州市| 通河县| 隆子县| 营口市| 大冶市| 武隆县| 陕西省| 龙江县| 开化县| 高青县| 江陵县| 濮阳市| 绥宁县| 桐柏县| 兰溪市| 扬州市| 高邑县| 交口县| 宜宾县| 通河县| 九龙城区| 凯里市| 大悟县| 沽源县| 漯河市| 乳源| 本溪市| 桂林市| 灵宝市|