在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

移動(dòng)端設(shè)備上稀奇古怪的前端問(wèn)題收集(一)

京東云 ? 來(lái)源:jf_75140285 ? 2025-01-24 15:41 ? 次閱讀

作者:京東物流 陳雨

作為一名開(kāi)發(fā)者,bug 往往是我們最怕遇見(jiàn)的東西;而比遇到 bug 更可怕的事情,是定位不到 bug。作為一名前端開(kāi)發(fā)者,與業(yè)務(wù)邏輯相關(guān)的 bug 還相對(duì)好定位、好解決一些;而一些與語(yǔ)法特性、平臺(tái)與設(shè)備差異相關(guān)的 bug 則更令人頭疼一些。這里記錄下我在工作中遇到過(guò)的稀奇古怪的前端問(wèn)題,作為給自己的記錄和提醒。

用 vh 定義全屏顯示的問(wèn)題

很多頁(yè)面因?yàn)樵O(shè)計(jì)效果的需要,要求正好鋪滿一整個(gè)顯示界面、也不允許上下滑動(dòng)。做類似的需求時(shí),往往直覺(jué)會(huì)使用這樣的代碼解決問(wèn)題:

{
 height: 100vh;
}

這樣的代碼看似很優(yōu)雅,但是往往會(huì)有兼容性問(wèn)題——不同瀏覽器定義的視口高度的定義不一致,導(dǎo)致 100vh 并不能真正覆蓋全視口高度;還有不少瀏覽器視口高度數(shù)值不變但實(shí)際視口大小可變,比如移動(dòng)端 Chrome 瀏覽器的導(dǎo)航欄時(shí)不時(shí)隱藏但網(wǎng)頁(yè)獲取的視口高度不變,這都會(huì)導(dǎo)致最終顯示效果不符合預(yù)期。

如果要實(shí)現(xiàn)全屏幕覆蓋不可滑動(dòng),更為穩(wěn)妥和保險(xiǎn)的方法是使用絕對(duì)定位:

{
 position: fixed;
 top: 0;
 bottom: 0;
 left: 0;
 right: 0;
}

帶 alpha 通道的 hex 顏色值失效的問(wèn)題

在較新的 web 標(biāo)準(zhǔn)中,hex 格式的顏色代碼也可以表示透明度了,只需要在常見(jiàn)的六位 hex 顏色代碼后加兩位表示透明度的 hex 值,例如 #66ccff 表示一種藍(lán)色,而 #66ccff80 表示透明度 50% 的這種藍(lán)色(80 是 16 進(jìn)制的 128,是 256 的一半,即 50% 透明度)。雖然直接這樣寫(xiě)代碼的行為在前端開(kāi)發(fā)中不普遍,但是設(shè)計(jì)師交付的視覺(jué)稿給出的參考值有不少是這種格式。如果直接把這樣的顏色代碼用于生產(chǎn)中,可能會(huì)出現(xiàn)以下兩種問(wèn)題:

?如果你編寫(xiě)的項(xiàng)目引入了 less 或者 sass,在進(jìn)行打包構(gòu)建的操作時(shí),部分預(yù)處理器無(wú)法正確識(shí)別帶 alpha 通道的 hex 顏色值,因此這部分代碼無(wú)法被正確轉(zhuǎn)譯,最終構(gòu)建出的生產(chǎn)環(huán)境代碼中這部分顏色可能丟失。

?部分移動(dòng)端瀏覽器并未適配帶 alpha 通道的 hex 顏色值,因此即使是使用原生 css 完成的代碼,也有可能出現(xiàn)在部分手機(jī)或部分瀏覽器顏色不正常的問(wèn)題。

生命周期函數(shù)不執(zhí)行的問(wèn)題

在頁(yè)面剛打開(kāi)或準(zhǔn)備關(guān)閉時(shí),我們往往需要進(jìn)行一些諸如數(shù)據(jù)初始化、登入登出、數(shù)據(jù)上報(bào)等行為,而這些往往是借助 Vue 或 React 的生命周期函數(shù)完成的。不過(guò),生命周期函數(shù)不執(zhí)行也是常被忽略的 bug,詳細(xì)來(lái)說(shuō),又可以分為兩類原因——

組件被 keep alive 導(dǎo)致未被卸載或重新加載

如果是 Vue 中使用 keep-alive 包裹的組件,或在 React 中使用類似的第三方庫(kù) keep alive 的組件,只會(huì)在第一次加載時(shí)執(zhí)行生命周期初始化函數(shù),且不會(huì)執(zhí)行生命周期卸載函數(shù)。這導(dǎo)致的不符合預(yù)期的行為很好解決,只需要使用 onActivated 代替 onMounted ,用 onDeactivated 代替 onUnmounted 即可。

