PC端开发 VS 移动web开发

1)PC端开发
使用的技术:html css js
侧重点:pc端的兼容和适配,pc端的事件(鼠标)
2)移动web
使用的技术:html css js
侧重点:手机端适配,移动端事件(触摸)

手机屏幕

移动设备与 PC 设备最大的差异在于屏幕,这主要体现在屏幕尺寸屏幕分辨率两个方面。

2.1 屏幕尺寸

通常我们所指的屏幕尺寸,实际上指的是屏幕对角线的长度(一般用英寸来度量)如下图所示:( 3.5英寸 , 4.7英寸, 5.5英寸 )

2.2 分辨率

分辨率则一般用像素来度量 px,表示屏幕水平和垂直方向的像素个数
例如 :1920*1080 px 分辨率
指的是屏幕垂直方向和水平方向分别有 1920 和 1080 个像素点而构成。

2.3 长度单位

在 Web 开发中可以使用 px(像素)、em、rem、pt(点)、in(英寸)、cm(厘米)做为长度单位,我们最常用 px(像素)做为长度单位。
pt(点) ios开发是以点做为单位的,是抽象的单位,是设备的独立像素。
我们可以将上述的几种长度单位划分成相对长度单位绝对长度单位(in、cm)

iPhone 3G/S 的分辨率是480 320 px iPhone 4/S 的分辨率是960 640 px

如上图所示,iPhone3G/S 和 iPhone4/S 的屏幕尺寸都为 3.5 英寸(in)但是屏幕分辨率却分别为 480 320px、960 480px

2.4 像素密度( PPI )

像素密度PPI :就是屏幕每英寸的像素数量

DPI(Dots Per Inch)是印刷行业中用来表示打印机每英寸可以喷的墨汁点数,计算机显示设备从打印机中借鉴了 DPI 的概念。
由于计算机显示设备中的最小单位不是墨汁点而是像素,所以用 PPI(Pixels Per Inch)值来表示屏幕每英寸的像素数量,我们将 PPI、DPI 都称为像素密度,但 PPI 应用更广泛,

PPI 值的越大说明单位尺寸里所能容纳的像素数量就越多,所能展现画面的品质也就越精细,反之就越粗糙。
Retina视网膜屏幕,苹果注册的命名方式,意指具有较高 PPI(大于 320)的屏幕。

2.5 像素

1)物理像素

物理像素,顾名思义,显示屏是由一个个物理像素点组成的,通过控制每个像素点的颜色,使屏幕显示出不同的图像,屏幕从工厂出来那天起,它上面的物理像素点就固定不变了。

1)物理像素大小不是固定的,它与PPI 是有关系。例如:PPI越大,物理像素越小。 2)物理像素只能获取不能修改

2)css像素(又叫设备像素,设备宽度)

CSS像素是一个抽像的单位,主要使用在浏览器上,用来精确度量Web页面上的内容。一般情况之下,CSS像素称为与设备无关的像素(device-independent pixel),简称DIPs。
1.PC 端的css像素默认和物理像素保持一致的(1 个单位的 CSS 像素等于 1 个单位的物理像素)
2.iPhone3G的css像素默认和物理像素保持一致(1 个单位的 CSS 像素等于1 个单位的物理像素)
3.iPhone4/5/6的css像素默认和物理像素不一致(1 个单位的 CSS 像素等于2 个单位的物理像素)
4.iPhonex/6/7/8plus的css像素默认和物理像素不一致(1 个单位的 CSS 像素等于3 个单位的物理像素)

2.6 二倍图

为保证在移动端能够高清的显示图片,我们拿到的素材是 比展示效果要大一倍的图片,大白话的理解就是,小图放大有可能失真,但是大图缩小不会失真。
背景图如何修改大小

  1. background-size: 数值 | cover | contain;
  2. // 数值
  3. // cover 图片宽高比不变、铺满整个容器的宽高,而图片多出的部分则会被截掉;
  4. // contain 图片自身的宽高比不变,缩放至图片自身能完全显示出来,所以容器会有留白区域;

