移动端开发中遇到兼容bug收集

1.在ios键盘中首字母大写的问题?

        ios会首字母自动大写

<input type="text" autocapitalize="off">

2.ios日期转换NAN问题

具体就是new Date(‘2020-11-12 00:00:00’)在iOS中会成为NAN

解决方式:用new Date(‘2020/11/12 00:00:00’)的日期格式或者写个正则转换

3.禁止触发系统菜单和长按选中

//禁止触发系统菜单,全局屏蔽
html,body{
    touch-callout:none;
    -webkit-touch-callout:none;
}
//禁止ios和android系统选中文字+长按选中
html,body{
    user-select:none;
    -webkit-user-select:none;
}

4.ios系统中元素被触摸时产生的半透明灰色遮罩

a,button,input,textarea{
    -webkit-tap-highlight-color:rgba(0,0,0,0)
}

5.h5底部输入框被键盘遮挡

        h5页面有个很头疼的问题就是,当输入框在最底部,点击软键盘后输入框会被遮挡,可采用改变底部输入框的定位。或者开发时避免这样的设计

代码:

const oHeigth= $(document).heigth();//浏览器当前的高度
//监听浏览器混动
$(window).resize(funticon(){
    //开启软键盘后
    if( $(document).heigth() < oHeigth){
        $("#footer").css("position","static");    
    }else{
        未开启
        $("#footer").css("position","absolute");    
    }
})

6.在移动端使用cilck事件有300ms延迟的问题

解决方式:

1.禁止双击缩放 :meta:user-scalabel = no

2.使用fastclick.js

<script scr="fastclick.js" type="text/javascript"></script>
if('addEventListener' in  document){
    document.addEventListener("DOMContentLoaded",function(){
           FastClick.attach(document.body) 
    },false)
}

7.在移动端中,如果给元素设置1px的像素边的,手机上看起来是会比1px像素粗的

解决方式:使用伪类元素模拟边框使用transform缩放

@media screen and (-webikt-min-device-pixel-ratio:2){
    .button:after{
        border-radius:calc(5px*2);
        width:calc(100%*2);  
        height:(100%*2); 
        transform:scale(calc(1/2)); 
    }
}
@media screen and (-webikt-min-device-pixel-ratio:4){
    .button:after{
        border-radius:calc(5px*4);
        width:calc(100%*4);  
        height:(100%*4); 
        transform:scale(calc(1/4)); 
    }
}

8.消除transition闪屏

-webkit-transform-style:preserve-3d; /*设置内嵌的元素在3D空间如何呈现:保留3D*/

-webkit-backface-visibility:hidden; /*设置进行转换的元素的背面在面对用户时是否可见*/

9.在ios和andriod中,audio元素和video元素在无法自动播放

触屏播放:

$('html').one('touchstar',funticon(){
    audio.play();
})

10.android下取消输入语音按钮

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

11.fixed定位缺陷

ios下fixed元素容易定位出错,软键盘弹出时,影响fixed元素定位

android下fixed表现要比ios更好,软键盘弹出时,不会影响fixed元素定位

ios4下不支持position:fixed

解决方案:可用iScroll插件解决这个问题

12.input的placeholder会出现文本位置偏上的情况

input的placeholder会出现文本位置偏上的情况:PC端设置line-height等于height能够对齐,而移动端依然时偏上,解决是设置,line-height:normal

13.android里的line-height不局中

把字号内外边距等设置为需求大小的2倍,使用transform进行缩放。(不适用)

把字号内外边距等设置为需要大小的2倍,只用zoom进行缩放,可以完美解决

把line-height设置为0,使用padding值把元素撑开,说是能解决(不适用)

        原因:在文档流中zoom加在任意一个元素上都会引起一整个页面的重新渲染,而scale只是在当前的元素上重绘。

        scale变化时候,其原本的尺寸是不变的,因此没有layout的重计算;但是zoom牵一发动全身

差异:

1、zoom的缩放是相对于左上角的;而scale默认是居中缩放

2、zoom的缩放改变了元素占据的空间大小;而scale的缩放占据的原始尺寸不变,页面布局不会发生变化

3、zoom和scale对元素的渲染计算方法可能有差异(有可能会引起图片失真)

4、对文字的缩放规则不一致。zoom缩放依然受限于最小12像素中文大小限制;而scale就是纯粹的对图形进行比例控制

注:zoom和transform scale不要同时使用,因为缩放效果会叠加

14.禁止数字识别为电话号码

<meta name=“format-detection” content="telephone=no">

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值