1. 前端ios与android的兼容性问题怎么解决
解决浏览器兼容是必备问题,比如360的极速和兼容模式显示同一个网页
2. 前端面试题,移动端兼容问题有哪些,安卓和ios问题
那么进入正文,不废话,直接把自己了解到的和一些看法说出来。
首先是屏幕问题,现在主流的移动设备以安卓和IOS为主,我们在制作移动端页面也是以兼容这两种设备去布局。
首先说iPhone,不得不说iPhone的屏幕考虑到了我们开发者的难处,从而给出iPhone屏幕的dpr都是整数值,在6plus出现之前,iphone的dpr始终是2(物理像素/逻辑像素=2),即使是6plus出现了,iphone到底其实也就只有2,3这两个dpr。其实6plus的实际dpr并不是整数,而是2.87左右,不过,为了方便开发者来开发,iphone6plus对其做了一个调整,将dpr调整为3,然后在对屏幕进行了一个缩放。所以我们很容易对其做到兼顾。
而安卓的dpr值,并不像iphone那样就只有两个值。安卓的dpr是千奇百怪的,可能是1.5,2,3,4,2.5等等的都有。(甚至我还看到了1.7之类的,安卓的各个设备商,玩的真尼玛high啊。怎么高兴怎么来。)
那么现在开始说说移动端怎么布局以及字体该怎么设置,因为有各种各样的解决方式,我就不一一赘述,直接说手淘的解决方案:flexible.js
我为什么又一次把这个拿出来说,主要有两点原因:1.我觉得它好用,解决方式简单粗暴。2.它经过了比较长时间的考验,如今手淘还在用它。
具体的使用方法自己可以去flexible.js看看,这里我简单说说它的方案以及个人对它的改良。
3. 前端怎么跟ios/android配合工作
建议你选择Web前端或android开发。 现在网络应用越来越广,Web前端开发的需求不会有少。 android是现在非常流行的手机、平板系统,未来的手机将不像手机,而更像一台小电脑,android用Java开发,你学过Java Web,学android开发应该不难。
4. 请问前端高手,哪一种前端框架可以开发跨安卓、ios的平台的app呢
你说的那几个框架,做成h5页面,就可以在安卓或者ios的webview上面跑,都是兼容两个平台的,
如果是要开发安卓,ios端的APP,那就去试试 react natice 或者 uni-app吧,后者号称可以兼容七个端
5. 关于H5在安卓ios平台兼容性问题,及解决方案
capture 属性:在webapp上使用 input 的 file 属性,指定 capture 属性可以调用系统默认相机、摄像胡握绝尘和录音功能。
capture 表示,可以捕获到系统默认设备的媒体信息,如下:
capture="camera" 相机
capture="camcorder" 摄像机
capture="microphone" 录音裤宏庆
6. 前端常见移动端兼容问题
因为手机分辨率太小,如果按照分辨率来显示网页,字会非常小,安卓手机 devicePixoRadio 比较乱,有 1.5 的,有 2 的也有 3 的。想让图片在手机里显示更为清晰,必须使用 2x 的背景图来代替 img 标签(一般情况下都是 2 倍的),或者指定 background-size:contain; 都可以
用 -webkit-min-device-pixel-ratio 可以做到不同倍余销顷数不同尺寸的图片:
Android3+和 iOSi5+支持 CSS3 的新属性为 overflow-scrolling
设置 alpha 值为 0 就可以去除本透明灰色遮罩,备注:transparent 的属性值在 android 下无效。
方法一:body 添加 ontouchstart
方法二:js 给 document 绑定 touchstart 或 touchend 事件
在移动端中,如果给元素设置一个像素的边框的话,那么在手机上看起来是会比一个像素粗的。
解决方法:使用伪类元素模拟边框,使用 transform 缩放
某些低端手机不支持 css3mask,可以选择斗氏性的进降级处理
比如可以使用 js 判断来引用不同 class:
pc 端字体正常显示,但 ios 真机就出现,h1、span 等标签字体比较大。
某些 Android 手机圆角失效 background-clip:padding-box ;
在移动端中,click 事件是生效的,但是,点击之后会有 300ms 的延迟响应
原因:safari 是最早做出这个机制的,因为在移动端里,浏览器需要等待一段时间来判断此次用户操作是单击还是双击,所以就有 click300ms 的延迟机制,Android 也很快就有了
不用 click,用自定义事件 tap
tap 是需要自定义的:如果用户执行了 touchstart 在很短的时间又触发了 touchend ,且两次的距离很小,而且不能
引入 fastclick 库来解决
在移动端中,图片的处理应该是很谨慎的,假设有一张图片本身的尺寸是 X 宽,设置和包裹它的 div 一样宽,如果是 div 宽度小于图片宽度没有问题,但是如果 div 宽度大于图片的宽度,图片被拉伸失真
解决方法:让图片最大只能是自己的宽度
例如:
div 是绝对定位的蒙层,并且 z-index 高于 a。而 a 标签是页面中的一个链接,我们给 div 绑定 tap 事件:
我们点击蒙层时 div 正常消失,但是当我们在 a 标签上点击蒙层时,发现 a 链接被触发,这就是所谓的点透事件。
原因:
touchstart 早于 touchend 早于竖陆 click。即 click 的触发是由延迟的,这个时间大概在 300ms 左右,也就是说我们 tap 触发之后蒙层隐藏。此时 click 还没有触发,300ms 之后由于蒙层隐藏,我们的 click 触发到了下面的 a 链接。
解决:
1.尽量都使用 touch 事件来替换 click 事件。例如用 touchend 事件(推荐)
2.用 fastclick
3.用 preventDefault 阻止 a 标签的 click
7. 如何兼容android 和ios 系统
1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。
iphone沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序。以杀毒软件中的沙盒技术解释一下。“沙盒”技术是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。
安卓虚拟机机制解释:android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。
8. web前端(移动端)视屏播放插件,能在安卓和苹果手机下进行播放
<video width="320" height="240" controls="controls"> <source src="movie.ogg" type="video/ogg"> <source src="movie.mp4" type="video/mp4">Your browser does not support the video tag.</video>
source可以放多种格式的视频,不过放mp4格式的视频几乎可以兼容所有视频。
需要注意的是,mp4格式最好用media encoder软件转换一下,输出为iphone、ios、youtube格式的都可以。
9. H5页面与原生App(安卓,IOS)交互
在客户端项目中,同一个app会开发成两个版本,一个是安卓版本,一个IOS版本,公司必须有两个开发团队(一个安卓团队,一个IOS团队)来进行开发,这样一来,开发成本非常之高。所以,往往在实际项目-中,会嵌套很多H5页面,一个H5页面同时兼容安卓和IOS两个系统 ,这样一来,大大减少了开发成本,前端开发页面就必须和原生进行交互。
1. 页面开发 —— 前端开发人员将所有的页面按照移动webappp进行开发,做好不同屏幕的适配(宽度100%,视口为移动端视口 (快捷方式meta:vp tap),字体适配rem单位,设置html根标签的font-size然后根据媒体查询判断设备屏幕大小进而设置html根标签的不同fontsize,去除移动端高亮显示;小图标要善于使用字体图标(常用的字体图标库有阿里巴巴矢量图),改变input标签的默认样式可以采用隐藏input,然后通过字体图标来控制前面的图标,就可以做成自己想要的图标效果)
2.前端页面部署 —— 设置好入口文件(原生一进来就进入的页面,命名为index.html),部署到对应的服务器上,通过网址就能够访问到页面,将网址给app客户端开发人员,他们将app配置好环境后讲页面嵌套在app中。
3.进行数据对接:两种对接方式(1).前端页面自己通过ajax去后台拉数据,然后自己在页面上使用再提交给后台。前提是原生需要将对应的设备号,加密方式,请求数据所需要的各种参数通过回调函数传递给H5页面,H5页面拿到这些数据后直接调后台的借口、获取到数据。(2).前端页面不用自己去后台拉取数据,而是通过回调函数,获取到原生app拉取的数据,前端页面将这些数据处理后又通过回调函数交给app,再又app发送给后台。两种调用的优劣比较:如果H5页面及数据不是很多,使用第二种方式比较合理,不用H5页面请求数据(不用封装请求,不用加密数据),不使用框架,大大减少了页面的大小,提高性能及用户体验。如果涉及到的前端页面非常多,数据交互比较复杂的话,就必须使用第一种对接方式了,app只需要将设备号,加密规则,参数传递给H5,H5根据页面需求自己向后台拉去和请求数据,直接交互,不再通过app进行转接,减小复杂程度。