移動(dòng)端1

一大猛、使用真實(shí)手機(jī)測(cè)試未發(fā)布網(wǎng)頁(yè)的方法

方法① 在虛擬機(jī)中搭建xampp务蝠,將文件通過(guò)FTP傳到虛擬機(jī)匹耕,在一個(gè)局域網(wǎng)中,用手機(jī)訪問(wèn)虛擬機(jī)的IP地址

? 特點(diǎn): 繁瑣怒竿、可調(diào)試PHP

方法②?使用Fiddler用手機(jī)訪問(wèn)http://127.0.0.1進(jìn)行訪問(wèn)

? 特點(diǎn): 有些公眾號(hào)無(wú)法使用Fiddler打開(kāi)

方法② 放在nginx的html跟目錄改為項(xiàng)目的目錄忧额,用手機(jī)通過(guò)局域網(wǎng)訪問(wèn)電腦的IP地址,可調(diào)試網(wǎng)頁(yè)

? 特點(diǎn): 相對(duì)簡(jiǎn)單愧口,不可調(diào)試PHP

方法③ 將WebStorm的http://localhost:63342改為http://127.0.0.1:63342睦番,用手機(jī)通過(guò)Fiddler訪問(wèn)

? 特點(diǎn): 最簡(jiǎn)單,不可調(diào)試PHP耍属,無(wú)法在微信中打開(kāi)(除非額外配置(修改端口)托嚣,使其可在局域網(wǎng)打開(kāi))

調(diào)試手機(jī)中頁(yè)面的方法

方法① 使用Chrome DevTools遠(yuǎn)程調(diào)試Android和iOS頁(yè)面

? 特點(diǎn): 可調(diào)試需要用微信瀏覽器打開(kāi)的頁(yè)面

? 參考: https://juejin.im/entry/5afd1b276fb9a07acc11ec81?utm_medium=fe&utm_source=weixinqun

? 步驟: 1、chrome瀏覽器翻墻厚骗,在地址欄輸入:?chrome://inspect

? ? ? ? 2示启、手機(jī)和電腦用usb連接,打開(kāi)USB調(diào)試

? ? ? ? 3领舰、在手機(jī)上打開(kāi)網(wǎng)頁(yè)夫嗓,電腦上可顯示此手機(jī)打開(kāi)的頁(yè)面,點(diǎn)擊當(dāng)前顯示的頁(yè)面下的inspect即可

? ? ? ? 注意:?有些app里的網(wǎng)頁(yè)無(wú)法顯示網(wǎng)址冲秽,不支持調(diào)試

? ? ? ? ? ? ? 有些時(shí)候不能正常顯示網(wǎng)址舍咖,重新插拔數(shù)據(jù)線即可

方法② 使用Mac?調(diào)試 IOS?系統(tǒng)的 Safari 瀏覽器

步驟:

1、打開(kāi)蘋(píng)果手機(jī)→設(shè)置→Safari瀏覽器→高級(jí)→Web檢查器

2锉桑、打開(kāi) Mac 上的 Safari瀏覽器→偏好設(shè)置→高級(jí)→在菜單欄中顯示'開(kāi)發(fā)'菜單

3排霉、用數(shù)據(jù)線連接 Mac 電腦和蘋(píng)果手機(jī)→選擇信任設(shè)備→在手機(jī)的 Safari瀏覽器 中打開(kāi)需要調(diào)試的頁(yè)面→在電腦上點(diǎn)擊開(kāi)發(fā)→**的iPhone→打開(kāi)調(diào)試的網(wǎng)址→打開(kāi)調(diào)試界面

方法③ 使用vconsole

https://github.com/Tencent/vConsole//vConsole文檔

vConsole是一個(gè)輕量、可拓展民轴、針對(duì)手機(jī)網(wǎng)頁(yè)的前端開(kāi)發(fā)者調(diào)試面板

特性

① 查看console日志

② 查看網(wǎng)絡(luò)請(qǐng)求

③ 查看頁(yè)面element結(jié)構(gòu)

④ 查看Cookies和localStorage

⑤ 手動(dòng)執(zhí)行JS命令行

⑥ 自定義插件

開(kāi)啟vconsole:

<script src="http://wechatfe.github.io/vconsole/lib/vconsole.min.js?v=3.2.0"></script>

<script>

? var vConsole = new VConsole();? ? //初始化

? console.log('Hello world');