手机端的适配

3.0 视口

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

3.1 布局视口 layout viewport

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

3.2 视觉视口 visual viewport

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

3.3 理想视口 ideal viewport

为了使网站在移动端有最理想的浏览和阅读宽度而设定
理想视口,对设备来讲,是最理想的视口尺寸
需要手动添写meta视口标签通知浏览器操作
meta视口标签的主要目的:布局视口的宽度应该与理想视口的宽度一致,简单理解就是设备有多宽,我们布局的视口就多宽
总结:我们开发最终会用理想视口,而理想视口就是将布局视口的宽度修改为视觉视口

3.4 meta标签

  1. <meta name="viewport"
  2. content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no">

最标准的viewport设置

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

    4. 移动开发选择和技术解决方案

    前面我们所学习的响应式布局方案,使用一套代码通吃pc端与移动端,而使用这种方案的网站,它们的结构通常都是比较简单,并且在做中兴这个页面的时候,我们也发现页面的一些细节还是没有办法处理好的。
    如果页面结构较为复杂,例如京东,淘宝,唯品会等等一些电商网站,我们很难一套代码通吃,因为页面的元素太多了。所以我们通常pc端一套布局方案,在移动端再使用另外一套布局方案,并且要求在不同手机屏幕下的布局都是等比例还原,这个是移动开发选择中比较主流的做法

    4.1 移动端技术解决方案

  1. 移动端调试方法
    • Chrome DevTools(谷歌浏览器的模拟手机调试)
    • 搭建本地web服务器,手机和服务器一个局域网内,通过手机访问服务器(了解)
    1. 在vscode中安装live server 插件
    2. win + r, 输入cmd,调出命令行窗口
      输入指令ipconfig,找到一个IPv4地址
    3. 在手机输入这个IPv4地址:5500,就能访问这个页面
  • 使用外网服务器,直接ip域名访问

移动端浏览器兼容问题
浏览器前缀

Chrome(谷歌浏览器) :WebKit内核     -webkit-
Safari(苹果浏览器) :WebKit内核        -webkit-
Firefox(火狐浏览器) :Gecko内核         -moz-
IE(IE浏览器) :          Trident内核        -ms-
Opera(欧朋浏览器) :Presto内核

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

@charset "utf-8";
/* 禁用iPhone中Safari的字号自动调整 */
html {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
}
/* 去除iPhone中默认的input样式 */
input[type="submit"], input[type="reset"], input[type="button"]{ -webkit-appearance:none; resize: none; }
/* 取消链接高亮  */
body,div,ul,li,ol,h1,h2,h3,h4,h5,h6,input,textarea,select,p,dl,dt,dd,a,img,button,form,table,th,tr,td,tbody,article,aside, details,figcaption,figure,footer,header,hgroup, menu,nav,section{ -webkit-tap-highlight-color:rgba(0, 0, 0, 0); }
/* 设置HTML5元素为块 */
article, aside, details,figcaption,figure,footer,header,hgroup, menu,nav,section { display: block; }
/* 图片自适应 */
img { vertical-align: middle; max-width: 100%; height: auto; border:none; }
/* 初始化 */
body,ul,li,ol,h1,h2,h3,h4,h5,h6,input,textarea,select,p,dl,dt,dd,a,img,button,form,table,th,tr,td,tbody,article, 
aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{ margin:0; padding:0; border: 0 none; }
body{
    /*强制隐藏横向滚动条*/
    overflow-x: hidden; 
    background-color: #f5f5f5;
}
em,i{ font-style:normal; }
strong,b{ font-weight: normal; }
a{ text-decoration:none; color:#333; }
li{ list-style:none; }
h1, h2, h3, h4, h5, h6{ font-size:100%; font-weight: normal; }
input{ outline-style:none; }

4.2 移动端特殊样式

 /*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; }

4.3. 移动端常见布局

  • flex 弹性布局(强烈推荐)
  • vw vh 布局
  • rem+媒体查询布局(js获取视口宽度)
  • 混合布局(前面几种布局都会使用到,也是开发中常见的使用)