ios和android 瀏覽器適配問題總結


相關知識點

移動端、 適配(兼容)孕蝉、 ios點擊事件300ms延遲、 點擊穿透腌逢、 定位失效......

問題&解決方案

  • 手機瀏覽器獨有的三個事件降淮?
onTouchmove,ontouchend搏讶,ontouchstart佳鳖,ontouchcancel
  • 為什么要用Zepto?
jquery適用于PC端桌面環(huán)境,桌面環(huán)境更加復雜窍蓝,jquery需要考慮的因素非常多腋颠,尤其表現(xiàn)在兼容性上面,相對于PC端吓笙,移動端的發(fā)雜都遠不及PC端,手機上的帶寬永遠比不上pc端淑玫。pc端下載jquery到本地只需要1~3秒(90+K),但是移動端就慢了很多面睛,2G網(wǎng)絡下你會看到一大片空白網(wǎng)頁在加載絮蒿,相信用戶第二次就沒打開的欲望了。zepto解決了這個問題叁鉴,只有不到10K的大小土涝,2G網(wǎng)絡環(huán)境下也毫無壓力,表現(xiàn)不遜色于jquery幌墓。所以移動端開發(fā)首選框架但壮,個人推薦zepto.js。
  • IOS移動端click事件300ms的延遲響應
移動設備上的web網(wǎng)頁是有300ms延遲的常侣,玩玩會造成按鈕點擊延遲甚至是點擊失效蜡饵。這是由于區(qū)分單擊事件和雙擊屏幕縮放的歷史原因造成的,
2007年蘋果發(fā)布首款iphone上IOS系統(tǒng)搭載的safari為了將適用于PC端上大屏幕的網(wǎng)頁能比較好的展示在手機端上,使用了雙擊縮放(double tap to zoom)的方案胳施,比如你在手機上用瀏覽器打開一個PC上的網(wǎng)頁溯祸,你可能在看到頁面內(nèi)容雖然可以撐滿整個屏幕,但是字體、圖片都很小看不清焦辅,此時可以快速雙擊屏幕上的某一部分博杖,你就能看清該部分放大后的內(nèi)容,再次雙擊后能回到原始狀態(tài)筷登。
雙擊縮放是指用手指在屏幕上快速點擊兩次剃根,iOS 自帶的 Safari 瀏覽器會將網(wǎng)頁縮放至原始比例。
原因就出在瀏覽器需要如何判斷快速點擊上仆抵,當用戶在屏幕上單擊某一個元素時候跟继,例如跳轉(zhuǎn)鏈接<a href="#"></a>,此處瀏覽器會先捕獲該次單擊镣丑,但瀏覽器不能決定用戶是單純要點擊鏈接還是要雙擊該部分區(qū)域進行縮放操作,所以娱两,捕獲第一次單擊后莺匠,瀏覽器會先Hold一段時間t,如果在t時間區(qū)間里用戶未進行下一次點擊十兢,則瀏覽器會做單擊跳轉(zhuǎn)鏈接的處理趣竣,如果t時間里用戶進行了第二次單擊操作,則瀏覽器會禁止跳轉(zhuǎn)旱物,轉(zhuǎn)而進行對該部分區(qū)域頁面的縮放操作遥缕。那么這個時間區(qū)間t有多少呢?在IOS safari下宵呛,大概為300毫秒单匣。這就是延遲的由來。造成的后果用戶純粹單擊頁面宝穗,頁面需要過一段時間才響應户秤,給用戶慢體驗感覺,對于web開發(fā)者來說是逮矛,頁面js捕獲click事件的回調(diào)函數(shù)處理鸡号,需要300ms后才生效,也就間接導致影響其他業(yè)務邏輯的處理须鼎。
解決方案:
fastclick可以解決在手機上點擊事件的300ms延遲
zepto的touch模塊鲸伴,tap事件也是為了解決在click的延遲問題
觸摸事件的響應順序為 touchstart --> touchmove --> touchend --> click,也可以通過綁定ontouchstart事件,加快對事件的響應晋控,解決300ms延遲問題
  • 一些情況下對非可點擊元素如(label,span)監(jiān)聽click事件汞窗,ios下不會觸發(fā)
解決方案:css增加cursor:pointer;
  • 三星手機遮罩層下的input、select糖荒、a等元素可以被點擊和focus(點擊穿透)