</script>

http://debugx5.qq.com????????微信瀏覽器清除緩存的網(wǎng)址,勾選需要清除的選項(xiàng)即可

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?也可以開(kāi)啟vconsole

方法④ 適用于Safari

? 瀏覽器設(shè)置: Safari→偏好設(shè)置→高級(jí)→勾選"在菜單欄中顯示開(kāi)發(fā)"菜單

? iphone設(shè)置: 設(shè)置→Safari→高級(jí)→打開(kāi) Web 檢查器

方法⑤ iOS模擬器: 不需要真機(jī)攻柠,適合調(diào)試Webview和H5有頻繁交互的功能頁(yè)面

? 下載Xcode→運(yùn)行項(xiàng)目→選擇模擬器iphonex→編譯后就會(huì)打開(kāi)模擬器

微信瀏覽器是在webview的上層做的緩存:如果請(qǐng)求過(guò)了這個(gè)地址球订,就會(huì)存在本地,之后就不取線上的了

在調(diào)試階段或者頻繁更新的頁(yè)面加入以下頭信息可防止緩存(有些手機(jī)無(wú)效)

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />

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

<meta http-equiv="Expires" content="0" />

移動(dòng)端彈出鍵盤(pán)時(shí)瑰钮,fixed定位在底部的內(nèi)容依然會(huì)固定出現(xiàn)在鍵盤(pán)上方

建議在移動(dòng)端的基礎(chǔ)樣式中設(shè)置 white-space:nowrap; 在個(gè)別元素上允許換行

在ios中冒滩,最下面的margin-bottom可能會(huì)不起作用,建議換成padding-bottom

注意: 在移動(dòng)端浪谴,運(yùn)行js時(shí)旦部,*.gif、css動(dòng)畫(huà)可能會(huì)暫停较店,無(wú)法完整顯示加載中

var obj={id:"1", value:"5"};

alert(JSON.stringify(obj)); ? ? ?? //將對(duì)象轉(zhuǎn)換為json字符串可用于移動(dòng)端調(diào)試

如:

try{

? 可能出錯(cuò)的語(yǔ)句(執(zhí)行語(yǔ)句)

}catch(err){

?alert(JSON.stringify(err)); ? ?? //或: alert(err.message)

}

_______________________________________________________________________________________________

二士八、移動(dòng)端設(shè)置視口及其它meta(通用)

① <meta charset="UTF-8"> ? ? ? ?//設(shè)置網(wǎng)頁(yè)的編碼格式

②<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? //必備,WebStorm快捷鍵meta:vp

或<meta name="viewport" content="initial-scale=1.0, minimum-scale=0.5, maximum-scale=1.0,

user-scalable=yes" />

? width=device-width: 屏幕的寬等于分辨率的寬

? initial-scale=1: 指定視口的初始化縮放倍率為1

? user-scalable=no/0: 不允許用于手動(dòng)縮放網(wǎng)頁(yè),yes/1允許縮放

? ? ? ? ? ? ? ? ? ? 設(shè)置為no后梁呈,minimum-scale 和 maximum-scale都將被忽略婚度,因?yàn)椴豢赡芸s放

③ <meta name="format-detection" content="telephone=no" />? //禁止iPhone把數(shù)字識(shí)別為電話號(hào)碼

④ <meta name="format-detection" content="email=no" /> ? ?? //忽略Android對(duì)郵箱地址的識(shí)別

⑤ <meta name="format-detection" content="adress=no" /> ? ? //點(diǎn)擊地址后,禁止跳轉(zhuǎn)至地圖

<meta name="format-detection" content="telephone=no,email=no,adress=no" />?? //③④⑤的簡(jiǎn)寫(xiě)

⑥?<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">? ? //在360等雙核瀏覽器中強(qiáng)制使用最新的內(nèi)核渲染頁(yè)面

target-densitydpi=device-dpi: 屏幕像素密度官卡,每英寸點(diǎn)的數(shù)量(dpi)

取值范圍:

? device-dpi: 使用設(shè)備原本的dpi作為目標(biāo)dpi蝗茁,不會(huì)發(fā)生默認(rèn)縮放

? high-dpi: 使用hdpi作為目標(biāo)dpi,中等像素密度和低像素密度設(shè)備相應(yīng)縮小