頁(yè)面被直接關(guān)閉導(dǎo)致框架生命周期函數(shù)無(wú)法執(zhí)行

不管是 Vue 還是 React,生命周期函數(shù)的正確執(zhí)行都依賴于 Vue 或 React 實(shí)例的存在。而當(dāng)用戶直接關(guān)閉瀏覽器頁(yè)面的時(shí)候,Vue 或 React 實(shí)例已經(jīng)被銷毀了,生命周期卸載函數(shù)當(dāng)然就無(wú)法執(zhí)行了。處理這種情況也并不麻煩,只需要在生命周期初始化函數(shù)中添加對(duì) window 卸載事件的監(jiān)聽(tīng),然后把想要進(jìn)行的操作放到 window 卸載事件函數(shù)里就好了。

onMonted(() => {  
  window.addEventListener('beforeunload', () => {    
    // 需要執(zhí)行的代碼 
  });
});

文本中的 emoji 上下被裁剪

UGC 內(nèi)容中經(jīng)常出現(xiàn)文本和 emoji 混排的場(chǎng)景,而有時(shí)可能遇到 emoji 上下邊緣被裁剪的問(wèn)題。這往往是由于開(kāi)發(fā)頁(yè)面時(shí)為了限定文本高度和間距或其他排版方面的要求,將 line-height 和 font-size 設(shè)置為同樣的值,且 overflow 屬性被設(shè)置為 hidden 。如果出現(xiàn)類似情況,建議去除 line-height 的限制,而通過(guò) margin 等方式控制行距,從而避免 emoji 被裁減。

輸入框被彈起的軟鍵盤(pán)覆蓋的問(wèn)題

如果移動(dòng)端頁(yè)面中有輸入框,那么很可能面臨輸入框被彈起的軟鍵盤(pán)覆蓋的問(wèn)題。一般來(lái)講,對(duì)于需要彈起軟鍵盤(pán)的場(chǎng)景,較新的瀏覽器或者移動(dòng)端 app 的 webview 會(huì)自動(dòng)聚焦到輸入框中并滾動(dòng)到相應(yīng)位置,來(lái)保證輸入框的正常顯示;但是,對(duì)于如下兩種情況,彈起的軟鍵盤(pán)會(huì)將輸入框覆蓋,影響用戶輸入。

瀏覽器未能主動(dòng)聚焦到輸入框

軟鍵盤(pán)彈起時(shí),一般會(huì)從底部將頁(yè)面頂起、壓縮視口;視口高度變低了,原先處于顯示區(qū)域的輸入框可能就被擠到輸入框外了。如果用戶使用的瀏覽器版本較早或 app 內(nèi)置 webview 較為特殊,有可能在軟鍵盤(pán)彈出后瀏覽器未能主動(dòng)聚焦到輸入框上。這時(shí),開(kāi)發(fā)者必須主動(dòng)聚焦到輸入框并使輸入框滾動(dòng)到視口內(nèi)。

const inputEle = document.querySelector('#target-input');inputEle.focus();inputEle.scrollIntoView();

軟鍵盤(pán)采用覆蓋在視口上層而非壓縮視口的方式彈出

