移动端适配方案(rem)
移动端适配方案(rem)
适配原理:通过 js 动态设置 html 的 font-size
1.设置 meta viewport 属性
1 | <meta name= "viewport" content= "width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" /> |
2.添加动态设置 html 的 font-size 的 js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ( function (designWidth, maxWidth) { var doc = document, win = window, docEl = doc.documentElement, remStyle = document.createElement( "style" ), tid; function refreshRem() { var width = docEl.getBoundingClientRect().width; maxWidth = maxWidth || 750; width > maxWidth && (width = maxWidth); //设置最大宽度 width < 375 && (width = 375); //设置最小宽度 var rem = width * 100 / designWidth; remStyle.innerHTML = 'html{font-size:' + rem + 'px;}' ; } if (docEl.firstElementChild) { docEl.firstElementChild.appendChild(remStyle); } else { var wrap = doc.createElement( "div" ); wrap.appendChild(remStyle); doc.write(wrap.innerHTML); wrap = null ; } //要等 wiewport 设置好后才能执行 refreshRem,不然 refreshRem 会执行2次; refreshRem(); win.addEventListener( "resize" , function () { clearTimeout(tid); //防止执行两次 tid = setTimeout(refreshRem, 300); }, false ); win.addEventListener( "pageshow" , function (e) { if (e.persisted) { // 浏览器后退的时候重新计算 clearTimeout(tid); tid = setTimeout(refreshRem, 300); } }, false ); if (doc.readyState === "complete" ) { doc.body.style.fontSize = "16px" ; } else { doc.addEventListener( "DOMContentLoaded" , function (e) { doc.body.style.fontSize = "16px" ; }, false ); } })(750, 750); |
下一篇:sass 进阶使用文档
相关内容
纯静态和伪静态的区别?
我们从以下三个方面,对比纯静态和伪静态两种静态页面生成方式,逐一展开分析。
用JS的正则表达式如何判断输入框内为中文或者是英文数字,或者是三者混编
用JS的正则表达式如何判断输入框内为中文或者是英文数字,或者是三者混编
css制作扇形
css制作扇形
纯CSS3文字Loading动画特效
纯CSS3文字Loading动画特效
PhpStorm 2022.1 EAP#3 发布:增强多行和嵌套数组形状
PhpStorm 2022.1 EAP 3 在 PHPDoc 和属性中添加了对多行和嵌套数组形状的完全支持:在这种情况下,可以使用数组形状注释定义数组结构,以获得键的代码补全并推断值的类型。
2022年PHP的现状以及最新版本带来的特性
PHP作为Web界第一大语言近年来热度不够,但是这几年的进步和成长却没有中断。在2022伊始,我们来一起学习一下目前PHP的现状以及最新版本带来的特性。
网站开发技术分享:Linux程序前台后台切换详解
Linux程序前台后台切换:在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行Ubuntu$">root@Ubuntu$ ./tcpserv01 &
如何分辨python换行符,Python换行符的多行模式
Python 的正则表达式支持 多行模式,将每行文字分别匹配。然而各种操作系统里,换行符的表示法各不相同,会导致 Python 不能正确使用多行模式。