移动端开发基础

183 阅读6分钟

移动端web开发基础

移动端常见浏览器

UC浏览器,QQ浏览器,欧朋浏览器,百度手机浏览器,360安全浏览器,谷歌浏览器,搜歌手机浏览器,猎豹浏览器,以及其他浏览器。

移动端浏览器内核-webkit

国内的UC和QQ,百度等手机浏览器都是根据Webkit修改过来的内核,国内尚无自主研发的内核。
兼容移动端主流浏览器,处理webkit内核浏览器即可。

手机屏幕现状

移动端设备屏幕尺寸非常多,碎片化严重。 Android设备有多种分辨率:480×800,480×845,540×960,720×1280,1080×1920,2K,4K等等
iphone的碎片化也加剧了,其设备的主要分辨率有:640×960,640×1136,750×1334,1242×2208等。
作为开发者无需关注分辨率,因为我们常用的尺寸单位是px。后期可以通过技术手段进行处理变换以适应各种分辨率。

常见移动端屏幕尺寸

参考material.io/devides
作为前端开发不建议纠结dp.dpi,pt,ppi等单位。 我们只需关注物理像素比dpr。

移动端调试方法

  1. 谷歌浏览器模拟手机调试:F12,找到手机平板形状图标调试
  2. 本地搭建web服务器,手机和服务器一个局域网内,通过手机访问服务器
  3. 使用外网服务器,直接IPh或域名访问

视口

视口(viewport)就是浏览器显示页面内容的屏幕区域。
视口可以分为布局视口、视觉视口和理想视口。

布局视口layout viewport

一般移动设备的浏览器设置了一个布局视口,用于解决早期的PC页面在手机显示的问题。
iOS,Android基本都将这个视口分辨率设置为980px,所以PC上的网页大多都能在手机上呈现,只不过元素看上去很小,一般默认可以通过手动缩放网页。

视觉视口 visual viewport

字面意思,它是用户正在看到的网站的区域。注意,是网站的(部分或整体)区域。
我们可以通过缩放去操作视觉视口,但不会影响布局视口,布局视口仍旧保持原来的宽度。

理想视口 ideal viewport

为了使网站在移动端有最理想的浏览和阅读宽度而设定。而不需要缩放。
理想视口,对设备来讲是最理想的视口尺寸,就是符合设备的屏幕尺寸。
需要手动添加meta视口标签通知浏览器操作
meta视口标签的主要目的:布局视口的宽度应该与理想视口的宽度一致,简单理解就是设备有多宽,我们布局的视口就多宽。

meta视口标签

<mata name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">

以上是移动web标准的meta标签设置,表示:

  • 视口宽度和设备保持一致
  • 视口的默认缩放比是1.0
  • 不允许用户自行缩放
  • 最大允许的缩放比是1.0

二倍图

为了解决网页在移动端显示失真问题的手段。

物理像素点和物理像素比

物理像素点是屏幕显示的最小颗粒,是物理真实存在的。这是厂商在出厂时就确定好了,比如iphone 6/7/8是 750×1334。
我们开发时1px不是一定等于1个物理像素的
PC端页面,1个px等于一个物理像素,但是移动端不尽相同。
物理像素比,是指一个px的能显示的像素物理像素点的个数,也叫屏幕像素比。
早期手机屏幕,物理像素比是1。即1CSS像素=1物理像素。
现在我们的手机使用的是Retina(视网膜屏幕)显示技术,可以将更多的物理像素点压缩至一块屏幕。从而达到更改的分辨率,并提高屏幕显示的细腻程度。

多倍图

对于一张50×50px的图片,在手机Retina屏中打开,假如按照2:1的物理像素比会有放大倍数,这样会造成图片模糊。
在标准的viewport设置中,使用倍图来提高图片质量,解决在高清设备中的模糊问题。
通常使用二倍图。因为iphone6/7/8的影响,现在还存在3倍图4倍图的情况,看实际开发公司需求。
背景图也要使用多倍图。使用background-size属性来设置宽高,就可以将多倍图按照想要的尺寸进行显示。

img {
  width: 50px;
  height: 50px;
}
.box {
  width: 50px;
  height: 50px;
  boder: 1px solid #000;
  background: url(images/apple100.jpg) no repeat 0 0;
  background-size: 50px 50px;
}

多倍图切图

移动端开发方法

  • 主流:单独制作移动端页面
    通常情况下,网址域名前面加m即代表打开的是单独的移动端页面。通过判断设备,如果是移动设备打开,则跳到移动端页面。否则打开PC端页面。
  • 响应式页面兼容移动端(其次) 响应式网站:即PC和移动端共用一套网站,只不过在不同宽度屏幕下,样式会自动适配。
    缺点:制作麻烦,需要花费很大精力去调试适配。

移动端技术解决方案

浏览器兼容问题

移动端浏览器基本以webkit内核为主,因此我们只要考虑webkit兼容性问题。
可以放心使用H5标签和CSS3样式。 同时我们浏览器的私有前缀只需要添加-webkit-即可。

CSS初始化 normalize.css

移动端CSS初始化推荐使用normalize.css。是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一,是一种现代的、为HTML5准备的优质替代方案。
优点:

  • 保护了有价值的默认值
  • 修复了浏览器的bug,解决了浏览器不一致的默认样式
  • Nomalize.css是模块化的,提高了易用性
  • Nomalize.css拥有详细的文档 官网地址:necolas.github.io/normalize.c…

CSS3盒子模型box-sizing

  • 传统模式宽度计算:盒子的宽度=CSS中设置width+border+padding
  • CSS3盒子模型:盒子的宽度=CSS中设置的宽度width。里面包含了border和padding,也就是说,我们的CSS3中的盒子模型,padding和border不会撑大盒子了。
/*css3盒子模型*/
box-sizing: border-box;
/*传统盒子模型*/
box-sizing: content-box;

如何选择传统盒模型还是CSS3盒模型

  • 移动端可以全部CSS3盒模型
  • PC端如果需要完全兼容,我们就用传统模式,如果不考虑兼容性,我们就选择CSS3盒模型

特殊样式

/*CSS3盒子模型*/
box-sizing: border-box;
-webkit-box-sizing: border-box;
/*点击高亮效果需要清除,设置为transparent完全透明*/
-webkit-tap-highlight-color:transparent;
/*在移动端浏览器默认的外观在iOS上加上这个属性才能给按钮和输入框自定义样式*/
-webkit-appearance:none;
/*禁用长按页面时的弹出菜单*/
img,a {-webkit-touch-callout:none;}

移动端技术选型