美文网首页
移动端常见问题处理

移动端常见问题处理

作者: 我是大师兄啊 | 来源:发表于2017-02-11 15:08 被阅读557次

微信浏览器用户调整字体大小后页面矬了,怎么阻止用户调整

//以下代码可使Android机页面不再受用户字体缩放强制改变大小,但是会有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禁止用户调整字体大小
body { -webkit-text-size-adjust:100%!important; }
//最好的解决方案:最好使用rem或百分比布局

屏幕旋转的事件和样式

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中无法自动播放

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>
    优先播放音乐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是不会占据任何空间

重力感应事件

// 运用HTML5的deviceMotion,调用重力感应事件
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 ){
        //这里是摇动后要执行的方法 
        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页面窗口自动调整到设备宽度,并禁止用户缩放页面

<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
// width 设置viewport宽度,为一个正整数,或字符串‘device-width’
// height 设置viewport高度,一般设置了宽度,会自动解析出高度,可以不用设置
// initial-scale 默认缩放比例,为一个数字,可以带小数
// minimum-scale 允许用户最小缩放比例,为一个数字,可以带小数
// maximum-scale 允许用户最大缩放比例,为一个数字,可以带小数
// user-scalable 是否允许手动缩放
//二、JS动态判断
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">');
}


####移动端滚动条优化

//隐藏滚动条
margin-right: -20px;
padding-right: 20px;

::-webkit-scrollbar{ display: none }

//ios 下使其滚动平滑
-webkit-overflow-scrolling: touch


####移动端分享 

手Q支持声明meta标签的的分享方式,例如:
![2015032701310431-590x96.png](https://img.haomeiwen.com/i1373016/3416a1fe6ebae1c0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

一般化分享
在默认兼容旧版微信、手Q或者各种浏览器,平台,可以用这样的方法:
写h1做标题,p做内容,img做缩略图,只需要把h1隐藏掉就好,这里的缩略图最好为300x300px。
![20150327013103323.png](https://img.haomeiwen.com/i1373016/f8c6e98c50a4a5a8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

相关文章

  • 移动端常见问题处理

    微信浏览器用户调整字体大小后页面矬了,怎么阻止用户调整 屏幕旋转的事件和样式 audio元素和video元素在io...

  • H5在移动端的适配

    使用H5写移动端代码时,经常会遇到在PC端显示正常,但到移动端,会出现很多问题。常见问题如下: 移动端的双击或者双...

  • 博客集

    7 天打造前端性能监控系统【推荐收藏】web移动端常见问题总结高性能网站建设

  • 移动端 300 毫秒延迟,怎么解决 ?

    移动端 300 毫秒延迟,怎么解决? 移动端 300 毫秒延迟,指的是当没有经过特殊处理,移动端浏览器在派发点击事...

  • H5-移动端小于1px的处理

    移动端小于1px的处理

  • 移动端图像处理

    Soc 嵌入CPU和Gpu CPU 功能大于Gpu Gpu适合重复工作 CPU功耗大于Gpu 硬件板子 dsp 适...

  • 移动端样式处理

      清除手机tap事件后 element 时候出现的一个高亮 移动端取消touch高亮效果   禁止长按链接与图片...

  • IM - 常见问题与术语介绍

    1. 概述 本文介绍IM系统常见问题,以及术语介绍。 2. 常见问题 2.1. 网络闪断或SM掉线的客户端处理流程...

  • 移动端布局常见问题

    移动端布局常见问题 1 横竖屏限制问题 只支持x5内核,指的是强制进行横屏或竖屏,portrait是竖屏,land...

  • 移动端适配&常见问题

    适配 meta标签 什么是适配?为什么要做适配? 适配:百分百还原设计图(等比)没有加viewport meta标...

网友评论

      本文标题:移动端常见问题处理

      本文链接:https://www.haomeiwen.com/subject/rmhoittx.html