問題發(fā)現(xiàn)于三星手機杉辙,這個在特定需求下才會有,因此如果沒有類似問題的可以不看。首先需求是浮層操作蜘矢,在三星上被遮罩的元素依然可以獲取focus狂男、click、change)品腹,有兩種解決方案:
1.是通過層顯示以后加入對應的class名控制岖食,截斷顯示層下方可獲取焦點元素的事件獲取
2.是通過將可獲取焦點元素加入的disabled屬性,也可以利用屬性加dom鎖定的方式(disabled的一種變換方式)
  • 安卓瀏覽器看背景圖片舞吭,有些設備會模糊泡垃。
//用同等比例的圖片在PC機上很清楚,但是手機上很模糊羡鸥,原因是什么呢蔑穴?
經(jīng)過研究,是devicePixelRatio作怪惧浴,因為手機分辨率太小存和,如果按照分辨率來顯示網(wǎng)頁,這樣字會非常小衷旅,所以蘋果當初就把iPhone 4的960*640分辨率捐腿,在網(wǎng)頁里只顯示了480*320,這樣devicePixelRatio=2∈炼ィ現(xiàn)在android比較亂茄袖,有1.5的,有2的也有3的嘁锯。
想讓圖片在手機里顯示更為清晰宪祥,必須使用2x的背景圖來代替img標簽(一般情況都是用2倍)。例如一個div的寬高是100*100猪钮,背景圖必須得200*200品山,然后background-size:contain;,這樣顯示出來的圖片就比較清晰了烤低。
//代碼可以如下:
background:url(../images/icon/all.png)  no-repeat center center;
-webkit-background-size:50px 50px;
background-size: 50px 50px;
display:inline-block; 
width:100%; 
height:50px; 
  • h5頁面有個很蛋疼的問題就是肘交,當輸入框在最底部,點擊軟鍵盤后輸入框會被遮擋扑馁。
//可采用如下方式解決
var oHeight = $(document).height(); //瀏覽器當前的高度
 $(window).resize(function(){ 
      if($(document).height() < oHeight){ 
            $("#footer").css("position","static"); 
      }else{ 
            $("#footer").css("position","absolute");
      } 
});

關于Web移動端Fixed布局的解決方案涯呻,這篇文章也不錯 http://efe.baidu.com/blog/mobile-fixed-layout/

  • 不讓 Android 手機識別郵箱
<meta content="email=no" name="format-detection" />
  • 禁止 iOS 識別長串數(shù)字為電話
<meta content="telephone=no" name="format-detection" />
  • 禁止 iOS 彈出各種操作窗口
-webkit-touch-callout:none
  • 消除 transition 閃屏
-webkit-transform-style: preserve-3d; /*設置內(nèi)嵌的元素在 3D 空間如何呈現(xiàn):保留 3D*/
-webkit-backface-visibility: hidden; /*(設置進行轉(zhuǎn)換的元素的背面在面對用戶時是否可見:隱藏)*/
  • iOS 系統(tǒng)中文輸入法輸入英文時,字母之間可能會出現(xiàn)一個六分之一空格
可以通過正則去掉     
 this.value = this.value.replace(/\u2006/g, '');
  • 禁止ios和android用戶選中文字
-webkit-user-select:none
  • 在ios和andriod中,audio元素和video元素無法自動播放
//解決方案:觸屏即播
$('html').one('touchstart',function(){ audio.play()})
  • ios下取消input在輸入的時候英文首字母的默認大寫
<input autocapitalize="off" autocorrect="off" />
  • android下取消輸入語音按鈕
input::-webkit-input-speech-button {display: none}
  • CSS動畫頁面閃白,動畫卡頓
//解決方法:
1.盡可能地使用合成屬性transform和opacity來設計CSS3動畫腻要,不使用position的left和top來定位
2.開啟硬件加速
  -webkit-transform: translate3d(0, 0, 0);
     -moz-transform: translate3d(0, 0, 0);
      -ms-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
  • fixed定位缺陷
ios下fixed元素容易定位出錯复罐,軟鍵盤彈出時,影響fixed元素定位
android下fixed表現(xiàn)要比iOS更好雄家,軟鍵盤彈出時效诅,不會影響fixed元素定位
ios4下不支持position:fixed
解決方案: 可用iScroll插件解決這個問題
  • 阻止旋轉(zhuǎn)屏幕時自動調(diào)整字體大小
