# 移动端常见的兼容性问题

###### 1. meta 基础知识点如下

```

// 启动或禁用自动识别页面中的电话号码

// 启动或禁用自动识别邮箱地址

// 设置 Web 应用是否以全屏模式运行。

// ios 的 safari 顶端状态条的样式,可选的参数有:default、black、black-translucent

// winphone 系统 a、input 标签被点击时产生的半透明灰色背景怎么去掉

```

###### 2. input 基础知识点如下

```

// input 输入框不可编辑

/* disabled 文本框变灰,通过request.getParameter("name")得不到文本框中的内容

readonly 只是使文本框不能输入,样式没有变化,通过request.getParameter("name")可以得到内容 */

// ios 输入的时候英文首字母的默认大写

// android 上去掉语音输入按钮

input::-webkit-input-speech-button {

display: none

}

// ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉

a,button,input,textarea{

-webkit-tap-highlight-color: rgba(0,0,0,0;)

-webkit-user-modify:read-write-plaintext-only;

}

/* -webkit-user-modify 这个属性使用需谨慎,副作用就是输入法不再能够输入多个字符

另外,有些机型去除不了,如小米2

对于按钮类,不使用a或者input标签,直接用div标签 */

// 表单元素的默认外观重置

-webkit-appearance:none;

// 修改表单输入框 placeholder 的颜色值

input::-webkit-input-placeholder{color:#ccc;}

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

// 注意 placeholder, ios 可以换行,android 不可以

// 禁用 select 默认下拉箭头

select::-ms-expand {display: none;}

// 禁用 radio 和 checkbox 默认样式

input[type=radio]::-ms-check,

input[type=checkbox]::-ms-check {

display: none;

}

// 禁用 PC 端表单输入框默认清除按钮

input[type=text]::-ms-clear,

input[type=tel]::-ms-clear,

input[type=number]::-ms-clear {

display: none;

}

```

###### 3. 部分安装手机 a 标签用作按钮的时候,页面显示空白

解决办法:用 button 标签替换 a 标签

###### 4. 微信禁止、选中文本

```

body {

-webkit-user-select: none;

}

```

###### 5. 禁止 ios 长按时不触发系统的菜单,禁止 ios&android 长按时下载图片(3D Touch或Haptic Touch 功能触发的系统菜单也是这个)

```

.css {

-webkit-touch-callout: none

}

```

###### 6. 移动端字体单位的选择 font-size 选择 px 还是rem

解决办法:

- 需要适配手机设备,使用 px 即可

- 需要适配各种移动设备,使用 rem,例如需要适配 iPhone 和iPad等分辨率差别比较挺大的设备,我们就选择 rem

###### 7. 移动端 click 事件,使屏幕产生 200-300ms 的延迟响应

解决办法:

1. 使用 fastclick.js

2. zepto.js 里面的 tap 事件也可以解决 click 的延迟问题

###### 8. 大屏幕中,图片有时候会变模糊

解决办法:用背景图片替换 img 标签,设计稿切出来的图片长宽保证为偶数,并使用 backgroud-size把图片缩小为原来的 1/2;

例如图片宽高为:100px*100px,那么 css 写法如下:

```

.css{

background:url() no-repeat center center;

background-size: 50px 50px;

width:50px;

height:50px;

}

```

###### 9. 打电话&发短信&发邮件的如何实现

```

// 打电话

打电话给:0755-10086

400-810-6999 转 1034

// 发短信

发短信给: 10086

// 发短信 短信内容 (本人进行测试,多个号码发送短信,功能实现不了,始终给第一个号码发送)

安卓手机:发短信给: 10086

苹果手机:发短信给: 10086

多个号码:发短信给: 10086和10010

发短信给: 10086和10010

// 发邮件

单击这里给peun发电子邮件

// 移动web页面自动探测电话号码:

// 使用wtai协议进行拨打电话:

拨打XXX

将XXX存储至电话簿

// 在电话号码前加上 + (加号)表示国际号码:

+15110418977

// 地图定位GPS:

me位置 比如:me位置

```

##### 10. 屏幕旋转的事件和样式