? medium-dpi: 使用mdpi作為目標(biāo)dpi寻咒,高像素密度設(shè)備相應(yīng)放大哮翘,低像素密度設(shè)備相應(yīng)縮小(默認(rèn))

? low-dpi: 使用ldpi作為目標(biāo)dpi,中等像素密度和高像素密度設(shè)備相應(yīng)放大

? 整數(shù)數(shù)字: 指定一個(gè)具體的dpi值作為target dpi毛秘,必須在70–400之間

注:① 為防止Android Browser和WebView根據(jù)不同屏幕的像素密度對(duì)頁(yè)面縮放饭寺,可將viewport的target-densitydpi設(shè)置為device-dpi(否則頁(yè)面會(huì)根據(jù)當(dāng)前屏幕的像素密度進(jìn)行展示),同時(shí)還需要將viewport的 width定義為與設(shè)備的width匹配叫挟,這樣頁(yè)面就可以和屏幕相適應(yīng)

? ?② 為了兼容性考慮艰匙,Android 4.4 以上拋棄了target-densitydpi屬性,它只在Android舊設(shè)備上生效

網(wǎng)頁(yè)的框架(灰色的可酌情添加抹恳,更淺的在PC端使用)

<html>

? <meta name="description" content="">

? <meta name="keywords" content="">

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

? <meta name="format-detection" content="telephone=no,email=no,adress=no"/>

? <meta http-equiv="x-dns-prefetch-control" content="on"/>

? <link rel="dns-prefetch" >

? <!-- Set render engine for 360 browser -->

? <meta name="renderer" content="webkit">

? <!-- No Baidu Siteapp-->

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

? <!-- Add to homescreen for Chrome on Android -->

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

? <!-- Add to homescreen for Safari on iOS -->

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

? <meta name="apple-mobile-web-app-status-bar-style" content="black">

? <meta name="apple-mobile-web-app-title" content="myApp"/>

? <!-- Tile icon for Win8 (tile color) -->

? <meta name="msapplication-TileColor" content="#0e90d2">

? <meta?name="theme-color"?content="#0096ff" />

? <title>myApp</title>

? <link rel="stylesheet" href="assets/css/app.css"></head>

<body>

<!--在這里編寫(xiě)代碼-->

<!--[if (gte IE 9)|!(IE)]><!-->

<script src="assets/js/jquery.min.js"></script>

<!--<![endif]-->

<!--[if lte IE 8 ]>

<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>

<script src="http://cdn.staticfile.org/modernizr/2.8.3/modernizr.js"></script>

<script src="assets/js/amazeui.ie8polyfill.min.js"></script>

<![endif]-->

<script src="assets/js/app.js"></script>

</body>

</html>

注意:favicon.ico使用服務(wù)器上的即可员凝,不需要使用link標(biāo)簽

<link rel="icon" href="static/images/favicon.ico" type="image/x-icon" />

<link rel="shortcut icon" href="static/images/favicon.ico" type="image/x-icon" />

三、CSS3 Media Query 媒體查詢技術(shù):

@media not/only MEDIA-TYPE and (MEDIA-FEATURE){ CSS樣式規(guī)則?} ? ? ? ?//不要忘記加空格

? MEDIA-TYPE: 媒體類型

? ? 取值:

? ? ?① all: 所有設(shè)備(默認(rèn)值)

? ? ?② screen: 屏幕奋献,電腦健霹、手機(jī)、平板電腦的屏幕

? ? ?③ tv: 電視設(shè)備

? MEDIA-FEATURE: 媒體特性

? ? 取值:

? ? ?① width: 指定瀏覽器的窗口寬度是否為指定的數(shù)值(手機(jī)屏幕一般為320px-580px)

? ? ?② min-width: 指定瀏覽器寬度的最小值

? ? ?③ max-width: 指定瀏覽器寬度的最大值

JS的計(jì)算方式:

document.documentElement.style.fontSize = document.documentElement.clientWidth/32+ 'px';

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 32: iPhone6/7/8(寬375px)下瓶蚂,1rem =?11.71875px

CSS的形式:

@media screen and (min-width: 320px) and (max-width: 359px) {html{font-size:10px;}}

@media screen and (min-width: 360px) and (max-width: 374px) {html{font-size:11.25px;}}

@media screen and (min-width: 375px) and (max-width: 399px) {html{font-size:11.71875px;}}

@media screen and (min-width: 400px) and (max-width: 413px) {html{font-size:12.5px;}}

