前端开发-企业实战之web移动端兼容和常见技巧

最近在一家还算比较大的公司的前端岗位实习,以下是我实战开发中和公司大佬内部技术分享会上罗列的主要移动端开发技巧和兼容问题的总结

移动端H5页面的概念以及和web端的区别

刚就业是我也是被手机端和web端搞混了,当时简历写的面向web端的,想来也是糊涂和偏执。

基本概念

部分人把手机端也称为web端??
按照我的习惯和大佬的称谓,移动端的页面开发可称为移动H5页面、wap页面、流应用。电脑端(大显示器环境,也可包括部分电脑)成为PC端、web端。

目前属于移动互联网时代,前端由传统的web前端转向手机端的流应用(app内嵌页、小程序、wap网页)
刚实习前,我对移动端的概念不深,从来没专门做过移动端,倒是做过一些web端又兼容移动端的响应式布局。准备面试时抱佛脚刷了一些博文,了解到,web端常用的布局方式是px;兼容不同屏幕大小就是用媒体查询即响应式;主要在手机端打开就是用rem布局。真实情况怎么样呢,请看下文

区别

1.浏览器内核区别

  • PC五大浏览器:IE、Chrome、火狐、Safari、Opera,外加各种国产双核+ IE七大版本:6 7 8 9 10 11 Edge
  • 移动端:Webkit引擎,-webkit-前缀

虽然移动端的内核单一,但还是要考虑低版本手机(老安卓)怪异模式、不支持滚动等逼死人的缺陷。
2.对编程语言的支持

  • PC端就不说了,IE永远过不去的坎…
  • 移动端对HTML5的支持包括主流的:新标签、新特性(所以称之为移动H5页面也是有道理的)
  • 移动端对CSS3的支持:transform、transition、keyframes、flex(CSS3动画、弹性布局放心用)
  • 移动端对JS(ES5、ES6)的支持:every、some、forEach、filter、map,(ES6没问题,但有时要考虑使用老版本的插件库所以完全使用ES6只是接近可能)
    3.移动端常使用的库
  • 移动端常用库:zepto、swipe、iscroll、arttemplate、fastclick(每个库干啥的,按照名字百度即可,这里就不细说了)
    移动端touch事件:touchstart、touchmove、touchend、touchcancel(移动端click会有延迟)
    4.视口
    见过宇宙条的面试题 要求写viewport并解释含义,当时一脸懵逼
    下面一段(不懂可baidu)
    可视窗口
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />

常见的移动端兼容问题

屏幕尺寸和安卓浏览器引擎

移动端使用rem,可是rem是相对根元素大小的布局单位,在调试时效果比px相比差远了。
在实际开发中并不直接使用rem,而是通过webpack等打包器将px转化为rem,那么本地调试呢?vs code中有个easy LESS插件可以在保存less时将其转化为css。什么是less?可编译的类css样式语言。没错现在主流开发并不直接写原生css

常见兼容性问题

不支持的特性:优雅降级
Can i use:http://caniuse.com/

问题1:flex兼容性
  1. 新老版本写法,建议用Autoprefixer 自动添加前缀:
    在这里插入图片描述

  2. flex-wrap支持较差,慎用。一行两个的商品流式布局还是用float吧。

  3. 某些手机浏览器,flex不生效,需要手动把flex容器内的行内元素设置
    display:block,或者display:inline-block

  4. UC近期版本才开始支持justify-content:space-around

问题2:click延时

移动端浏览器click事件,会有大概300ms的延时。

在这里插入图片描述
解决方案:

  1. 换用zepto的tap事件
  2. 使用fastclick.js库
问题3:tap穿透

页面上有个浮层,给浮层或里面的按钮绑定tap事件,点击需要关掉浮层,结果会触发点击下面的页面,点到链接或者输入框。
解决方案:

  1. 监听touchend事件,并在事件中使用preventDefault()阻止冒泡
  2. tap换成click
  3. 延迟关闭浮层
  4. 使用fastclick.js库
    tap穿透详细原因
    用户在点击tap事件(touchstart、touchend)时需要冒泡到document上才会触发。然而用户在touchstart和touchend时会触发click事件,但是此时click事件处于延时300ms,如果在这300ms之内tap事件已经完成,将上层元素删除或隐藏。在300ms到来之际,根据click事件的原则(当click事件的元素处于最上层时会处于click事件,所以有的时候错误的z-index的设置导致无法触发click事件),下层事件被执行,出现穿透现象。当下层是input元素,即使没有绑定click事件,由于其默认聚焦弹出键盘,穿透现象尤为严重。
