viewport 视口
在PC端,我们开发的HTML页面运行在浏览器中,浏览器有多宽(一般浏览器代表设备的宽度)HTML就有多宽,也就是在浏览器宽度的视口中渲染和呈现我们的页面
移动端和PC端有区别:不管移动端设备(代指打开的浏览器)的宽度是多少,HTML页面的宽度是980(或者1024) =>导致的问题:如果在设备窗口中想把整个页面完全呈现出来(小窗口中完全展示大页面),我们只能把大页面进行缩放,HTML页面缩放了,那么页面中所有内容都缩放了
解决方案
只要让H5页面的宽度和手机设备的宽度保持一致即可,就不会出现手机渲染页面的时候把页面缩放的事情了
1
2
3
4
5
6
7
8
9
10
11 <meta name="viewport"
content="width=device-width, initial-scale=1.0">
此META标签就是在设置VP(视口)的规则
width=device-width:让HTML页面的宽度等于设备的宽度
height=:设置HTML页面的高度(一般不用)
initial-scale=1.0:初始缩放比例是1:1(也就是既不放大也不多小)
user-scalable=no:禁止用户手动缩放
maximum-scale=1.0
minimum-scale=1.0:设置最大最小的缩放比例1:1(既不放大也不缩小 =>部分安卓机中只设置user-scalable是不起作用的,需要同这两个一起使用)
...
layout viewport:布局(页面)视口(和开发CSS等相关)
visual viewport:手机视口
ideal viewport:理想视口
移动端项目
PC端和移动端公用一套项目的(结构相对简单的:一般都是展示类的企业站)
设计师一般只给一套设计稿
先做PC端(设计给的设计稿一般都是给PC端的)
一般宽度都是自适应的(具体情况有所不同)切换到手机端,使用@media(媒体查询)把不同设备上不合适的样式进行修改
PC端和移动端是分开的两套不同项目
设计师一般会给两套设计稿 (PC+移动)
PC端单独做(做它的时候不需要考虑移动端响应式)
固定布局移动端单独做(只需要考虑移动端的响应式适配即可)
响应式布局
- 依然可以基于@MEDIA来处理(麻烦一些)
- 固定布局(viewport => width=320px):按照设计稿把320尺寸的写好即可(所有的尺寸都可以固定,而且都是设计稿的一半 [因为设计稿是大一倍的]),在其它的设备上,让320的页面居中展示即可
- SCALE等比缩放布局(严格按照设计稿的尺寸来写样式[没有啥自适应宽度,都是固定值],在其它设备上,首先获取设备的宽度,让其除以设计稿的宽度,然后让原始写好的页面按照这个比例整体缩小即可) =>会导致一些问题例如字体变模糊…
- REM等比缩放:它是参考SCALE,只是用的REM单位来实现的等比缩放(严格按照设计稿的尺寸编写 [但是一般宽度让他自适应],其余的值可以写成固定值 -> 在编写CSS样式的时候,我们把所有的PX单位都换算成REM单位 -> 当加载页面的时候,根据当前设备的尺寸除以设计稿,根据比例动态调整REM和PX的换算比例)
CSS3中提供了flex-box伸缩盒子模型,基于这个属性,可以让某些效果处理起来更加的方便
A&&D&&E是目前最常用的响应式布局方案
设计是给的移动端设计稿一般都是:6401136(980或者不定高度)、7501334…
为啥我们的设计稿都比参照的手机大一倍?
目的是保证我们切下来的素材资源图片是大图
为啥要保证是大图?
因为很多手机都是二倍及三倍屏幕像素密度比(DPR)的
即使给的是二倍设计稿,但是部分手机的设备尺寸要大于设计稿的一半,有的手机是3倍DPR的,这样就导致一个问题:部分图片还是会变的模糊一些,此时我们找设计师单独的把模糊图片要一张大图即可
http
HTTP请求阶段:向服务器发送请求
- 浏览器首先向DNS域名解析服务器发送请求
- DNS反解析:根据浏览器请求地址中的域名,到DNS服务器中找到对应的服务器外网IP地址
- 通过找到的外网IP,向对应的服务器发送请求(首先访问的是服务器的WEB站点管理工具:准确来说是我们先基于工具在服务器上创建很多服务,当有客户端访问的时候,服务器会匹配出具体是请求哪个服务)
- 通过URL地址中携带的端口号,找到服务器上对应的服务,以及服务所管理的项目源文件
HTTP响应阶段:服务器把客户端需要的内容准备好,并且返回给客户端
- 服务器端根据请求地址中的路径名称、问号传参或者哈希值,把客户端需要的内容进行准备和处理
- 把准备的内容响应给客户端(如果请求的是HTML或者CSS等这样的资源文件,服务器返回的是资源文件中的源代码[不是文件本身])
浏览器渲染阶段
- 客户端浏览器接受到服务器返回的源代码,基于自己内部的渲染引擎(内核)开始进行页面的绘制和渲染
- 首先计算DOM结构,生成DOM TREE
- 自上而下运行代码,加载CSS等资源内容
- 根据获取的CSS生成带样式的RENDER TREE
- 开始渲染和绘制
我们把一次完整的 请求+响应 称之为 “HTTP事务”
事务就是完整的一次操作,请求和响应缺一不可一个页面完全加载完成,需要向服务器发起很多次HTTP事务操作
一般来说:首先把HTML源代码拿回来,加载HTML的时候,遇到link/script/img[src]/iframe/video和audio[没有设置preload=’none’]…都会重新和服务器端建立HTTP事务交互特殊情况:如果我们做了资源缓存处理(304),而且即将加载的资源在之前已经加载过了,这样的操作和传统的HTTP事务有所不一样,他们是从服务器和浏览器的缓存中读取数据,比传统的读取快很多
在客户端向服务器发送请求,以及服务器把内容响应给客户端的时候,中间相互传递了很多内容(客户端把一些内容传递服务器,服务器把一些内容响应给客户端),我们把传递的内容统称为“HTTP报文”