@media screen and (min-width: 414px) and (max-width: 439px) {html{font-size:12.9375px;}}

@media screen and (min-width: 440px) and (max-width: 479px) {html{font-size:13.75px;}}

@media screen and (min-width: 480px) and (max-width: 519px) {html{font-size:15px;}}

@media screen and (min-width: 520px) and (max-width: 559px) {html{font-size:16.25px;}}

@media screen and (min-width: 560px) and?(max-width: 599px) {html{font-size:17.5px;}}

@media screen and (min-width: 600px) and (max-width: 639px) {html{font-size:18.75px;}}

@media screen and (min-width: 640px) and (max-width: 679px) {html{font-size:20px;}}

@media screen and (min-width: 680px)?and (max-width: 719px) {html{font-size:21.25px;}}

@media screen and (min-width: 720px)?and (max-width: 759px) {html{font-size:22.5px;}}

@media screen and (min-width: 760px)?and (max-width: 799px) {html{font-size:23.75px;}}

@media screen and (min-width: 800px) and (max-width: 839px) {html{font-size:25px;}}

@media screen and (min-width: 840px) and (max-width: 879px) {html{font-size:26.25px;}}

@media screen and (min-width: 880px)?and (max-width: 919px) {html{font-size:27.5px;}}

@media screen and (min-width: 920px) and (max-width: 959px) {html{font-size:28.75px;}}

@media screen and (min-width: 960px) and (max-width: 999px) {html{font-size:30px;}}

@media screen and (min-width: 1000px) and (max-width: 1039px) {html{font-size:31.25px;}}

@media screen and (min-width: 1040px) and (max-width: 1079px) {html{font-size:32.5px;}}

@media screen and (min-width: 1080px) and (max-width: 1119px) {html{font-size:33.75px;}}

@media screen and (min-width: 1120px) and (max-width: 1159px) {html{font-size:35px;}}

@media screen and (min-width: 1160px) {html{font-size:36.25px;}}

JS的計(jì)算方式:

動(dòng)態(tài)計(jì)算屏幕的寬度糖埋,得到網(wǎng)頁(yè)的根字體大小,并限定最大的rem

(function(doc, win){

? var docEl = doc.documentElement;

? var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';

? var recalc = function(){

? ? var clientWidth = docEl.clientWidth;

? ? if(!clientWidth) return false;

? ? if(clientWidth > 750) clientWidth=750;? ? //限制最大的寬度尺寸扬跋,限定最大rem

docEl.style.fontSize =clientWidth / 32+ 'px';

? };

? if (!doc.addEventListener) return false;

? win.addEventListener(resizeEvt, recalc, false);

? doc.addEventListener('DOMContentLoaded', recalc, false);

})(document, window);

移動(dòng)端開(kāi)發(fā)過(guò)程中阶捆,因?yàn)槭謾C(jī)的dpr(設(shè)備像素比不同),需要根據(jù)dpr來(lái)修改圖標(biāo)的大小

通過(guò)@media(媒體查詢)钦听,判斷設(shè)備的dpr洒试,動(dòng)態(tài)修改圖標(biāo)的背景圖片

.bg_img{

? width: 1rem;

? height: 1rem;

? background-image: url("../img/questionnaire.png");

? background-repeat: no-repeat;

? background-position: center;

? background-size: contain;

}

@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2){

? .bg_img{

? ? background-image: url("../img/questionnaire@2x.png");

? }

}

@media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3){

? .bg_img{

? ? background-image: url("../img/questionnaire@3x.png");

? }

}

_______________________________________________________________________________________________

四、字體:

ios 系統(tǒng)

? 默認(rèn)中文字體是Heiti SC

? 默認(rèn)英文字體是Helvetica

? 默認(rèn)數(shù)字字體是HelveticaNeue

? 無(wú)微軟雅黑字體

android 系統(tǒng)

? 默認(rèn)中文字體是Droidsansfallback

? 默認(rèn)英文和數(shù)字字體是Droid Sans

? 無(wú)微軟雅黑字體

winphone 系統(tǒng)

? 默認(rèn)中文字體是Dengxian(方正等線體)

? 默認(rèn)英文和數(shù)字字體是Segoe

? 無(wú)微軟雅黑字體

注: 如無(wú)特殊需求朴上,手機(jī)端無(wú)需定義中文字體垒棋,使用系統(tǒng)默認(rèn)即可