如果瀏覽器或 webview 版本較為特殊,且輸入框處于頁(yè)面靠下的位置或者針對(duì)視口絕對(duì)定位于底部,那么可能會(huì)面臨更加復(fù)雜的情況。剛才已經(jīng)提到,正常情況下,軟鍵盤(pán)彈起的標(biāo)準(zhǔn)做法是從底部將頁(yè)面頂起、壓縮視口高度;但是某些情況下,軟鍵盤(pán)并不改變視口尺寸,而是直接蓋在視口上方。這就導(dǎo)致頁(yè)面邏輯上是展示完整的、輸入框也正常顯示在視口中;但軟鍵盤(pán)遮擋了半個(gè)頁(yè)面,也就真正意義上“覆蓋”在輸入框上。目前主流移動(dòng)端瀏覽器較新的版本都不會(huì)出現(xiàn)這個(gè)問(wèn)題,但是部分 app 內(nèi)置 webview 會(huì)設(shè)置為“軟鍵盤(pán)覆蓋在 webview 上方”;因此要解決這個(gè)問(wèn)題,必須由客戶端更改 webview 的軟鍵盤(pán)設(shè)置。如果是很舊的瀏覽器版本或者無(wú)法推動(dòng)客戶端開(kāi)發(fā)解決問(wèn)題,那就只能放棄治療了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 前端
    +關(guān)注

    關(guān)注

    1

    文章

    214

    瀏覽量

    18186
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70351
  • 移動(dòng)端
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    4566
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    初學(xué)者如何向高手請(qǐng)教問(wèn)題?

    為什么自學(xué)單片機(jī),有的初學(xué)者卻能學(xué)會(huì),有的初學(xué)者卻學(xué)了好久都沒(méi)學(xué)會(huì);連個(gè)數(shù)字時(shí)鐘的程序都寫(xiě)不出來(lái);每次看到壇友們做出各種稀奇古怪的DIY,我都感到心里酸溜溜,請(qǐng)問(wèn)高手該該怎。。。。。。總是被學(xué)會(huì)單片機(jī)的嘲笑,看的我們初學(xué)者很不是滋味,你們不也就是這么過(guò)來(lái)的嗎?有什么好自傲的
    發(fā)表于 05-21 22:53

    如何正確掌握程序語(yǔ)言

    學(xué)習(xí)程序語(yǔ)言是每個(gè)程序員的必經(jīng)之路。可是這個(gè)世界上有太多的程序語(yǔ)言,每種都號(hào)稱具有最新的“特性”。所以程序員的苦惱就在于總是需要學(xué)習(xí)各種稀奇古怪的語(yǔ)言,而且必須緊跟“潮流”,否則就怕被時(shí)代所淘汰。
    發(fā)表于 08-15 23:47

    zz:通過(guò)烤火來(lái)給iphone充電的小設(shè)備

    `iphone總是如此的火爆,連外設(shè)都是如此的火爆,也總是能有如此稀奇古怪設(shè)備涌現(xiàn)出來(lái),娛樂(lè)大眾!這個(gè)叫做campstove的小設(shè)備可以為任何u***充電設(shè)備充電,如智能手機(jī)、led
    發(fā)表于 11-12 10:23

    AD 軟件 圖紙轉(zhuǎn)碼到Cadence

    請(qǐng)問(wèn)各位道友,AD Summer 09 格式下的圖紙 如何操作才能轉(zhuǎn)碼到Cadence 下 ,且能夠被正確識(shí)別,因?yàn)槲以谵D(zhuǎn)碼過(guò)程中 碰到稀奇古怪的問(wèn)題,e.gAD 導(dǎo)不出,提示錯(cuò)誤;或者 Cadence 導(dǎo)入不了,軟件卡在那里過(guò)不去。看看有沒(méi)有人 能解決下,謝謝!
    發(fā)表于 06-22 17:22

    為什么說(shuō)射頻前端體化設(shè)計(jì)決定下移動(dòng)設(shè)備

    隨著移動(dòng)行業(yè)向下代網(wǎng)絡(luò)邁進(jìn),整個(gè)行業(yè)將面臨射頻組件匹配,模塊架構(gòu)和電路設(shè)計(jì)的挑戰(zhàn)。射頻前端體化設(shè)計(jì)對(duì)下
    發(fā)表于 08-01 07:23

    關(guān)于單片機(jī)的些容易被忽視問(wèn)題相關(guān)資料分享

    “最近直在單片機(jī)項(xiàng)目打轉(zhuǎn),也碰到了很多稀奇古怪的問(wèn)題,在這里做個(gè)記錄。”01—變量很多剛接觸單片機(jī)嵌入式編程沒(méi)有太多程序風(fēng)格可言的程序員來(lái)說(shuō),變量的濫用以及命名的隨意,導(dǎo)致在后期代碼...
    發(fā)表于 01-24 06:05

    申請(qǐng)開(kāi)發(fā)板

    我是個(gè)喜歡自己倒騰稀奇古怪的玩意兒的,我很希望用全志的開(kāi)發(fā)板開(kāi)發(fā)種可以用作測(cè)量的工具,就像萬(wàn)用表或者示波器亦或是信號(hào)源之類的測(cè)試儀器。
    發(fā)表于 07-02 13:12

    求助,CH573的SPI使用DMA發(fā)送有例程嗎?

    官方的CH573EVT演示包里面只有最普通的SPI直接發(fā)送接收,我自己不用DMA發(fā)送接收也調(diào)通了但是DMA發(fā)送搞了兩三天也沒(méi)弄明白,經(jīng)常出稀奇古怪的問(wèn)題請(qǐng)問(wèn)官方有SPI的DMA發(fā)送例程嗎?或者其他筒子們誰(shuí)用過(guò),是否方便發(fā)來(lái)看看
    發(fā)表于 09-01 06:40

    稀奇古怪動(dòng)作的“ Disney USB”產(chǎn)品

    稀奇古怪動(dòng)作的“ Disney USB”產(chǎn)品 Disney USB產(chǎn)品  市場(chǎng)上有很多 USB 產(chǎn)品,廠商要出奇制勝,除了價(jià)格外,產(chǎn)品有沒(méi)有特色也很重要。這次在香港推出的
    發(fā)表于 01-22 09:32 ?1147次閱讀

    可穿戴機(jī)器人聽(tīng)說(shuō)過(guò)嗎?

    現(xiàn)在機(jī)器人對(duì)于我們來(lái)說(shuō)早已不是稀奇古怪之物了,機(jī)器人還有哪些無(wú)限的可能呢?歪果仁也是在這上面下了不少功夫,像什么機(jī)器機(jī)甲啦。
    發(fā)表于 01-09 15:43 ?2987次閱讀

    LG高管:為加強(qiáng)智能家居,所有家電都將內(nèi)置WiFi

    過(guò)去的幾年中,CES展示的產(chǎn)品越來(lái)越專注互聯(lián)網(wǎng),不管產(chǎn)品本身多么“其貌不揚(yáng)”,于是我們有了智能牙刷、智能電扇、智能空氣清新劑等稀奇古怪的東西,而其中最匪夷所思的要數(shù)100美元只的寵物食盆,它竟然可以自己從Amazon買東西。
    發(fā)表于 01-09 16:05 ?1347次閱讀

    不走尋常路 帶你見(jiàn)識(shí)下這些造型稀奇古怪的電腦!

    現(xiàn)在為大家總結(jié)了份真正稀奇古怪,個(gè)性十足的電腦清單展示,看看你見(jiàn)過(guò)幾個(gè)?
    發(fā)表于 06-02 11:22 ?998次閱讀

    藝術(shù)機(jī)器人簡(jiǎn)史!各種稀奇古怪的機(jī)械化設(shè)備

    當(dāng)然,把自動(dòng)機(jī)器人稱為雕塑完全提高了其地位。由此說(shuō)來(lái),布谷鳥(niǎo)自鳴鐘或許也算得上是雕塑。不過(guò)事實(shí),動(dòng)力雕塑——比如讓·丁格利用其他機(jī)械組合出來(lái)的極其瘋狂丑陋的機(jī)械,發(fā)出呼哧呼哧、哐當(dāng)哐當(dāng)?shù)穆曇簦瑖娡?/div>
    的頭像 發(fā)表于 08-14 14:16 ?4721次閱讀

    谷歌推出款新的AR應(yīng)用,任何支持AR Core的設(shè)備均可用

    谷歌經(jīng)常用新技術(shù)做稀奇古怪的實(shí)驗(yàn)應(yīng)用。“Just a Line” 是款新推出的 AR 應(yīng)用,建立在谷歌的 ARCore 技術(shù)之上。這個(gè)應(yīng)用的設(shè)計(jì)想法非常簡(jiǎn)單,但它的成效實(shí)際非常
    發(fā)表于 09-04 15:04 ?5901次閱讀

    關(guān)于單片機(jī)的些容易被忽視問(wèn)題

    “最近直在單片機(jī)項(xiàng)目打轉(zhuǎn),也碰到了很多稀奇古怪的問(wèn)題,在這里做個(gè)記錄。”01—變量很多剛接觸單片機(jī)嵌入式編程沒(méi)有太多程序風(fēng)格可言的程序員來(lái)說(shuō),變量的濫用以及命名的隨意,導(dǎo)致在后期代碼...
    發(fā)表于 11-29 13:06 ?18次下載
    關(guān)于單片機(jī)的<b class='flag-5'>一</b>些容易被忽視問(wèn)題
    主站蜘蛛池模板: 俄罗斯小屁孩cao大人免费 | 久久综合色播 | 国产农村一一级特黄毛片 | 国产一区在线mmai | 成人夜色视频网站在线观看 | 国产精品9999久久久久仙踪林 | 日韩视频 中文字幕 视频一区 | 菲菲国产在线观看 | 能直接看黄的网站 | 天堂在线最新版资源www | 二区三区视频 | 人人澡人人澡人人看青草 | 天天干天天玩 | 国产色拍 | 性感美女福利视频 | 美女喷白浆 | 日韩卡1卡2卡三卡四卡二卡免 | 亚洲婷婷综合色高清在线 | 国产色视频网站免费观看 | 四虎在线最新永久免费 | 国产三级a三级三级天天 | 全部免费特黄特色大片视频 | 荡女妇边被c边呻吟久久 | 狠狠做久久深爱婷婷97动漫 | japanese色系国产在线高清 | 午夜视频免费在线播放 | 深夜动态福利gif动态进 | 免费高清一级欧美片在线观看 | 久操福利视频 | 五月欧美激激激综合网色播 | 亚州视频一区二区 | 日本人六九视频69jzz免费 | 不卡视频一区二区 | 手机看片免费永久在线观看 | 久久久久久久久综合 | 久久国产乱子伦精品免 | 极品啪啪 | 色偷偷尼玛图亚洲综合 | 特级全黄一级毛片视频 | 国产看片视频 | 亚洲性天堂 |