国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一個(gè)超級(jí)詭異的 iOS Safari `position: fixed` 失效問題

robin / 1479人閱讀

摘要:因?yàn)榻M件需要全屏展示,所以我設(shè)置了如下的同時(shí),對(duì)原本的,我給它加上,避免彈出虛擬鍵盤。獲取輸入焦點(diǎn)之后,雖然沒有彈出虛擬鍵盤,但仍然是待輸入狀態(tài)。

首發(fā)我的博客,兩邊同步更新。

先說需求。東家讓我做個(gè)日歷組件,在手機(jī) Web 上用。組件的樣式是這樣的,很多地方都可以見到,比如南航國航的客戶端。

看起來并不復(fù)雜,事實(shí)上也是,基本上順順利利的開發(fā)完成,準(zhǔn)備交付。這里有個(gè)伏筆,開發(fā)中我按老習(xí)慣,使用桌面 Chrome,和實(shí)際生產(chǎn)環(huán)境不太一樣。不過我自然要去真機(jī)上測(cè)試,結(jié)果一測(cè)問題就出來了。

因?yàn)榻M件需要全屏展示,所以我設(shè)置了如下的CSS:

.date-picker {
  position:fixed;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background-color: white;
  z-index:1024;
}

同時(shí),對(duì)原本的 ,我給它加上 readonly,避免彈出虛擬鍵盤。理論上,這樣的就可以了。但實(shí)測(cè)時(shí),不滾屏的時(shí)候,組件彈出時(shí)尺寸是準(zhǔn)確的,蓋滿全屏;然則一旦滾屏,組件就會(huì)占據(jù)從頁面最上方到當(dāng)前最下面這截位置。大約相當(dāng)于 position:absolte;top:0 的效果。



如圖,可以看到組件占據(jù)了全屏,但實(shí)際是從頁面最上面開始的,定位有問題。用桌面 Safari 調(diào)試也可以看出來它的高度是 968,遠(yuǎn)大于正常的 667。

這很詭異,上下左右全為0,是上古巨獸 IE6 都支持的做法。iOS Safari 雖然 Bug 多多,不應(yīng)該連這個(gè)都有毛病啊。以 ios safari position fixed 為關(guān)鍵詞 Google 之,結(jié)果 iOS Safari 歷史不清白,當(dāng)年 iPhone 剛出的時(shí)候的確有定位問題,于是雖有滿屏的結(jié)果,但都不適用。

然后我想到找其它庫,比如 Bootstrap,它的 Modal 組件也是類似的效果。但是怎么測(cè)都正常,于是我只好一個(gè)樣式一個(gè)樣式修改,仍然沒有結(jié)果。

時(shí)間慢慢流逝,轉(zhuǎn)眼已經(jīng)凌晨2點(diǎn)了,就在我?guī)子艞壷H,突然發(fā)現(xiàn),雖然組件彈出的時(shí)候定位有問題,但只要我點(diǎn)掉下面的完成,定位就會(huì)立刻恢復(fù)正常。


注意,就是那個(gè)“完成”。

問題至此已經(jīng)明朗:在 iOS Safari 里,即使 設(shè)置了 readonly,它仍然可以獲取輸入焦點(diǎn)。獲取輸入焦點(diǎn)之后,雖然沒有彈出虛擬鍵盤,但仍然是待輸入狀態(tài)。

此時(shí)頁面各種交互都是正常工作的,比如點(diǎn)擊、滾屏。唯獨(dú) position:fixed 定位有問題。點(diǎn)擊“完成”離開輸入狀態(tài),Safari 自動(dòng)刷新頁面元素,定位就正常了。

于是我在組件彈出后,自動(dòng) input.blur(),使其失去焦點(diǎn),組件的尺寸便正常無誤了。

總結(jié)

移動(dòng)端 Web 開發(fā)總有各種各樣稀奇古怪的問題。有些好解決,有些不好解決,比如這個(gè)問題,很難定位:

歷史不清白,搜也搜不到

組件要求全屏,需要避免虛擬鍵盤,所以會(huì)改變默認(rèn)行為

其它情況下都是好的

我能想到的方案,就是想辦法,用所有能用的工具,排除掉所有其它問題,最終還是能搞出來的。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/116527.html

相關(guān)文章

  • 我是如何通過debug成功甩鍋瀏覽器:解決fixed定位元素,在頁面滾動(dòng)后touch事件失效問題

    摘要:二分析排查一步驟一使用搜索引擎我是在無意中發(fā)現(xiàn)該問題的,當(dāng)時(shí)觀察到的現(xiàn)象是綁定在上的事件有時(shí)會(huì)被觸發(fā),有時(shí)會(huì)失效。這說明并不存在偶爾失效的問題。也就是說,我需要找到確切的令響應(yīng)事件失效的原因。接下來的事很簡單,繼續(xù)搜索事件在頁面滾動(dòng)后失效。 如果你關(guān)注我應(yīng)該知道,我最近對(duì)PC端頁面進(jìn)行移動(dòng)適配。在這個(gè)過程中,為了節(jié)省用戶300ms的時(shí)間,同時(shí)給予用戶更及時(shí)的點(diǎn)擊反饋(這意味著更好的用戶...

    tulayang 評(píng)論0 收藏0
  • 我是如何通過debug成功甩鍋瀏覽器:解決fixed定位元素,在頁面滾動(dòng)后touch事件失效問題

    摘要:二分析排查一步驟一使用搜索引擎我是在無意中發(fā)現(xiàn)該問題的,當(dāng)時(shí)觀察到的現(xiàn)象是綁定在上的事件有時(shí)會(huì)被觸發(fā),有時(shí)會(huì)失效。這說明并不存在偶爾失效的問題。也就是說,我需要找到確切的令響應(yīng)事件失效的原因。接下來的事很簡單,繼續(xù)搜索事件在頁面滾動(dòng)后失效。 如果你關(guān)注我應(yīng)該知道,我最近對(duì)PC端頁面進(jìn)行移動(dòng)適配。在這個(gè)過程中,為了節(jié)省用戶300ms的時(shí)間,同時(shí)給予用戶更及時(shí)的點(diǎn)擊反饋(這意味著更好的用戶...

    JowayYoung 評(píng)論0 收藏0
  • safari瀏覽器fixed后,被軟鍵盤遮蓋問題—【未解決】

    摘要:瀏覽器后,被軟鍵盤遮蓋的問題,已經(jīng)有好多人問相關(guān)的問題,應(yīng)該是問的角度不一樣,還的再次提出咯。如上循環(huán),問題無法解決。 safari瀏覽器fixed后,被軟鍵盤遮蓋的問題,已經(jīng)有好多人問相關(guān)的問題,應(yīng)該是問的角度不一樣,還的再次提出咯。 問題描述 測(cè)試環(huán)境:ios 10.2/10.3 簡單來說就是在html5頁面中底部有個(gè)fixed的區(qū)域,如圖 showImg(https://segm...

    miya 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<