? ? 英文字體和數(shù)字字體可使用 Helvetica,三種系統(tǒng)都支持

代碼: body{?font-family:-apple-system-font,Helvetica Neue,Helvetica,sans-serif; }

或 body{ font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微軟雅黑",Arial,sans-serif; }

_______________________________________________________________________________________________

CSS3中的單位(瀏覽器默認(rèn)字體為16px):

注意:chrome強(qiáng)制最小字體為12號(hào)痪宰,即使設(shè)置成10px也會(huì)顯示成12px叼架,即使把html的font-size設(shè)置成10px,子節(jié)點(diǎn)rem的計(jì)算還是以12px為基準(zhǔn),但可以使用viewport設(shè)置縮放比來(lái)調(diào)整字體衣撬,其它瀏覽器無(wú)限制

移動(dòng)端字體最小可設(shè)置為8px(有些機(jī)型最小可設(shè)置1px乖订,移動(dòng)端chrome限制同樣為12px)

px: 絕對(duì)單位,頁(yè)面按精確像素展示

em: 相對(duì)單位具练,基準(zhǔn)點(diǎn)為父節(jié)點(diǎn)字體的大小乍构,如果自身定義了font-size則按自身計(jì)算

rem: 相對(duì)單位,相對(duì)根節(jié)點(diǎn)html的字體大小來(lái)計(jì)算

頁(yè)面基準(zhǔn)320px(20px),html的font-size值的計(jì)算:

document.getElementsByTagName('html')[0].style.fontSize=document.body.clientWidth/16+"px"

需設(shè)置meta視口:

vw: viewpoint width扛点,視窗寬度哥遮,1vw等于視窗寬度的1%

vh: viewpoint height,視窗高度陵究,1vh等于視窗高度的1%

vmin: vw和vh中較小的那個(gè)

vmax: vw和vh中較大的那個(gè)

vw,vh,vmin,vmax: IE9+局部支持眠饮,chrome/firefox/safari/opera支持,ios safari 8+支持铜邮,android browser4.4+支持仪召,chrome for android39支持

適配方案(在微信中滾動(dòng)時(shí)可能會(huì)卡頓):

html{

font-size:?3.1250133333vw;/* 100vw/375 ==3.1250133333vw/11.7188?*/

}

注意: 可用于解決頁(yè)面內(nèi)容已加載,但設(shè)置字體的js還未執(zhí)行時(shí)的字體閃爍問(wèn)題

其它單位:

%: ?百分比

in: 寸

cm: 厘米

mm: 毫米

pt: point松蒜,大約1/72寸

pc: pica返咱,大約6pt,1/6寸

設(shè)計(jì)師常常給的是物理分辨率牍鞠,程序中用到的是邏輯分辨率

物理分辨率是硬件所支持的分辨率咖摹,邏輯分辨率是軟件可以達(dá)到的分辨率

比如:?iphone6的分辨率寫(xiě)著375*667,指的是邏輯分辨率难述,而設(shè)計(jì)師設(shè)計(jì)稿上的750*1334是物理分辨率

物理分辨率/邏輯分辨率 = 像素倍率dpr萤晴,也就是常說(shuō)的幾倍屏

iphone6的像素倍率 = (750*1334)/(375*667) = 2

在移動(dòng)端,直接寫(xiě)1px胁后,會(huì)顯示為邏輯分辨率1px店读,在2dpr屏幕下,物理分辨率是2px攀芯,在3dpr下屯断,是3px

所以需要對(duì)屏幕或此線條進(jìn)行縮放,使之變?yōu)?px

設(shè)置dpr,對(duì)視口進(jìn)行縮放

var isAndroid = window.navigator.appVersion.match(/android/gi);

var isIPhone? = window.navigator.appVersion.match(/iphone/gi);

var devicePR? = window.devicePixelRatio;

var dpr = 1;

if(isAndroid || isIPhone){? //Android殖演、iOS下氧秘,對(duì)于2、3的屏趴久,用2丸相、3倍的方案,其余用1倍方案

? if(devicePR >= 3){

? ? dpr = 3;

? }else if(devicePR >= 2){

? ? dpr = 2;

? }

}

var scale = 1/dpr;

var meta? = document.createElement('meta');

meta.setAttribute('name', 'viewport');

meta.setAttribute('content', 'width=device-width,initial-scale='+scale+',user-scalable=no');

