移動(dòng)端常見(jiàn)bug及解決辦法

一:iPhone中 overflow:scroll 橫向或縱向滑動(dòng)速度慢或者卡羡铲,感覺(jué)很不流暢微猖,只需要對(duì)滾動(dòng)元素設(shè)置:

-webkit-overflow-scrolling:touch;
overflow-scrolling:touch;

二:flex布局下,子元素A設(shè)置了固定寬度组去,但由于另一個(gè)子元素B內(nèi)容過(guò)寬導(dǎo)致A元素被擠壓爷抓,實(shí)際寬度不是原來(lái)定義的寬度势决,此時(shí)需要對(duì)A元素設(shè)置:

flex-shrink:0;

A元素將不會(huì)再被擠壓

三:ios和android下點(diǎn)擊元素時(shí)出現(xiàn)灰色陰影背景

-webkit-tap-highlight-color:rgba(255,255,255,0);

四:禁止復(fù)制、選中文本

-webkit-touch-callout:none;
-webkit-user-select:none;
-khtml-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;

五:去除iphone上輸入框內(nèi)陰影等默認(rèn)樣式

border: 0;
-webkit-appearance:none;

六:去除input獲取焦點(diǎn)時(shí)出現(xiàn)的默認(rèn)邊框

outline:none

七:禁止iPhone和Android橫屏或豎屏模式下字體自動(dòng)縮放:

-webkit-text-size-adjust:none;
-ms-text-size-adjust:100%;
text-size-adjust:100%;

八:部分Android手機(jī)圓角效果失效:

background-clip:padding-box;

九:設(shè)置瀏覽器不緩存:

<meta http-equiv="Cache-Control" content="no-cache" />

十:input設(shè)置type=number時(shí)蓝撇,maxlength失效的問(wèn)題

<input type="number" oninput="checkLength(this ,10)">

function checkLength(obj, length) {
     if(obj.value.length > length)  {    
       obj.value = obj.value.substr(0, length);
     }
}

十一:input設(shè)置type=number時(shí)果复,form提交的時(shí)候默認(rèn)給取整的問(wèn)題

<input type="number" step="0.01" />

input的type為number時(shí),會(huì)默認(rèn)生成上下箭頭調(diào)整數(shù)值渤昌,step=0.01,可以允許輸入2位小數(shù)虽抄,點(diǎn)擊上下箭頭分別增加0.01和減少0.01。

十二:去除input的type為numbe時(shí)的默認(rèn)箭頭:

input[type=number] {
 -moz-appearance:textfield;
}
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
 -webkit-appearance: none;
 margin: 0;
}

十三:IOS鍵盤(pán)字母輸入独柑,默認(rèn)首字母大寫(xiě)

<input type="text" autocapitalize="off" />

十四:IOS鍵盤(pán)迈窟,中文輸入法輸入英文時(shí),字母之間可能會(huì)出現(xiàn)一個(gè)六分之一空格忌栅,可以通過(guò)正則去掉

this.value = this.value.replace(/\u2006/g, ‘‘);

十五:IOS下可能對(duì)非可點(diǎn)擊元素如(label,span)監(jiān)聽(tīng)click事件车酣,不會(huì)觸發(fā),加上一行CSS代碼即可:

cursor:pointer;

十六:禁止 iOS 識(shí)別長(zhǎng)串?dāng)?shù)字為電話

<meta name="format-detection" content="telephone=no" />

默認(rèn)情況下索绪,設(shè)備會(huì)自動(dòng)識(shí)別任何可能是電話號(hào)碼的字符串

十七:禁止保存或拷貝圖像

img{-webkit-touch-callout: none;}

十八:浮動(dòng)子元素?zé)o法撐開(kāi)父元素高度湖员,給父元素設(shè)置:

overflow:hidden;

十九:display:inline-block的元素之間有間距,或者它的父元素高度大于其本身瑞驱,這是網(wǎng)頁(yè)默認(rèn)的空白間距娘摔,需要給父元素設(shè)置:

font-size:0;

二十:calc的兼容處理,CSS3中的calc變量在iOS6瀏覽器中必須加-webkit-前綴唤反,目前的FF瀏覽器已經(jīng)無(wú)需-moz-前綴凳寺。 Android瀏覽器目前仍然不支持calc,所以要在之前增加一個(gè)保守尺寸:

div { 
  width: 80%; 
  width: -webkit-calc(100% - 100px); 
  width: calc(100% - 100px); 
}

二十一:設(shè)置select 下拉框文字右對(duì)齊:

select option {
  direction: rtl;
}

二十二:移動(dòng)端 HTML5 audio autoplay 失效問(wèn)題

這個(gè)不是 BUG彤侍,由于自動(dòng)播放網(wǎng)頁(yè)中的音頻或視頻肠缨,會(huì)給用戶(hù)帶來(lái)一些困擾或者不必要的流量消耗,所以蘋(píng)果系統(tǒng)和安卓系統(tǒng)通常都會(huì)禁止自動(dòng)播放和使用 JS 的觸發(fā)播放拥刻,必須由用戶(hù)來(lái)觸發(fā)才可以播放怜瞒。
解決方法:先通過(guò)用戶(hù) touchstart 觸碰父泳,觸發(fā)播放并暫停(音頻開(kāi)始加載般哼,后面用 JS 再操作就沒(méi)問(wèn)題了)吴汪。

document.addEventListener('touchstart', function () {
   document.getElementsByTagName('audio')[0].play();
   document.getElementsByTagName('audio')[0].pause();
});