问题4:1像素边框

由于设备像素比的存在,前端页面上设置的1px的线,最后渲染出来可能是1个、2个、3个设备物理像素。
解决方案:

  1. 设置宽度.5px, 有些设备不支持
  2. transform:scale(x,y),设置线条为1px,然后通过transform:scale(x,y)来缩放线条为原来的一半。参考http://www.cnblogs.com/PeunZhang/p/4709822.html
问题5:webp

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都非常优秀、稳定和统一。
在这里插入图片描述

上图为前端基础库app.js中的代码,懒加载图片时会自动判断是否加载webp格式图片。

问题6:app唤醒

启动应用程序
有些浏览器不能成功唤醒,如UC、微信等,听天由命吧。

2018mui教程 mui实战视频教程 web移动端开发教程+源码 课程简介: 结合MUI框架完成HTML5移动端混合应用开发(微信实战)。 本课程将介绍如何使用HTML5完成移动端混合应用开发,课程以移动端框架MUI为基础,以微信项目为目标,介绍MUI框架的使用,包含移动端排版布局,HTML5借助框架完成手机摄像头调用、手机相册调用、手机重力感应调用等特效,并最终完成微信案例项目。 课程目标: 学习HTML5移动端混合应用开发,并完成微信项目实战,本课程介绍了MUI框架的使用,以及Hbublder工具的基本操作。适用人群本课程适合具有HTML与CSS基础,了解HTML5及CSS3,并想跨入HTML5移动端混合应用开发领域的同仁。 课程目录介绍: 1【MUI框架】HTML5混合应用开发与MUI框架 2 MUI移动端框架初体验 3【微信主页】顶部标题栏 4【微信主页】底部Tab导航 5【微信主页】底部Tab导航样式调整 6【微信主页】图文列表 7【微信项目】整体效果展示 8【微信子页面】DIV方式创建子页面 9【真机调试】HTML5程序真机调试 10【微信子页面】WebView方式创建子页面 11【微信子页面】WebView方式创建子页面 12【微信子页面】webView子页面效果演示 13【微信子页面】底栏Tab页面切换 14【微信子页面】打开微信聊天子页面 15【微信子页面】聊天页面效果展示 16【微信子页面】页面间传值 17【相册】Html5访问手机相册,发送单张图片 18【相册】Html5访问手机相册,发送多张图片 19【摄像头】Html5访问手机摄像头,发送拍摄照片 20【摇一摇】获取重力感应 21【摇一摇】监控重力感应及摇一摇实现逻辑 22【微信子页面】发现页面 23【朋友圈】朋友圈页面布局 24【朋友圈】下拉刷新 25【朋友圈】上拉加载 26【事件】移动端事件 27【其他】MUI其他相关 28【案例包】项目案例包效果展示 29【案例包】项目案例包源码获取 30【应用退出】应用程序退出实现 31【打包部署】应用程序云打包与发布 Mui视频教程部分 MUI - dialog对话框、ipnut (表单).mp4 MUI - datepicker(时间选择器).mp4 MUI 介绍、新项目创建、 基础布局.mp4 MUI - 窗口管理及窗口之间的数据传递.mp4 MUI - 复选框、单选框、使用js获取选择值.mp4 MUI - cardview(卡片视图)、mask(遮罩蒙版).mp4 MUI - accordion(折叠面板)、button(按钮).mp4 h.js 使用教程.mp4 MUI - actionsheet(操作表)、badge(数字角标).mp4 MUI - slide(轮播组件).mp4 APP与服务器之间的交互原理、MUI Ajax使用.mp4 MUI - progressbar(进度条)、滑块及switch开关.mp4 MUI - 事件管理及自定义事件详解.mp4 微信实战-结合MUI框架完成HTML5移动端混合应用开发视频教程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值