document.head.appendChild(meta);

document.documentElement.style.fontSize = innerWidth/32 + 'px';

//設(shè)置rem(iPhone6下彼棍,1rem = 23.4375px)

或者對(duì)線條進(jìn)行縮放:?可使用元素生成灭忠,對(duì)生成的線條進(jìn)行縮放

.bor_after_bottom{

? position: relative;

}

.bor_after_bottom:after{

? content: '';

? position: absolute;

? left: 0;

? bottom: 0;

? width: 100%;

? height: 1px;

? background-color: red;

}

@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5){

.bor_after_bottom:after{

? ? -webkit-transform: scaleY(0.66667);

? ? transform: scaleY(0.66667);

? }

}

@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2){

.bor_after_bottom:after{

? ? -webkit-transform: scaleY(0.5);

? ? transform: scaleY(0.5);

? }

}

@media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3){

.bor_after_bottom:after{

? ? -webkit-transform: scaleY(0.33333);

? ? transform: scaleY(0.33333);

? }

}

也可以直接縮放內(nèi)容生成元素

.weui_btn:after{

? content: "";

? width: 200%;

? height: 200%;

? position: absolute;

? top: 0;

? left: 0;

? border: 1px solid rgba(0, 0, 0, 0.2);

? -webkit-transform: scale(0.5);

? transform: scale(0.5);

? -webkit-transform-origin: 0 0;

? transform-origin: 0 0;

? box-sizing: border-box;

}

@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5){

.weui_btn:after{

????-webkit-transform: scale(0.66667);

????transform: scale(0.66667);

??}

}

@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2){

.weui_btn:after{

????-webkit-transform: scale(0.5);

????transform: scale(0.5);

??}

}

@media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3){

.weui_btn:after{

????-webkit-transform: scale(0.33333);

????transform: scale(0.33333);

? }

}

_______________________________________________________________________________________________

五、用戶點(diǎn)擊一個(gè)鏈接座硕,會(huì)出現(xiàn)一個(gè)半透明灰色遮罩, 禁用方法:———或者直接使用div標(biāo)簽

a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0)} ? ?//iOS/Android系統(tǒng)

<meta name="msapplication-tap-highlight" content="no"> ? ? ? ? ? ? ? ? ? //winphone系統(tǒng)

span:active,span:focus{ background-color: #B4DEF3; } ? ?//在點(diǎn)擊元素(或Tab時(shí))時(shí)添加一個(gè)遮罩層

<input type="text"/>? ? ? ? //文本框弛作,彈出漢字鍵盤(pán)

<input type="password"/>? ? //密碼框,彈出漢字鍵盤(pán)

<input type="tel"/>? ? ? ? ?//電話华匾,彈出數(shù)字鍵盤(pán)

<input type="number" />? ? ?//數(shù)字映琳,彈出數(shù)字鍵盤(pán),只能輸入數(shù)字 + - .等

<input type="url"/>? ? ? ? ?//網(wǎng)址瘦真,彈出英文鍵盤(pán)

<input type="search"/>? ? ? //搜索刊头,彈出英文鍵盤(pán),有些瀏覽器會(huì)顯示個(gè)×

<input type="range" min="5" max="100" step="1"/>? ? //范圍诸尽,定義滑塊控件

$('input').focus();? ? ? ?//使光標(biāo)聚焦于此輸入框

$('input').blur();? ? ? ? //使光標(biāo)離開(kāi)輸入框原杂,可以自動(dòng)隱藏手機(jī)端軟鍵盤(pán)

_______________________________________________________________________________________________

六、點(diǎn)擊鏈接自動(dòng)調(diào)用相關(guān)功能

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

<a href="sms:10086">發(fā)短信給: 10086</a> ? ? ? ? ? ? //發(fā)短信您机,winphone系統(tǒng)無(wú)效

<a href="mailto:10086@163.com">10086@163.com</a> ? ?//寫(xiě)郵件穿肄,自動(dòng)調(diào)用默認(rèn)客戶端電子郵件程序

在某些Android內(nèi)嵌網(wǎng)頁(yè)上,即使在head設(shè)置<meta name="format-detection" content="telephone=no" />际看,仍然無(wú)法避免調(diào)取電話咸产,可以設(shè)置 "禁止用戶選中文本"?來(lái)避免調(diào)用電話

div{ -webkit-user-select:none; -ms-user-select:none; -moz-user-select:none;

? ? ?-o-user-select:none; user-select:none; }

_______________________________________________________________________________________________

七、屏幕旋轉(zhuǎn)的事件和樣式

屬性: window.orientation

取值: 正負(fù)90表示橫屏模式仲闽;0和180表現(xiàn)為豎屏模式

window.onorientationchange = function(){ ? ? ?? //當(dāng)手機(jī)屏幕旋轉(zhuǎn)時(shí)脑溢,自動(dòng)觸發(fā)此函數(shù)

? switch(window.orientation){

? ? case -90:

? ? case 90:?alert("橫屏:" + window.orientation);

? ? case 0:

? ? case 180: alert("豎屏:" + window.orientation);

? ? break;

? }

}

CSS樣式:

@media all and (orientation:portrait) { } ? ? ? ? //豎屏?xí)r使用的樣式

@media all and (orientation:landscape) {?} ? ? ? ?//橫屏?xí)r使用的樣式

_______________________________________________________________________________________________

八、audio元素和video元素在ios和andriod中無(wú)法自動(dòng)播放

解決方案: 觸屏即播

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

? audio.play()

})