html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {-webkit-text-size-adjust:none;}
  • Input 的placeholder會出現(xiàn)文本位置偏上的情況
input 的placeholder會出現(xiàn)文本位置偏上的情況:
PC端設置line-height等于height能夠?qū)R,而移動端仍然是偏上,解決是設置line-height:normal;
  • 往返緩存問題
點擊瀏覽器的回退乱投,有時候不會自動執(zhí)行js咽笼,特別是在mobile safari中。這與*往返緩存(bfcache)*有關系戚炫。
解決方法 :window.onunload = function(){};
  • calc的兼容性處理
CSS3中的calc變量在iOS6瀏覽器中必須加-webkit-前綴剑刑,目前的FF瀏覽器已經(jīng)無需-moz-前綴。
Android瀏覽器目前仍然不支持calc双肤,所以要在之前增加一個保守尺寸:
div { width: 95%; width: -webkit-calc(100% - 50px); width: calc(100% - 50px); }
  • iOS6下偽類:hover
除了<a>之外的元素無效施掏;
在Android下則有效。類似
div#topFloatBar_l:hover  #topFloatBar_menu { display:block; }
這樣的導航顯示在iOS6點擊沒有點擊效果茅糜,只能通過增加點擊偵聽器給元素增減class來控制子元素七芭。
  • 在移動端修改難看的點擊的高亮效果,iOS和安卓下都有效:
*{-webkit-tap-highlight-color:rgba(0,0,0,0);}
不過這個方法在現(xiàn)在的安卓瀏覽器下限匣,只能去掉那個橙色的背景色抖苦,點擊產(chǎn)生的高亮邊框還是沒有去掉,有待解決米死!
  • 一個CSS3的屬性,加上后贮庞,所關聯(lián)的元素的事件監(jiān)聽都會失效峦筒,等于讓元素變得“看得見,點不著”窗慎。IE到11才開始支持物喷,其他瀏覽器的當前版本基本都支持。
pointer-events: none;

詳細介紹見這里:https://developer.mozilla.org/zh-CN/docs/Web/CSS/pointer-events

  • Zepto點透的解決方案
zepto的tap是通過兼聽綁定在document上的touch事件來完成tap事件的模擬的,及tap事件是冒泡到document上觸發(fā)的,在點擊完成時的tap事件(touchstart\touchend)需要冒泡到document上才會觸發(fā)遮斥,而在冒泡到document之前峦失,用戶手的接觸屏幕(touchstart)和離開屏幕(touchend)是會觸發(fā)click事件的,因為click事件有延遲觸發(fā)(這就是為什么移動端不用click而用tap的原因)(大概是300ms,為了實現(xiàn)safari的雙擊事件的設計),所以在執(zhí)行完tap事件之后术吗,彈出來的選擇組件馬上就隱藏了尉辑,此時click事件還在延遲的300ms之中,當300ms到來的時候较屿,click到的其實不是完成而是**隱藏之后的下方的元素隧魄,如果正下方的元素綁定的有click事件此時便會觸發(fā),如果沒有綁定click事件的話就當沒click隘蝎,但是正下方的是input輸入框(或者select選擇框或者單選復選框)购啄,點擊默認聚焦而彈出輸入鍵盤,也就出現(xiàn)了上面的點透現(xiàn)象嘱么。
//(1)引入fastclick.js狮含,在頁面中加入如下js代碼
 window.addEventListener( "load", function() {
    FastClick.attach( document.body );
 }, false );