```

// 1. 事件

window.orientation,取值:正负90表示横屏模式、0和180表现为竖屏模式;

// 代码判断

window.onorientationchange = function(){

switch(window.orientation){

case -90:

case 90:

alert("横屏:" + window.orientation);

case 0:

case 180:

alert("竖屏:" + window.orientation);

break;

}

}

// 2. 样式

/*竖屏时使用的样式*/

@media all and (orientation:portrait) {

.css{}

}

/*横屏时使用的样式*/

@media all and (orientation:landscape) {

.css{}

}

```

###### 11. H5 audio 和 video 在 ios 和 andriod 中无法自动播放

```

// 需要手动去触发事件来播放

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

audio.play()

})

```

###### 12. 阻止用户调整微信浏览器字体大小

```

// ios 管事,android 暂无解决方案

body{

-webkit-text-size-adjust: 100%!important;

}

```

###### 13. 解决 transition 闪屏

```

.css{

/*设置内嵌的元素在 3D 空间如何呈现:保留 3D*/

-webkit-transform-style: preserve-3d;

/*(设置进行转换的元素的背面在面对用户时是否可见:隐藏)*/

-webkit-backface-visibility: hidden;

}

```

###### 14. @-webkit-keyframes 注意

- 以0%开始100%结束,0%的百分号不能去掉

- after和before伪类无法使用动画

###### 15. border-radius 注意

- 不支持%单位

- 三星 Galaxy S4中自带浏览器不支持 border-radius 缩写

- 同时写入 border-radius 和背景色的时候,背景色会溢出到圆角以外部分

###### 16. active兼容处理 , 有时候伪类 :active 失效

```

// 1. body 添加 ontouchstart

// 2. js 给 document 绑定 touchstart 或 touchend 事件

// css

a { color:#ccc;}

a:active{ color:#f0f;}

// html

bar

// js

document.addEventListener('touchstart', function(){}, false);

```

###### 17. 视频,音频获取播放结束后的回调函数-ended

```

$('#video').on('ended',function(){

alert(0);

});

```

###### 18. ios 视频默认全屏播放,如何阻止全屏播放- webkit-playsinline

```

```

###### 18. 前端 iphonex 适配问题

```

目前有三种方法:

1. 机型适配

通过判断 navigator.userAgent 中的字符串 iphone 和 iphoneX 的设备宽和高

const isIphoneX = () => {

return /iphone/gi.test(navigator.userAgent) && (screen.height == 812 && screen.width == 375)

}

2. 通过媒体查询,判断设备宽高和dpr

@media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) {

background: red;

}

或者

@media only screen and (width: 375px) and (height: 690px){

body {

background: red;

}

}

3. 通过 css3 的 content,设置 viewport-fit=cover

body {

background: grey;

padding-top: constant(safe-area-inset-top);

padding-left: constant(safe-area-inset-left);

padding-right: constant(safe-area-inset-right);

padding-bottom: constant(safe-area-inset-bottom);

}

```

###### 19.ios手机设置input为readonly后,解决仍会获得焦点弹起软键盘

可以在input中添加`unselectable="on" οnfοcus="this.blur()`最终为

```

```

一键复制

编辑

Web IDE

原始数据

按行查看

历史

