記IOS Safari下的小知(問)識(題)

近期做了一些移動端的事兒赋朦,本來順順利利的提了測,感覺沒什么問題绷杜,不過測試同學(xué)一會反映一個ios safari的問題過來(留下了貧窮的淚水),在這里記錄一下甩十,大家遇到的時候也可有應(yīng)對措施。

1坪郭、vh單位問題

在我們的代碼中,可能會用到vh來作為寬度單位脉幢,如果用到了歪沃,可能你這就要小心。

比如我們想實現(xiàn)下圖這樣的場景:


image.png

最簡單的思路其實就是一個flex布局嫌松,然后頭部和底部一定寬度沪曙,內(nèi)容區(qū)flex:1即可,但是萎羔,如果你給body使用了100vh來定義范圍液走,那么,你將在IOS下看到:


image.png

問題來了贾陷,我的footer跑哪里去了缘眶,仔細(xì)看看,你會在safari底部的操作區(qū)中看到一點點淺藍(lán)髓废,像是被操作區(qū)擋住了的東西巷懈,那就是你的footer

原因:這并不是一個bug,而是webkit為了保障IOS 60FPS的方案(算是一個功能吧),具體見 https://bugs.webkit.org/show_bug.cgi?id=141832

解決對策:

1慌洪、放棄100vh吧顶燕,用100%。

2冈爹、放棄100vh吧涌攻,使用 -webkit-fill-available [該值作用是盡可能的撐滿可用空間]

如下:

html {

  height:-webkit-fill-available;

}

body {
  height: 100vh;
  height: -webkit-fill-available;
}

2、meta viewport失效的問題

在移動端频伤,我們可能會寫這樣的標(biāo)簽

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,

用于確定視窗大小恳谎,同時禁止用戶手動放大縮小剂买,但是惠爽,從IOS 10開始,他就不在支持利用user-scalable禁止用戶雙指放大婚肆,縮小。

原因:相關(guān)說明見https://webkit.org/blog/7367/new-interaction-behaviors-in-ios-10/较性,我截取了重要的部分見下圖用僧。

image.png

簡而言之就是,決定內(nèi)容文本的大小赞咙,是用戶已有的權(quán)利,我們不應(yīng)該組織攀操,我們應(yīng)該自己意識到這點院仿,并且在放大縮小的時候能保證頁面內(nèi)容正常速和。

解決對策: 取消多指事件 **gesturestart**默認(rèn)行為歹垫,該事件為IOS獨有,詳見https://developer.mozilla.org/en-US/docs/Web/API/Element/gesturestart_event

document.addEventListener('gesturestart', function (event) { 
  event.preventDefault(); 
});

3颠放、safari滾動阻尼問題

在safari下排惨,為了讓用戶滾動更流暢,我們經(jīng)撑鲂祝可以過量滾動誓沸,然后觸發(fā)一定的回彈效果留攒。像這個視頻一樣


阻尼.gif

看起來很舒服慢洋,很符合用戶操作對不對伸头,可是一但出現(xiàn)額外的滾動區(qū)域的話,就會產(chǎn)生奇怪的問題,比如你想滾動一個iframe的滾動條恤磷,然后發(fā)現(xiàn)滾動到body下的滾動,觸發(fā)了回彈效果扫步。

解決對策:

1、取消掉body的滾動河胎,僅在支持滾動區(qū)域的地方加入滾動效果

html, body {
    height: 100%;
    overflow: hidden;
}

.scroll-wrap{
  overflow:auto
}

**該方法缺陷是好處不會全局產(chǎn)生回彈阻尼效果了闯袒,但是對應(yīng)的滾動元素體依然會這樣**

**2、使用iNoBounce庫[https://github.com/lazd/iNoBounce](https://github.com/lazd/iNoBounce)政敢,然后在對應(yīng)想取消掉回彈的元素上增加 overflow, height, -webkit-overflow-scrolling屬性即可**
```html
.scroll-wrap{
  overflow:auto;
  -webkit-overflow-scrolling: touch;
  height:100px;
}

其原理也比較簡單,主要是對touchstart和touchmove事件進行監(jiān)聽喷户,然后隨時計算滾動條位置,如果到底了褪尝,取消掉事件的默認(rèn)行為。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末河哑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子璃谨,更是在濱河造成了極大的恐慌,老刑警劉巖睬罗,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異容达,居然都是意外死亡垂券,警方通過查閱死者的電腦和手機花盐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門菇爪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凳宙,你說我怎么就攤上這事熙揍。” “怎么了氏涩?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵届囚,是天一觀的道長。 經(jīng)常有香客問我是尖,道長意系,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任饺汹,我火速辦了婚禮蛔添,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己迎瞧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布凶硅。 她就那樣靜靜地躺著,像睡著了一般咏尝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上编检,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音厕怜,去河邊找鬼。 笑死粥航,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的生百。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼缀程,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杨凑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤撩满,失蹤者是張志新(化名)和其女友劉穎绅你,沒想到半個月后伺帘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勇吊,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年礼殊,在試婚紗的時候發(fā)現(xiàn)自己被綠了驹吮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶伦。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖婚陪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情泌参,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布沽一,位于F島的核電站,受9級特大地震影響铣缠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蝗蛙,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捡硅。 院中可真熱鬧,春花似錦壮韭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寄疏,卻和暖如春是牢,著一層夾襖步出監(jiān)牢的瞬間陕截,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工农曲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驻债,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓合呐,卻偏偏與公主長得像笙以,于是被迫代替她去往敵國和親淌实。 傳聞我的和親對象是個殘疾皇子猖腕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容