//(2)或者有zepto或者jQuery的js里面加上
$(function() {
    FastClick.attach(document.body);
});
//(3)當然require的話就這樣:
var FastClick = require('fastclick');
FastClick.attach(document.body, options);
//(4)用touchend代替tap事件并阻止掉touchend的默認行為preventDefault()
$("#cbFinish").on("touchend", function (event) {
    //很多處理比如隱藏什么的
    event.preventDefault();
});
//(5)延遲一定的時間(300ms+)來處理事件
$("#cbFinish").on("tap", function (event) {
    setTimeout(function(){
     //很多處理比如隱藏什么的
    },320);
});
下面舉例說明一個canvas的例子:
<li><canvas></canvas></li>
js動態(tài)加載圖片和li 總共舉例17張圖片几迄!
vartotal=17; 
varzWin=$(window); 
varrender=function(){
  varpadding=2; 
  varwinWidth=zWin.width(); 
  varpicWidth=Math.floor((winWidth-padding*3)/4); 
  vartmpl ='';
  for(vari=1;i<=totla;i++){ 
     varp=padding; 
     varimgSrc='img/'+i+'.jpg';
     if(i%4==1){
        p=0;
     }
  tmpl +='<li style="width:'+picWidth+'px;height:'+picWidth+'px;padding-left:'+p+'px;padding-top:'+padding+'px;"><canvas id="cvs_'+i+'"></canvas></li>';
  varimageObj = newImage(); 
  imageObj.index = i; 
  imageObj.onload = function(){
    varcvs =$('#cvs_'+this.index)[0].getContext('2d');
    cvs.width = this.width;
    cvs.height=this.height;
    cvs.drawImage(this,0,0);
  }
  imageObj.src=imgSrc;
  }
}
render();
  • 防止手機中網(wǎng)頁放大和縮小
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  • apple-mobile-web-app-capable
apple-mobile-web-app-capable是設置Web應用是否以全屏模式運行蔚龙。
語法:<meta name="apple-mobile-web-app-capable"content="yes">
說明:如果content設置為yes,Web應用會以全屏模式運行乓旗,反之府蛇,則不會。
content的默認值是no屿愚,表示正常顯示汇跨。你可以通過只讀屬性window.navigator.standalone來確定網(wǎng)頁是否以全屏模式顯示。
  • html5調(diào)用安卓或者ios的撥號功能
html5提供了自動調(diào)用撥號的標簽妆距,只要在a標簽的href中添加tel:就可以了穷遂。
如下:
<ahref="tel:4008106999,1034">400-810-6999 轉(zhuǎn) 1034</a>
撥打手機直接如下:
 <a href="tel:15677776767">點擊撥打15677776767</a>
body {
    -webkit-overflow-scrolling:touch; 
    overflow-scrolling: touch;
}
Android3+和iOS5+支持CSS3的新屬性為overflow-scrolling
  • 禁止復制娱据、選中文本
Element {-webkit-user-select:none;
  -moz-user-select:none;
  -khtml-user-select:none;
   user-select:none;
}
  • iphone及ipad下輸入框默認內(nèi)陰影
Element{
  -webkit-appearance:none;
}
  • 13蚪黑、ios和android下觸摸元素時出現(xiàn)半透明灰色遮罩
Element {
  -webkit-tap-highlight-color:rgba(255,255,255,0)
}
設置alpha值為0就可以去除半透明灰色遮罩,備注:transparent的屬性值在android下無效中剩。

一篇文章有詳細介紹忌穿,地址:http://www.jb51.net/post/phone_web_ysk

  • active兼容處理 即 偽類 :active 失效
方法一:body添加ontouchstart
<body ontouchstart="">
方法二:js給 document 綁定 touchstart 或 touchend 事件
<style>
   a {
     color:#000;
   }
   a:active {
      color:#fff;
    }
    </style>
    <a herf=foo >bar</a>
 <script>
    document.addEventListener('touchstart',function(){},false);
</script>
  • 動畫定義3D啟用硬件加速
Element {
  -webkit-transform:translate3d(0,0,0)
  transform: translate3d(0,0,0);
}
注意:3D變形會消耗更多的內(nèi)存與功耗
  • Retina屏的1px邊框
Element{
  border-width:thin;
}
  • webkit mask 兼容處理
某些低端手機不支持css3 mask,可以選擇性的降級處理结啼。
比如可以使用js判斷來引用不同class:
if('WebkitMask'indocument.documentElement.style){
  alert('支持mask');
}else{
  alert('不支持mask');
}
  • 圓角bug
某些Android手機圓角失效
解決方案:background-clip: padding-box;
  • 頂部狀態(tài)欄背景色
