Home

Awesome

页面结构布局

单位

px单位的名称为像素,它是一个固定大小的单元,像素的计算是针对屏幕的,一个像素1px就是屏幕上的一个点,即屏幕分辨率的最小分割。由于它是固定大小的单位,单独用它来设计的网页,如果适应大屏幕电脑,在小屏幕手机上就会很不友好,做不到自适应的效果

em单位的名称为相对长度单位,它是用来设置文本的字体尺寸的,它是相对于当前对象内文本的字体尺寸;如果没有人为设置当前对象内文本的字体尺寸,那么它相对的是浏览器默认的字体尺寸16px

相对长度单位,它的出现是为了解决em的缺点,em可以说是相对于父级元素的字体大小,当父级元素字体大小改变时,又得重新计算。rem出现就可以解决这样的问题,rem只相对于根目录,即HTML元素。所以只要在HTML标签上设置字体大小,文档中的字体大小都会以此为参照标准,一般用于自适应布局

view heightview width的简写,是指可视窗口的高度。假如高度是1200px的话。那10vh就是120px,即1 vh = 1200px/100 = 12 px

总结:

视口

移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域

以屏幕分辨率为基准,实际上布局视口的宽度要比屏幕宽出很多,以上图片显示的尺寸就是 layout viewport

layout viewport的宽度是大于浏览器可视区域的宽度的,所以我们还需要一个viewport来代表 浏览器可视区域的大小,这个viewport叫做visual viewport。在JS中可以通过window.innerWidth来获取

一个能完美适配移动设备的视口,需要手动添加meta标签,一般视口大小都设置为设备大小

<meta name="viewport" content="width=device-width">

举个例子,手机上的浏览器是全屏的,手机实际宽度是320像素(即visual viewport),而手机分辨率是980宽度(即layout viewport),所以手机上打出来的是980而不是320,如果设置了meta完美适配设备(即ideal viewport)

利用以下属性对viewport进行控制, 可多个同时使用,并用逗号隔开

所以如果不定义viewpoint的话,页面宽度以屏幕分辨率为基准,而设置以后可以根据设备宽度来调整页面,达到适配终端大小的效果

动态设置字体大小及viewport

<script type="text/javascript">
    // 把尺寸放大N倍(N是window.devicePixelRatio)
    // 物理像素*设备像素比=真实像素
    var wd = document.documentElement.clientWidth*window.devicePixelRatio/10;
    document.getElementsByTagName("html")[0].style.fontSize = wd + "px";
    
    // 把屏幕的倍率缩小到N分之一(N是window.devicePixelRatio)
    var scale = 1/window.devicePixelRatio;
    var mstr = 'initial-scale='+ scale +', maximum-scale='+ scale +', minimum-scale='+ scale +', user-scalable=no';
    document.getElementById("vp").content = mstr;
</script>