二十三:移動(dòng)端 HTML5 input date 不支持 placeholder 問(wèn)題

<input placeholder="txt" type="text" onfocus="(this.type='date')" >

部分Android機(jī)型需要點(diǎn)擊兩次,目前沒(méi)有想到什么好的辦法

二十四:網(wǎng)頁(yè)適應(yīng)移動(dòng)端并禁止網(wǎng)頁(yè)縮放

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

user-scalable=no和,user-scalable=0效果一樣

二十五:apple-mobile-web-app-capable設(shè)置Web應(yīng)用是否以全屏模式運(yùn)行

<meta name="apple-mobile-web-app-capable" content="yes">

content的默認(rèn)值是no蒸眠,表示正常顯示漾橙。可通過(guò)只讀屬性window.navigator.standalone來(lái)確定網(wǎng)頁(yè)是否以全屏模式顯示楞卡。

二十七:實(shí)現(xiàn)橫屏豎屏的方案

1.使用 css3媒體查詢(xún)霜运,缺點(diǎn)是寬度和高度不好控制

@media screen and (orientation: portrait) {
    .main {
        -webkit-transform:rotate(-90deg);
        -moz-transform: rotate(-90deg);
        -ms-transform: rotate(-90deg);
        transform: rotate(-90deg);
        width: 100vh;
        height: 100vh;
        /*去掉overflow 微信顯示正常,但是瀏覽器有問(wèn)題蒋腮,豎屏?xí)r強(qiáng)制橫屏縮小*/
        overflow: hidden;
    }
}

@media screen and (orientation: landscape) {
    .main {
        -webkit-transform:rotate(0);
        -moz-transform: rotate(0);
        -ms-transform: rotate(0);
        transform: rotate(0)
    }
}

2.使用js 判斷屏幕的方向或者resize事件

var evt = "onorientationchange" in window ? "orientationchange" : "resize";
    window.addEventListener(evt, function() {
        var width = document.documentElement.clientWidth;
         var height =  document.documentElement.clientHeight;
          $print =  $('#print');
         if( width > height ){

            $print.width(width);
            $print.height(height);
            $print.css('top',  0 );
            $print.css('left',  0 );
            $print.css('transform' , 'none');
            $print.css('transform-origin' , '50% 50%');
         }
         else{
            $print.width(height);
            $print.height(width);
            $print.css('top',  (height-width)/2 );
            $print.css('left',  0-(height-width)/2 );
            $print.css('transform' , 'rotate(90deg)');
            $print.css('transform-origin' , '50% 50%');
         }

    }, false);

二十八:網(wǎng)頁(yè)調(diào)用Android或者IOS的撥號(hào)功能

<a href="tel:110">110</a>

二十九:網(wǎng)頁(yè)長(zhǎng)時(shí)間按住頁(yè)面出現(xiàn)閃退

div{
 -webkit-touch-callout: none;
}

三十:CSS動(dòng)畫(huà)頁(yè)面閃白,動(dòng)畫(huà)卡頓,啟用硬件加速

-webkit-transform:translate3d(0, 0, 0);
-moz-transform:translate3d(0, 0, 0);
-ms-transform:translate3d(0, 0, 0);
transform:translate3d(0, 0, 0);

盡可能地使用合成屬性transform和opacity來(lái)設(shè)計(jì)CSS3動(dòng)畫(huà)淘捡,不使用position的left和top來(lái)定位

三十一:去除谷歌瀏覽器在輸入框填充黃色背景

input:-webkit-autofill{
       -webkit-box-shadow: 0 0 0 1000px white inset; 
}
input[type=text]:focus, input[type=password]:focus{
      -webkit-box-shadow: 0 0 0 1000px white inset; 

參考鏈接:
http://www.reibang.com/p/dc2c4613e60c
https://blog.csdn.net/smile_to_lin/article/details/75349122

原文作者技術(shù)博客:http://www.reibang.com/u/ac4daaeecdfe
95后前端妹子一枚,愛(ài)閱讀池摧,愛(ài)交友焦除,將工作中遇到的問(wèn)題記錄在這里,希望給每一個(gè)看到的你能帶來(lái)一點(diǎn)幫助作彤。
歡迎留言交流膘魄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市竭讳,隨后出現(xiàn)的幾起案子创葡,更是在濱河造成了極大的恐慌,老刑警劉巖绢慢,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灿渴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡胰舆,警方通過(guò)查閱死者的電腦和手機(jī)逻杖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)思瘟,“玉大人荸百,你說(shuō)我怎么就攤上這事”豕ィ” “怎么了够话?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)光绕。 經(jīng)常有香客問(wèn)我女嘲,道長(zhǎng),這世上最難降的妖魔是什么诞帐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任欣尼,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘愕鼓。我一直安慰自己钙态,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布菇晃。 她就那樣靜靜地躺著册倒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪磺送。 梳的紋絲不亂的頭發(fā)上驻子,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音估灿,去河邊找鬼崇呵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛馅袁,可吹牛的內(nèi)容都是我干的演熟。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼司顿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芒粹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起大溜,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤化漆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钦奋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體座云,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年付材,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了朦拖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厌衔,死狀恐怖璧帝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情富寿,我是刑警寧澤睬隶,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站页徐,受9級(jí)特大地震影響苏潜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜变勇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一恤左、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦飞袋、人聲如沸戳气。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)物咳。三九已至锣险,卻和暖如春蹄皱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芯肤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工巷折, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崖咨。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓锻拘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親击蹲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子署拟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361