<meta name="apple-mobile-web-app-status-bar-style"content="black"/>
說明:除非你先使用apple-mobile-web-app-capable指定全屏模式掠剑,否則這個meta標簽不會起任何作用。
如果content設置為default郊愧,則狀態(tài)欄正常顯示朴译。
如果設置為blank,則狀態(tài)欄會有一個黑色的背景属铁。
如果設置為blank-translucent眠寿,則狀態(tài)欄顯示為黑色半透明。
如果設置為default或blank焦蘑,則頁面顯示在狀態(tài)欄的下方盯拱,即狀態(tài)欄占據(jù)上方部分,頁面占據(jù)下方部分喇肋,二者沒有遮擋對方或被遮擋坟乾。
如果設置為blank-translucent,則頁面會充滿屏幕蝶防,其中頁面頂部會被狀態(tài)欄遮蓋咨趼隆(會覆蓋頁面20px高度,而iphone4和itouch4的Retina屏幕為40px)间学。
默認值是default殷费。
  • 設置緩存
<meta http-equiv="Cache-Control"content="no-cache"/>
手機頁面通常在第一次加載后會進行緩存印荔,然后每次刷新會使用緩存而不是去重新向服務器發(fā)送請求。
如果不希望使用緩存可以設置no-cache详羡。
  • 桌面圖標
<link rel="apple-touch-icon"href="touch-icon-iphone.png"/>
<link rel="apple-touch-icon"sizes="76x76"href="touch-icon-ipad.png"/>
<link rel="apple-touch-icon"sizes="120x120"href="touch-icon-iphone-retina.png"/>
<link rel="apple-touch-icon"sizes="152x152"href="touch-icon-ipad-retina.png"/>
iOS下針對不同設備定義不同的桌面圖標仍律。如果不定義則以當前屏幕截圖作為圖標。
上面的寫法可能大家會覺得會有默認光澤实柠,下面這種設置方法可以去掉光澤效果水泉,還原設計圖的效果!
   <link rel="apple-touch-icon-precomposed"href="touch-icon-iphone.png"/>
圖片尺寸可以設定為5757(px)或者Retina可以定為114114(px)窒盐,ipad尺寸為72*72(px)
  • 啟動畫面
<link rel="apple-touch-startup-image"href="start.png"/>
iOS下頁面啟動加載時顯示的畫面圖片草则,避免加載時的白屏。
可以通過madia來指定不同的大行防臁:
<!--iPhone-->
<link href="apple-touch-startup-image-320x460.png"media="(device-width: 320px)" rel="apple-touch-startup-image"/>
<!-- iPhone Retina -->
<link href="apple-touch-startup-image-640x920.png"media="(device-width: 320px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image"/>
<!-- iPhone 5-->
<link rel="apple-touch-startup-image"media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="apple-touch-startup-image-640x1096.png">
<!-- iPad portrait-->
<link href="apple-touch-startup-image-768x1004.png"media="(device-width: 768px) and (orientation: portrait)" rel="apple-touch-startup-image"/>
<!-- iPad landscape-->
<link href="apple-touch-startup-image-748x1024.png"media="(device-width: 768px) and (orientation: landscape)" rel="apple-touch-startup-image"/>
<!-- iPad Retina portrait-->
<link href="apple-touch-startup-image-1536x2008.png"media="(device-width: 1536px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image"/>
<!-- iPad Retina landscape-->
<link href="apple-touch-startup-image-1496x2048.png"media="(device-width: 1536px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)"rel="apple-touch-startup-image"/>
  • 瀏覽器私有及其它meta
以下屬性在項目中沒有應用過炕横,可以寫一個demo測試以下!
//QQ瀏覽器私有
全屏模式
<meta name="x5-fullscreen"content="true">
強制豎屏
<meta name="x5-orientation"content="portrait">
強制橫屏
<meta name="x5-orientation"content="landscape">
應用模式
<meta name="x5-page-mode"content="app">
//UC瀏覽器私有
全屏模式
<meta name="full-screen"content="yes">
強制豎屏
<meta name="screen-orientation"content="portrait">
強制橫屏
<meta name="screen-orientation"content="landscape">
應用模式
<meta name="browsermode"content="application">
//其它
針對手持設備優(yōu)化葡粒,主要是針對一些老的不識別viewport的瀏覽器份殿,比如黑莓
<meta name="HandheldFriendly" content="true">
微軟的老式瀏覽器
<meta name="MobileOptimized" content="320">
windows phone 點擊無高光
<meta name="msapplication-tap-highlight" content="no">
  • IOS中input鍵盤事件keyup、keydown嗽交、keypress支持不是很好
