移动端布局?html
移动端模拟器: 切换平台后,必定要从新刷新浏览器。后端
去访问一些网站的PC端和移动端:浏览器
大一点的网站都是分开开发的,PC端一套代码,移动端一套代码。如布局
访问淘宝网 -> 后端检测当前设备 -> 若是是PC端 -> www.taobao.com字体
访问淘宝网 -> 后端检测当前设备 -> 若是是移动端:flex
www.taobao.com -> 重定向 -> h5.m.taobao.com网站
Viewport视口spa
注意:只有移动端才有Viewport视口,Viewport视口就是浏览器显示页面内容的屏幕区域。在Viewport中有两种视口,分别表示为visual viewport(可视视口)和layout viewport(布局视口),两个视口是叠加在一块儿的。插件
visual viewport固定大小跟移动设备的屏幕大小相同(如i8的375*667),在上面;而layout viewport可改变大小(默认为980px),在下面。就是以往,会把980px的PC端整个网页压缩在移动端的visual viewport里,但如今不用压缩了,由于有专门针对移动端的一套设计即设置viewport。Layout viewport默认大小为980像素,可经过document.documentElement.clientWidth获取。scala
现代网页须要将layout viewport设置成跟visual viewport等同大小,方便进行网页制做。
viewport设置
经过<meta>标签进行设置,name属性指定viewport值,content属性进行视口配置。
取值 |
含义 |
|
width |
设置layout viewport的宽度特定值,当值为device-width表示自适应设备的宽度 |
|
height |
设置layout-viewport的高度特定值,通常不进行设置 |
|
initial-scal |
设置页面的初始缩放,值为1.0表示不进行缩放 |
|
minimum-scal |
设置页面的最小缩放 |
|
maximum-scale |
设置页面的最大缩放 |
|
user-scalable |
设置页面可否进行缩放,值为no表示不容许用户进行缩放 |
通常在html的头部会进行这样一个总体的设置:<meta name=”viewport” content=”width=device-width, initial-scale=1.0, user-scalable=no”>
移动端适配方案?
1. 百分比布局,也叫流式布局。表明网站:优酷、百度、天猫、腾讯。
元素大小是不会变化的,只是设备屏幕的大小不一样会致使元素的间距发生变化
2. 等比缩放布局,也叫rem布局。表明网站:网易、爱奇艺、淘宝、美团。
设备屏幕小,元素就小一些,屏幕大则元素会大一些,可是元素的间距是不会变化的。
移动端的流式布局(百分比布局)原则:
好处:大屏幕下显示更多的内容 坏处:宽屏下比例会有一些不协调
主要是设置弹性布局display:flex;
移动端的rem布局(等比缩放布局)
即动态设置html的font-size,而后经过一个rem单位等于一个font-size单位来实现rem等比缩放布局。
单位:
em:是一个相对单位,1em等于当前元素或父元素的font-size值。若当前元素没有设置font-size,则一层一层网上找,直到有父元素设置font-size。
rem:是一个相对单位,1rem等于根元素(即html)的font-size值
vw/vh:把屏幕分红100份,1vw等于屏幕宽的1%
如何动态设置font-size?
第一种方法:(经过JS) 要在js里动态设置font-size,首先要获取viewport的屏幕大小,而获取view的屏幕大小是经过document.documentElement.clientWidth来获取的,因此在script标签里能够这样来获取:
<script>
var fontsize = document.documentElement.clientWidth / 3.75;
document.documentElement.style.fontSize = fontsize + ‘px’;
</script>
解析:i6的宽是375,除以3.75是110;i6 plus的宽是414,除以3.75是110.4;咱们把获取到的屏幕宽度除以3.75获得的结果值赋给变量fontsize,而后将结果返回去给页面根元素。
而后若要设置某个div的大小,则可使用相对单位rem来实现了,如i6下,给div设置width:1rem;height:1rem;则该div为100px*100px
px和rem的换算能够经过在vs code中下载插件px to rem。下载完成后单击px to rem右键设置换算单位如100,而后再html中经过alt+z快捷键来进行自动换算,也能够选中整篇html经过alt+z来将整篇的px换算为rem。
第二种方法:(经过CSS),vw为屏幕宽,vh为屏幕高。vw指把屏幕分为了100份宽,总宽为100vw。i6中为375px,那么1vm=3.73px,要获得100px则为26.666667vm。
注:要给body重置一下font-size:16px。由于html的rem只是用来换算的,而body里的字体要设置为font-size:16px;避免受html的影响。