H5移動端中必備技能

Meta基礎知識:

  • H5頁面窗口自動調整到設備寬度,並禁止用戶縮放頁面<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />css

  • 可隱藏地址欄,僅針對IOS的Safari(注:IOS7.0版本之後,safari上已看不到效果) <meta name="apple-mobile-web-app-capable" content="yes" />html

  • 僅針對IOS的Safari頂端狀態條的樣式(可選default/black/black-translucent ) <meta name="apple-mobile-web-app-status-bar-style" content="black" />android

  • IOS中禁用將數字識別爲電話號碼/忽略Android平臺中對郵箱地址的識別 <meta name="format-detection"content="telephone=no, email=no" />ios

  • 啓用360瀏覽器的極速模式(webkit) <meta name="renderer" content="webkit">web

  • 避免IE使用兼容模式 <meta http-equiv="X-UA-Compatible" content="IE=edge">windows

  • 針對手持設備優化,主要是針對一些老的不識別viewport的瀏覽器,好比黑莓 <meta name="HandheldFriendly" content="true">api

  • uc強制豎屏 <meta name="screen-orientation" content="portrait">跨域

  • QQ強制豎屏 <meta name="x5-orientation" content="portrait">瀏覽器

  • UC強制全屏 <meta name="full-screen" content="yes">微信

  • QQ強制全屏 <meta name="x5-fullscreen" content="true">

  • UC應用模式 <meta name="browsermode" content="application">

  • QQ應用模式 <meta name="x5-page-mode" content="app">

  • windows phone 點擊無高光 <meta name="msapplication-tap-highlight" content="no">

 

撥打電話,發送短信,郵件設置

 1、打電話

<a href="tel:0755-10086">打電話給:0755-10086</a>

 2、發短信,winphone系統無效

<a href="sms:10086">發短信給: 10086</a>

3、寫郵件

<a href="mailto:863139978@qq.com">點擊我發郵件</a>

一個完整的例子,包含收件人,抄送者,祕密抄送者,主題,內容。

<a href="mailto:863139978@qq.com;384900096@qq.com?cc=zhangqian0406@yeah.net&bcc=993233461@qq.com&subject=[郵件主題]&body=騰訊誠邀您參與%0A%0Ahttp://www.baidu.com%0A%0A<img src='images/1.jpg' />">點擊我發郵件</a>

 

 移動端touch事件

touchstart——當手指觸碰屏幕時候發生。無論當前有多少隻手指

touchmove——當手指在屏幕上滑動時連續觸發。一般咱們再滑屏頁面,會調用eventpreventDefault()能夠阻止默認狀況的發生:阻止頁面滾動

touchend——當手指離開屏幕時觸發

touchcancel——系統中止跟蹤觸摸時候會觸發。例如在觸摸過程當中忽然頁面alert()一個提示框,此時會觸發該事件,這個事件比較少用

 

//TouchEvent說明:

touches:屏幕上全部手指的信息

targetTouches:手指在目標區域的手指信息

changedTouches:最近一次觸發該事件的手指信息

touchend時,touchestargetTouches信息會被刪除,changedTouches保存的最後一次的信息,最好用於計算手指信息

//參數信息(changedTouches[0])

clientXclientY在顯示區的座標

target:當前元素

//事件響應順序

ontouchstart  > ontouchmove  > ontouchend > onclick

 

超實用的CSS樣式

 

// 禁止長按連接與圖片彈出菜單

a,img { -webkit-touch-callout: none }  

 

// 禁止ios和android用戶選中文字

html,body {-webkit-user-select:none; user-select: none; }

// 改變輸入框placeholder的顏色值

