現(xiàn)象:ionic項(xiàng)目势告,IOS12系統(tǒng),一個(gè)自定義template的ionicPopup顯示如圖1抚恒,結(jié)果點(diǎn)擊第一個(gè)input咱台,彈出鍵盤,此時(shí)ionicPopup框下移俭驮,見圖二吵护。此現(xiàn)象在IOS11的手機(jī)上不存在,顯示正常表鳍。
探索過程:手機(jī)連接電腦,用safari打開webapp的調(diào)試模式祥诽,具體步驟詳見http://www.reibang.com/p/5b2305929041譬圣。觀察,點(diǎn)擊input后雄坪,popup的樣式變化厘熟。
結(jié)果發(fā)現(xiàn)控制popup居中的class如圖:
ionicPopup將modal框居中的方式為position設(shè)為absolute,嘗試改為fixed后,問題解決绳姨。
思考:css的fixed是固定定位登澜,absolute是絕對定位,當(dāng)沒有滾動(dòng)條的情況下沒有差異飘庄,在有滾動(dòng)條的情況下脑蠕,fixed的定位不會(huì)隨滾動(dòng)條的移動(dòng)而移動(dòng),但是absolute則會(huì)隨滾動(dòng)條移動(dòng)跪削。所以一般fixed用在遮蓋層與固定在頁面某個(gè)位置谴仙,如固定在頂部的頻道欄,或彈框居中顯示碾盐。
但是為什么IOS11系統(tǒng)上popup定位方式是用absolute結(jié)果沒有出現(xiàn)彈框被鍵盤遮蓋的情況呢晃跺?據(jù)悉ios11之前的系統(tǒng)不兼容position:fixed屬性。難道蘋果在更新IOS12后對fixed屬性做了兼容毫玖?這只是一個(gè)猜想掀虎,希望有高人研究后告知。