問題是這樣的卿嘲,用input search做模糊搜索的時候,在鍵盤里面輸入關鍵詞夫壁,會通過ajax后臺查詢腔寡,然后返回數(shù)據(jù),然后再對返回的數(shù)據(jù)進行關鍵詞標紅掌唾。用input監(jiān)聽鍵盤keyup事件,在安卓手機瀏覽器中是可以的忿磅,但是在ios手機瀏覽器中變紅很慢糯彬,用輸入法輸入之后,并未立刻相應keyup事件葱她,只有在通過刪除之后才能相應撩扒!
解決辦法:
可以用html5的oninput事件去代替keyup
<input type="text"id="testInput">
<script type="text/javascript">
  document.getElementById('testInput').addEventListener('input',function(e){
    varvalue = e.target.value;
  });
</script>
然后就達到類似keyup的效果!
  • h5網(wǎng)站input 設置為type=number的問題
- h5網(wǎng)頁input 的type設置為number一般會產(chǎn)生三個問題吨些,一個問題是maxlength屬性不好用了搓谆。
另外一個是form提交的時候,默認給取整了豪墅。三是部分安卓手機出現(xiàn)樣式問題泉手。

//問題一解決,我目前用的是js偶器。如下
<input type="number"oninput="checkTextLength(this ,10)">
functioncheckTextLength(obj, length) {
if(obj.value.length > length) {
obj.value = obj.value.substr(0, length);
}
}
//問題二斩萌,是因為form提交默認做了表單驗證缝裤,step默認是1,要設置step屬性,假如保留2位小數(shù)颊郎,寫法如下:
<input type="number"step="0.01"/>
關于step憋飞,我在這里做簡單的介紹,input 中type=number姆吭,一般會自動生成一個上下箭頭榛做,點擊上箭頭默認增加一個step,點擊下箭頭默認會減少一個step内狸。number中默認step是1检眯。也就是step=0.01,可以允許輸入2位小數(shù),并且點擊上下箭頭分別增加0.01和減少0.01答倡。
假如step和min一起使用轰传,那么數(shù)值必須在min和max之間。
看下面的例子:
<input type="number"step="3.1"min="1"/>
輸入框可以輸入哪些數(shù)字瘪撇?
首先获茬,最小值是1,那么可以輸入1.0倔既,第二個是可以輸入(1+3.1)那就是4.1,以此類推恕曲,每次點擊上下箭頭都會增加或者減少3.1,輸入其他數(shù)字無效渤涌。這就是step的簡單介紹佩谣。
//問題三,去除input默認樣式
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 設置input 按鈕樣式會被默認樣式覆蓋

解決方式如下:
input,
textarea {
border: 0;
-webkit-appearance: none;
}
設置默認樣式為none

- select 下拉選擇設置右對齊

設置如下:
select option {
direction: rtl;
}

- 通過transform進行skew變形实蓬,rotate旋轉(zhuǎn)會造成出現(xiàn)鋸齒現(xiàn)象

可以設置如下:
-webkit-transform: rotate(-4deg) skew(10deg) translateZ(0);
transform: rotate(-4deg) skew(10deg) translateZ(0);
outline: 1px solid rgba(255,255,255,0)

- 關于 iOS 與 OS X 端字體的優(yōu)化(橫豎屏會出現(xiàn)字體加粗不一致等)

iOS 瀏覽器橫屏時會重置字體大小茸俭,設置 text-size-adjust 為 none 可以解決 iOS 上的問題,
但桌面版 Safari 的字體縮放功能會失效安皱,因此最佳方案是將 text-size-adjust 為 100% 调鬓。
-webkit-text-size-adjust:100%;
-ms-text-size-adjust:100%;
text-size-adjust:100%;

- 移動端 HTML5 audio autoplay 失效問題