html select ios 闪屏,移动端常见的兼容性问题.md相关推荐

  1. Flutter——踩坑之旅(iOS闪屏页+启动页 闪屏之后会黑一下才进入启动页)

    程序猿日常 flutter填坑--iOS闪屏页+启动页效果优化 闪屏之后会黑一下进入启动页 问题描述 大部分app都有自己的启动页,我们经常在启动页做一些判断逻辑,例如 是否第一次启动app,第一次启 ...

  2. 移动端 点击后IOS闪屏问题

    因为按下去的时候 等于是在选择元素,所以会有闪屏的错觉,直接把IOS的特性去了就行 在元素上写个就行 -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 转载 ...

  3. Unity打包Xcode基于Storyboard制作iOS闪屏

    前言:根据苹果提审的最新要求,苹果2020年4月30日后提交的APP不再支持使用LaunchImage以及场景图片等作为闪屏,启动图需要使用StoryBoard来搭建. 今天咱们就来探讨一下如何进行s ...

  4. ios闪屏问题 vue_VUE前端界面在iOS中遇到的坑

    前段时间,公司用前端做了一个微型图片生成界面,通过考虑,选择使用vue多页面进行编写,在界面编写完成之后,本地浏览器进行测试,发现一切都很顺利,然后嵌入到APP端进行联合测试.前期,界面在Androi ...

  5. ios闪屏问题 vue_ios transition translate 闪屏问题总结

    webkit在绘制页面时会将结构分为各种层,当层足够大时就会变成很大的平铺层.这样一来webkit在每次页面结构发生变化时不需要都渲染整个页面而是渲染对应层了,这对渲染速度来说相当的重要.webkit ...

  6. ios闪屏问题 vue_iostransitiontranslate闪屏问题总结

    webkit在绘制页面时会将结构分为各种层,当层足够大时就会变成很大的平铺层.这样一来webkit在每次页面结构发生变化时不需要都渲染整个页面而是渲染对应层了,这对渲染速度来说相当的重要.webkit ...

  7. ios闪屏问题 vue_解决vue更新默认值时出现的闪屏问题

    在Vue项目中,对于一个展示用户个人信息的页面.有以下需求,需要判断用户个人信息是否填充过,如果填充过,需要在页面中展示已填充项(未填充项不展示):如果未填充过,需要在页面中显示另外一种元素(提示用& ...

  8. IOS解决闪屏无效LuanchImage启动动画设置加载广告闪屏图

    IOS闪屏动画LuanchImage设置无效 设置Launch Image无效 其它方法 转载请标明出处: https://dujinyang.blog.csdn.net/article/detail ...

  9. Unity 设置安卓和ios平台的闪屏页(适合新手)

    前言 本人之前在游戏发行团队做安卓聚合sdk方面的相关工作,因公司内部优化去了游戏研发团队,负责Android和Ios相关的游戏接入工作.通俗的讲只要跟安卓和IOS方面有关的任何事情都是我来搞,包括游 ...

最新文章

  1. 可以不当什么“黑客”,但不要被“黑客”PUA
  2. ecshop文章增加点击次数插件
  3. 把java的class文件转成java文件
  4. 2011.03.16中国食盐价格不上涨,日本不缺少食盐。
  5. 国自然和毕业论文的流程图用这个格式导入Word可无限放大
  6. ipqc异常处理流程图_IPQC巡检流程.七大手法.八大原则.九大步骤
  7. VGG16关于学习率如何影响精度效应
  8. 马云电脑水平曝光;快狗打车回应裁员50% ;华为邀请开发者加入应用商店 | 极客头条...
  9. LeetCode 392 判断子序列
  10. (转载)突然就看懂了《大话西游》
  11. Python Dict笔记
  12. CentOS下常用配置文件和命令以及目录结构备注
  13. 非香农类信息不等式_ICLR 2020 | 北大图灵班满分论文:基于计算约束下有用信息的信息论...
  14. 字节大幅压缩了22~23年的招聘
  15. 疫情期间再读三体(3)——黑暗森林到底怎么个黑法
  16. 校技能节之打铁记~~~~~~
  17. 打印程序在计算机上的应用程序,什么是“后台打印程序子系统应用程序”(spoolsv.exe),以及为什么它在我的电脑上运行?...
  18. pgsql数据替换替换换行符
  19. hive 神盾特工局_详解漫威电影宇宙历史(一)宇宙初创到泰坦星的陨落
  20. STC51从入门到精通(汇编)~~~ 第一讲:概述

热门文章

  1. python生成大量随机信息,并保存到Excel文件中
  2. PCB设计;PCB制造;PCB抄板
  3. Redis中间件学习笔记(三)(面试重点)
  4. 托众导购网 淘宝客订单API获取订单代码
  5. 程序员为什么要学习数据结构与算法?
  6. 王者荣耀服务器维护有时间限制吗,王者荣耀隐身登陆能维持多久 王者荣耀在线隐身时间有限制吗...
  7. Qt编译完成,运行.exe提示“无法启动此程序,因为计算机中丢失Qt5Cored.dll。尝试重新安装该程序以解决此问题”
  8. 21届本科双非收获字节,阿里,美团等多家offer,在这里分享一下我的面试心得
  9. 南明大数据电商产业聚集区开园
  10. 小学计算机教研组总结,小学数学教研组长工作总结(精选多篇).doc