移動端常見問題處理

微信瀏覽器用戶調(diào)整字體大小后頁面矬了,怎么阻止用戶調(diào)整

//以下代碼可使Android機(jī)頁面不再受用戶字體縮放強制改變大小,但是會有1S左右延時,期間可以考慮loading來處理
if (typeof(WeixinJSBridge) == "undefined") {
    document.addEventListener("WeixinJSBridgeReady", function (e) {
        setTimeout(function(){
            WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
                alert(JSON.stringify(res));
            })
        }, 0)
    });
}else{  
    setTimeout(function(){
        WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
            alert(JSON.stringify(res));
        })
    }, 0)   
}

//IOS下可使用 -webkit-text-size-adjust禁止用戶調(diào)整字體大小
body { -webkit-text-size-adjust:100%!important; }
//最好的解決方案:最好使用rem或百分比布局

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

function orientInit(){
    var orientChk = document.documentElement.clientWidth > document.documentElement.clientHeight?'landscape':'portrait';
    if(orientChk =='lapdscape'){
        //這里是橫屏下需要執(zhí)行的事件
    }else{
        //這里是豎屏下需要執(zhí)行的事件
    }
}
orientInit();
window.addEventListener('onorientationchange' in window?'orientationchange':'resize', function(){
    setTimeout(orientInit, 100);
},false)
//CSS處理
//豎屏?xí)r樣式
@media all and (orientation:portrait){   }
//橫屏?xí)r樣式
@media all and (orientation:landscape){   }

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

1.<audio src="music/bg.mp3" autoplay loop controls>你的瀏覽器還不支持哦</audio>
2.<audio controls="controls"> 
    <source src="music/bg.ogg" type="audio/ogg"></source>
    <source src="music/bg.mp3" type="audio/mpeg"></source>
    優(yōu)先播放音樂bg.ogg,不支持在播放bg.mp3
</audio>
//JS綁定自動播放(操作window時,播放音樂)
$(window).one('touchstart', function(){
    music.play();
})
//微信下兼容處理
document.addEventListener("WeixinJSBridgeReady", function () {
    music.play();
}, false);
//小結(jié)
//1.audio元素的autoplay屬性在IOS及Android上無法使用,在PC端正常
//2.audio元素沒有設(shè)置controls時,在IOS及Android會占據(jù)空間大小,而在PC端Chrome是不會占據(jù)任何空間

重力感應(yīng)事件

// 運用HTML5的deviceMotion,調(diào)用重力感應(yīng)事件
if(window.DeviceMotionEvent){
    document.addEventListener('devicemotion', deviceMotionHandler, false)
}
var speed = 30;
var x = y = z = lastX = lastY = lastZ = 0;
function deviceMotionHandler(eventData){
    var acceleration = event.accelerationIncludingGravity;
    x = acceleration.x;
    y = acceleration.y; 
    z = acceleration.z;
    if(Math.abs(x-lastX)>speed || Math.abs(y-lastY)>speed || Math.abs(z-lastZ)>speed ){
        //這里是搖動后要執(zhí)行的方法 
        yaoAfter();
    }
    lastX = x;
    lastY = y;
    lastZ = z;
}
function yaoAfter(){
    //do something
}

開啟硬件加速

.css {
    -webkit-transform: translate3d(0,0,0);
    -moz-transform: translate3d(0,0,0);
    -ms-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
}

消除transition閃屏

.css {
    -webkit-transform-style: preserve-3d;
    -webkit-backface-visibility: hidden;
    -webkit-perspective: 1000;
}```
####JS判斷微信瀏覽器

function isWeixin(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=='micromessenger'){
return true;
}else{
return false;
}
}

####播放視頻不全屏

播放視頻不全屏
webkit-playsinline="true"
<video x-webkit-airplay="true" webkit-playsinline="true" preload="auto" autoplay src="http://"></video>


####H5頁面窗口自動調(diào)整到設(shè)備寬度,并禁止用戶縮放頁面

<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
// width 設(shè)置viewport寬度,為一個正整數(shù),或字符串‘device-width’
// height 設(shè)置viewport高度,一般設(shè)置了寬度,會自動解析出高度,可以不用設(shè)置
// initial-scale 默認(rèn)縮放比例,為一個數(shù)字,可以帶小數(shù)
// minimum-scale 允許用戶最小縮放比例,為一個數(shù)字,可以帶小數(shù)
// maximum-scale 允許用戶最大縮放比例,為一個數(shù)字,可以帶小數(shù)
// user-scalable 是否允許手動縮放
//二、JS動態(tài)判斷
var phoneWidth = parseInt(window.screen.width);
var phoneScale = phoneWidth/640;
var ua = navigator.userAgent;
if (/Android (\d+.\d+)/.test(ua)){
var version = parseFloat(RegExp.$1);
if(version>2.3){
document.write('<meta name="viewport" content="width=640, minimum-scale = '+phoneScale+', maximum-scale = '+phoneScale+', target-densitydpi=device-dpi">');
}else{
document.write('<meta name="viewport" content="width=640, target-densitydpi=device-dpi">');
}
} else {
document.write('<meta name="viewport" content="width=640, user-scalable=no, target-densitydpi=device-dpi">');
}


####移動端滾動條優(yōu)化

//隱藏滾動條
margin-right: -20px;
padding-right: 20px;

::-webkit-scrollbar{ display: none }

//ios 下使其滾動平滑
-webkit-overflow-scrolling: touch


####移動端分享 

手Q支持聲明meta標(biāo)簽的的分享方式,例如:
![2015032701310431-590x96.png](http://upload-images.jianshu.io/upload_images/1373016-3416a1fe6ebae1c0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

一般化分享
在默認(rèn)兼容舊版微信、手Q或者各種瀏覽器,平臺,可以用這樣的方法:
寫h1做標(biāo)題,p做內(nèi)容,img做縮略圖,只需要把h1隱藏掉就好,這里的縮略圖最好為300x300px。
![20150327013103323.png](http://upload-images.jianshu.io/upload_images/1373016-f8c6e98c50a4a5a8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,062評論 25 709
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,156評論 1 92
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,376評論 4 61
  • Cities: Skylines是一款單機(jī)模擬城市建設(shè)游戲,2015年3月10日登陸Steam平臺,是目前為止最受...
    YawningSong閱讀 3,149評論 0 1
  • 你是否也會無端想起我,好奇我這一刻所做,此時我正在想念你,猶如裝滿水的瓶子,思念將要溢出瓶口。 李子沐趴在窗口喃喃...
    __舊隱閱讀 305評論 0 0

友情鏈接更多精彩內(nèi)容