九赖欣、HTML5 deviceMotion事件: 封裝了運(yùn)動(dòng)傳感器數(shù)據(jù)的事件屑彻,可獲取手機(jī)運(yùn)動(dòng)狀態(tài)下的運(yùn)動(dòng)加速度等數(shù)據(jù)

http://peunzhang.github.io/demo/deviceMotion/index.html? ? ? ? ? ? ? 體驗(yàn)Demo

十、手機(jī)拍照和上傳圖片

利用<input type="file">的accept屬性

? <input type=file accept="image/*"> ? ? ?? //選擇照片

? <input type=file accept="video/*"> ? ? ?? //選擇視頻

accept屬性可以用來(lái)限制用戶上傳文件的類型顶吮,在iOS和OSX中支持的很好

multiple屬性可以選擇多個(gè)文件社牲,可以配合FormData對(duì)象,顯示批量上傳

_______________________________________________________________________________________________

十一悴了、兼容移動(dòng)端搏恤,只允許輸入整數(shù)

方法①

$("input").keyup(function(){

? var $this=$(this);

? var val=$this.val();

? if(val===""){

? ? $this.val("");

? ? return false; ? ?//不需要重新計(jì)算违寿,同時(shí)退出函數(shù)

? }else if(isNaN(val) || val.slice(0,1)==="0" || val===" " ||val<1){ ? ? ?? //可能會(huì)是'00'

? ? val=1;

? }else if(val>99){

? ? val=99;

? }

? $this.val(parseInt(val)); ?? //去掉小數(shù)點(diǎn)(必須是type="tel/text"才能去掉)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//type="tel/number",點(diǎn)擊時(shí)可彈出數(shù)字鍵盤(pán)

? return true; ? ? ? //需要重新計(jì)算

})

$("body").on("change", function(e){ ? ?//防止動(dòng)態(tài)加載的輸入框無(wú)法綁定事件

? var $target=$(e.target);

? if($target.is("input[type=tel/text]")){

? ? if($target.val() <= 0){ ? ? ? ? ?? //若輸入框?yàn)榭帐炜眨瑒t $this.val()==0 成立(number類型的0)

? ? ? $target.val(1);

? ? ? //若每次輸入都更換元素藤巢,則用以下方式調(diào)整其值(重新生成元素之后)

? ? ? //var val=$input.val(); ? ? ? ? ? ? ? //保存輸入框的值

? ? ? //if(val<1) val=1;

? ? ? //$input.val("").focus().val(val); ?? //清空,聚焦于此輸入框,再賦值,使光標(biāo)位于文字右側(cè)

? ? }else{

? ? ? $target.val(parseInt($target.val())); //防止用戶黏貼

? ? }

? }

})

方法②

$(".betting input").keyup(function(){? ? //keyup事件處理

? var $this = $(this);

?$this.val($this.val().replace(/\D|^0/g, ''));

? if($this.val() > 999){

? ? $this.val(999);

? }

}).bind("paste", function(){? ? //Ctrl+V事件處理

? $(this).val($(this).val().replace(/\D|^0/g, ''));

}).css("ime-mode", "disabled"); //CSS設(shè)置輸入法不可用

注意:

