为何要作移动端适配?html
逻辑像素
,以致于在不一样分辨率的设备上同一个UI设计图展现效果会被伸缩变形,因此须要作移动端适配经过历史进程进一步认识!浏览器
设备像素比被通俗地固定在1
(分辨率:物理像素/发光点),当后续各式尺寸、各式屏幕大小出现,但愿能经过一套代码自适应不一样设备(摸鱼就是第一辈子产力
)retina display 视网膜屏
能够多个物理像素(2*2)构成一个逻辑像素。因此接下来针对不一样分辨率的设备,均可以经过处理设备像素比达到统一逻辑像素分辨率1 rem = 1 * ducument.ducumentElement.style.fontSize
大多数浏览器默认为 HTML标签 font-size 为 16 pxdom
// 进行一个监听配置 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; docEl.style.fontSize = 100 * (clientWidth / 750) + 'px'; // 核心代码,这里的值能够自定义设置 }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); })(document, window);
<meta name="viewport" content="width=device-width, initial-scale=1.0">
width能够设置定值,调整initial-scale控制缩放比例ide
vw、vh布局
1vw = width * 1% 1vh = height * 1% (这里都是视图宽高)
测试
距离写 百分比 width : 80%;
设计
vh、vw讲解code
----------------------------------------分隔线------------------------------------------------------------------htm
因为相对于逻辑分辨率 那逻辑分辨率变化就会引发差错
依赖当前dom元素或父元素的font-size 一旦须要调整,找父元素的font-size很麻烦
需考虑总体
----------------------------------------分隔线------------------------------------------------------------------对象
html { font-size: 10px; } #t1 { width: 90px; height: 50px; background-color: crimson; } #t2 { font-size: 5px; width: 10em; height: 10em; background-color: darkred; margin-left: 2em;} #t3 { font-size: 50px; padding-top: 2rem; width: 6rem; height: 6rem; border: 1px solid black; } #t4 { width: 100%; height: 100%; background-color: darkblue;} </style> <body> <div id="t1"></div> <div id="t2"></div> <div id="t3"> <div id="t4"></div> </div>
----------------------------------------分隔线------------------------------------------------------------------
#t5 { width: 10vw; height: 10vh; background-color: darkslateblue;} #t6 { width: 10vmax; height: 10vmin; background-color: darkturquoise;} <div id="t5"></div> <div id="t6"></div> <script> console.log(window.innerHeight); </script>