這個不是 BUG,由于自動播放網(wǎng)頁中的音頻或視頻酌伊,會給用戶帶來一些困擾或者不必要的流量消耗腾窝,所以蘋果系統(tǒng)和安卓系統(tǒng)通常都會禁止自動播放和使用 JS 的觸發(fā)播放,必須由用戶來觸發(fā)才可以播放居砖。
解決方法思路:先通過用戶 touchstart 觸碰虹脯,觸發(fā)播放并暫停(音頻開始加載,后面用 JS 再操作就沒問題了)奏候。
document.addEventListener('touchstart',function() {
document.getElementsByTagName('audio')[0].play();
document.getElementsByTagName('audio')[0].pause();
});

- 移動端 HTML5 input date 不支持 placeholder 問題

這個我感覺沒有什么好的解決方案循集,用如下方法
<input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" id="date">

- 部分機型存在type為search的input,自帶close按鈕樣式修改方法

有些機型的搜索input控件會自帶close按鈕(一個偽元素)鼻由,而通常為了兼容所有瀏覽器暇榴,我們會自己實現(xiàn)一個厚棵,此時去掉原生close按鈕的方法為:

Search::-webkit-search-cancel-button{

display:none;
}
如果想使用原生close按鈕,又想使其符合設計風格蔼紧,可以對這個偽元素的樣式進行修改婆硬。

- 喚起select的option展開

//zepto方式:
$(sltElement).trigger("mousedown");
//原生js方式:
functionshowDropdown(sltElement) {
varevent;
event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown',true,true, window);
sltElement.dispatchEvent(event);
};

> 以上所有資料搜集整理自網(wǎng)絡,如有不對的地方希望及時告知奸例,歡迎大家批評指正彬犯,謝謝!
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末查吊,一起剝皮案震驚了整個濱河市谐区,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逻卖,老刑警劉巖宋列,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異评也,居然都是意外死亡炼杖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門盗迟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坤邪,“玉大人,你說我怎么就攤上這事罚缕⊥Х模” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵邮弹,是天一觀的道長黔衡。 經(jīng)常有香客問我,道長腌乡,這世上最難降的妖魔是什么员帮? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮导饲,結果婚禮上,老公的妹妹穿的比我還像新娘氯材。我一直安慰自己渣锦,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布氢哮。 她就那樣靜靜地躺著,像睡著了一般冗尤。 火紅的嫁衣襯著肌膚如雪听盖。 梳的紋絲不亂的頭發(fā)上胀溺,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音皆看,去河邊找鬼仓坞。 笑死,一個胖子當著我的面吹牛腰吟,可吹牛的內(nèi)容都是我干的无埃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼毛雇,長吁一口氣:“原來是場噩夢啊……” “哼嫉称!你這毒婦竟也來了?” 一聲冷哼從身側響起灵疮,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤织阅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后震捣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荔棉,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年伍派,在試婚紗的時候發(fā)現(xiàn)自己被綠了江耀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡诉植,死狀恐怖祥国,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晾腔,我是刑警寧澤舌稀,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站灼擂,受9級特大地震影響壁查,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剔应,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一睡腿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峻贮,春花似錦席怪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至船万,卻和暖如春刻撒,著一層夾襖步出監(jiān)牢的瞬間骨田,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工声怔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留态贤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓捧搞,卻偏偏與公主長得像抵卫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胎撇,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

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

  • 瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補丁和內(nèi)補丁不同問題癥狀:隨便寫幾個標簽介粘,不加樣式控制的情況下,各自的m...
    追卓2018閱讀 1,316評論 0 2
  • Meta 基礎知識: H5 頁面窗口自動調(diào)整到設備寬度晚树,并禁止用戶縮放頁面姻采。 空白頁基本 meta 標簽 其他 m...
    Dimen_閱讀 1,000評論 2 4
  • H5頁面窗口自動調(diào)整到設備寬度,并禁止用戶縮放頁面//一爵憎、HTML頁面結構 // width 設置viewp...
    tiandashu閱讀 16,721評論 0 9
  • 打開電腦宝鼓,端坐在書桌前刑棵,正準備開始寫論文。隔壁的舍友在看綜藝愚铡,正捧腹大笑蛉签,你也被笑聲吸引過去,看了一會沥寥,你告訴自己...
    鄒小胖_1dca閱讀 318評論 0 2
  • 在北京短暫停留幾天碍舍,想給自己找點事情做,還不想花錢邑雅。在網(wǎng)上看到清華大學這個活動的時候片橡,就決定去了。 但是淮野,說到底真...
    廖老板閱讀 214評論 3 2