① type="tel/text"? ? ? 才能去掉小數(shù)點(diǎn)

? ?type="tel/number"? ? 點(diǎn)擊時(shí)可彈出數(shù)字鍵盤(pán)

② 取值時(shí),應(yīng)考慮當(dāng)輸入框?yàn)榭諘r(shí)痛阻,值設(shè)為1

屬性: ime-mode? ?設(shè)置或檢索是否允許用戶激活輸入中文菌瘪,韓文腮敌,日文等輸入法(IME)狀態(tài)

值:? ?disabled? ??完全禁用ime阱当,對(duì)于有焦點(diǎn)的控件(如輸入框),用戶不可以激活ime

input輸入框糜工、加弊添、減的樣式

<div class="enter">

? <span>追</span>

? <span>期</span>

</div>

<style>

.enter{

? display: inline-block;

? margin: auto 0.5rem;

? font-size: 1.2rem;

? text-align: center;

? vertical-align: top;

? color: #BCAD98;

}

.enter>input{

? width: 4rem;

? border-top: 1px solid #DDD;

? border-bottom: 1px solid #DDD;

? box-shadow: 0 1px 1px #DDD inset;

? color: #8E8066;

? text-align: center;

? background-color: transparent;

}

.enter>i{

? width: 2rem;

? border: 1px solid #DDD;

? background-color: #F0F0EE;

? background-image: linear-gradient(to bottom, #FFF, #ECECEA);

}

.enter>i:active{

? background-color: #EFEFED;

? background-image: linear-gradient(to bottom, #EFEFED, #E8E8E6);

}

.enter>input, .enter>i{

? display: inline-block;

? height: 1.8rem;

? line-height: 1.8rem;

? vertical-align: middle;

}

</style>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捌木,隨后出現(xiàn)的幾起案子油坝,更是在濱河造成了極大的恐慌,老刑警劉巖刨裆,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澈圈,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡帆啃,警方通過(guò)查閱死者的電腦和手機(jī)瞬女,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)努潘,“玉大人诽偷,你說(shuō)我怎么就攤上這事》枥ぃ” “怎么了报慕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)压怠。 經(jīng)常有香客問(wèn)我眠冈,道長(zhǎng),這世上最難降的妖魔是什么菌瘫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任蜗顽,我火速辦了婚禮,結(jié)果婚禮上突梦,老公的妹妹穿的比我還像新娘诫舅。我一直安慰自己,他們只是感情好宫患,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布刊懈。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虚汛。 梳的紋絲不亂的頭發(fā)上匾浪,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音卷哩,去河邊找鬼蛋辈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛将谊,可吹牛的內(nèi)容都是我干的冷溶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼尊浓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逞频!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起栋齿,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苗胀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瓦堵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體基协,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年菇用,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了澜驮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刨疼,死狀恐怖泉唁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揩慕,我是刑警寧澤亭畜,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站迎卤,受9級(jí)特大地震影響拴鸵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜗搔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一劲藐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧樟凄,春花似錦聘芜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挂谍。三九已至,卻和暖如春瞎饲,著一層夾襖步出監(jiān)牢的瞬間口叙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工嗅战, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妄田,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓驮捍,卻偏偏與公主長(zhǎng)得像疟呐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厌漂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,689評(píng)論 0 3
  • 超高速音視頻編碼器用法: ffmpeg [options] [[infile options] -i infile...
    吉兇以情遷閱讀 4,583評(píng)論 0 4
  • 移動(dòng)端1像素的問(wèn)題 問(wèn)題:一般在移動(dòng)端萨醒,由于dpr(設(shè)備像素比)不為1斟珊,在PC端顯示1像素的邊框苇倡,在移動(dòng)端其實(shí)顯示...
    程序員之路閱讀 549評(píng)論 0 1
  • 于是期待著,如果是她的話囤踩,說(shuō)不定能夠看穿自己旨椒, 這假仁假義的小丑。 然而即使被如此近距離地看著堵漱,哪怕早已察覺(jué)到了其...
    王刀楽土閱讀 314評(píng)論 2 3
  • 先講一個(gè)小故事勤庐。 去年上半年示惊,我發(fā)現(xiàn)臉上的一顆存在了很久的黑頭在慢慢變大,就想把它給弄掉愉镰。于是米罚,我去某個(gè)三甲醫(yī)院,...
    孿生情閱讀 1,401評(píng)論 0 1