::-webkit-input-placeholder { /* WebKit browsers */color: #999; }

:-moz-placeholder { /* Mozilla Firefox 4 to 18 */color: #999; }

::-moz-placeholder { /* Mozilla Firefox 19+ */color: #999; }

:-ms-input-placeholder { /* Internet Explorer 10+ */color: #999; }

input:focus::-webkit-input-placeholder{ color:#999; }

例子:當咱們對input的placeholder的樣式進行設置時,代碼input::-webkit-input-placeholder {color: #FF0000;}

知識點:單冒號(:)用於CSS3僞類,雙冒號(::)用於CSS3僞元素。

css僞類:CSS 僞類用於向某些選擇器添加特殊的效果。

css僞元素:CSS 僞元素用於向某些選擇器設置特殊效果。

 

// android上去掉語音輸入按鈕

input::-webkit-input-speech-button {display: none}

// 阻止windows Phone的默認觸摸事件

/*說明:winphone下默認觸摸事件事件使用e.preventDefault是無效的,可經過樣式來禁用,如:*/

html { -ms-touch-action:none; } //禁止winphone默認觸摸事件

 

//取消input在ios下,輸入的時候英文首字母的默認大寫

<input autocapitalize="off" autocorrect="off" />

 

//IOS有拍照、錄像、選取本地圖片功能,部分Android只有選擇本地圖片功能。Winphone不支持

<input type="file" accept="images/*" />

<input type="file" accept="video/*" />

 

//屏幕旋轉的事件和樣式

 

//JS處理

function orientInit(){

   var orientChk = document.documentElement.clientWidth > document.documentElement.clientHeight?'landscape':'portrait';

   if(orientChk =='lapdscape'){

       //這裏是橫屏下須要執行的事件

   }else{

       //這裏是豎屏下須要執行的事件

   }

}

 

orientInit();

window.addEventListener('onorientationchange' in window?'orientationchange':'resize', function(){

   setTimeout(orientInit, 100);

},false)    

 

//CSS處理

//豎屏時樣式

@media all and (orientation:portrait){   }

//橫屏時樣式

@media all and (orientation:landscape){   }

 

//audio元素和video元素在ios和andriod中沒法自動播放

//音頻,寫法一

<audio src="music/bg.mp3" autoplay loop controls>你的瀏覽器還不支持哦</audio>

 

//音頻,寫法二

<audio controls="controls">

   <source src="music/bg.ogg" type="audio/ogg"></source>

   <source src="music/bg.mp3" type="audio/mpeg"></source>

   優先播放音樂bg.ogg,不支持在播放bg.mp3

</audio>

 

//JS綁定自動播放(操做window時,播放音樂)

$(window).one('touchstart', function(){

   music.play();

})

 

//微信下兼容處理

document.addEventListener("WeixinJSBridgeReady", function () {

   music.play();

}, false);

//小結

//1.audio元素的autoplay屬性在IOS及Android上沒法使用,在PC端正常

//2.audio元素沒有設置controls時,在IOS及Android會佔據空間大小,而在PC端Chrome是不會佔據任何空間

 

 

//IOS下可以使用 -webkit-text-size-adjust禁止用戶調整字體大小

body { -webkit-text-size-adjust:100%!important; }

 

 //JS判斷設備

function deviceType(){

   var ua = navigator.userAgent;

   var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];    

   for(var i=0; i<len,len = agent.length; i++){

       if(ua.indexOf(agent[i])>0){        

           break;

       }

   }

}

deviceType();

window.addEventListener('resize', function(){

   deviceType();

})

 

//JS判斷微信瀏覽器

function isWeixin(){

   var ua = navigator.userAgent.toLowerCase();

   if(ua.match(/MicroMessenger/i)=='micromessenger'){

       return true;

   }else{

       return false;

   }

}

//開啓硬件加速

//目前,像Chrome/Filefox/Safari/IE9+以及最新版本Opera都支持硬件加速,當檢測到某個DOM元素應用了某些CSS規則時就會自動開啓,從而解決頁面閃白,保證動畫流暢。

.css {

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

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

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

   transform: translate3d(0,0,0);

}

//渲染優化

//1.禁止使用iframe(阻塞父文檔onload事件)

//2.禁止使用gif圖片實現loading效果(下降CPU消耗,提高渲染性能)

//使用CSS3代碼代替JS動畫;

//開啓GPU加速;

   //使用base64位編碼圖片(不小圖而言,大圖不建議使用)

   // 對於一些小圖標,可使用base64位編碼,以減小網絡請求。但不建議大圖使用,比較耗費CPU。小圖標優點在於:

   //1.減小HTTP請求;

   //2.避免文件跨域;

   //3.修改及時生效;

 

//畫三角形

作移動端的,常常會遇到小三角,大家仍是循序漸進的切圖作背景嗎,如今有全新的css知識來知足咱們的要求。

  這是一個li,直接貼代碼:

li:before { content: ''; width: 0; height: 0; bottom: 33px; left: -18px; position: absolute; border: 7px solid transparent; border-right: 12px solid #999;}

相關文章
相關標籤/搜索