px转rem的详细解释和用法
最终可实现:例如宽 20px 的图,就可以写成 0.2rem ; 公式为20px/100=0.2rem;
var rootResize=function(){var baseFontSize = 100;var baseWidth = 640;var minWidth=320;var clientWidth = document.documentElement.clientWidth || window.innerWidth;var innerWidth = Math.max(Math.min(clientWidth, baseWidth), minWidth);var rem = clientWidth/(baseWidth/baseFontSize);if(innerWidth==640||innerWidth==320){rem=innerWidth/(baseWidth/baseFontSize)}document.querySelector('html').style.fontSize = rem + 'px';};
rootResize();
window.οnresize=function(){rootResize()};
解析代码:(针对手机端)
documentElement.clientWidth
window.innerWidth
先解释下
documentElement:
返回HTML DOM中的ROOT节点 即 ; 菜鸟网解释与案例
documentElement.clientWidth:
window.innerWidth:
Element.clientWidth 属性表示元素的内部宽度,以像素计。该属性包括内边距,但不包括垂直滚动条(如果有)、边框和外边距。
window.innerWidth:
浏览器视口(viewport)宽度(单位:像素),如果存在垂直滚动条则包括它。
我们用代码验证下:
<html >
<head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
</head>
<body>
<div style="border: 10px #7f7f7f solid;"><p style="background: #fe9901" id="demo1">显示值</p><p style="background: #d76342" id="demo2">显示值</p><p style="background: #fe9901" id="demo3">显示值</p><button οnclick="Click1()">body</button><button οnclick="Click2()">html</button><button οnclick="Click3()">p</button>
</div>
</body>
<script>// var mybody = document.body.clientWidth;var myhtmlto = document.documentElement.clientWidth;var myhtml = window.innerWidth;var myp = document.getElementById("demo3").clientWidth;/* function Click1 (){var mby=document.getElementById("demo1");mby.innerHTML=mybody+"---document.body.clientWidth;";}*/function Click1 (){var diy=document.getElementById("demo1");diy.innerHTML= myhtmlto+"---document.body.clientWidth;";}function Click2(){var diy =document.getElementById("demo2");diy.innerHTML=myhtml+"---window.innerWidth;";}function Click3(){var diy =document.getElementById("demo3");diy.innerHTML=myp+"---getElementById(\"demo3\").clientWidth;";}
</script>
</html>
针对手机端, 所以设置
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
运行结果:
document.documentElement.clientWidth / window.innerWidth; 都是获取的HTML宽度。
document.getElementById("demo3").clientWidth; 当.clientWidth 定位到P标签宽度时,只计算内边距宽度,不计算边框.
打开 document.body.clientWidth; 当P标签没有外边框的时候 body宽度等于P标签宽度, body和HTML宽度不相等,相差得数值 就不做深究了。
剩下的我就重点说一下clientWidth/(baseWidth/baseFontSize); 这个公式的意义。
首先当把HTML font-size:设置多少。 1rem 就等于 多少;
<html>
<head><meta charset="UTF-8"><title>Title</title>
</head>
<style>html{font-size: 100px;}
</style>
<body>
<p style="background: #fe9901;width: 1rem;" id="demo3">显示值</p>
<button οnclick="Click3()">p</button>
<script>var myp = document.getElementById("demo3").clientWidth;function Click3(){var diy =document.getElementById("demo3");diy.innerHTML=myp+"px我的宽度";}
</script>
</body>
</html>
大家自己动手改下数值验证一下, 也可以切换模拟器宽度,是不受模拟器宽度影响的。
clientWidth 变量=实际手机窗口宽度。 baseWidth=640px; baseFontSize=100px;
换个方法大家就一眼看懂了。 640px/100px = 实际手机窗口宽度/ 实际手机HTML:font-size;代码是rem 我用 实际手机HTML:font-size 代替便于大家理解。 等式的意义就是, 当窗口为640PX font-size设置为100PX 时 1rem=100px 。 那当实际手机窗口宽度为比如:320 时, 那么实际手机的font-size我改设置多少呢。 这个等式最后求出的 实际手机font-size 目的就是按照100PX=1rem这个关系来动态的换算我们的rem;不受实际窗口宽度变化影响。
剩余没讲解的代码 都比较清晰易懂,大家动手查查吧!
px转rem的详细解释和用法相关推荐
- C语言学习——sprintf函数详细解释及其用法
函数功能: 把格式化的数据写入某个字符串 头文件: stdio.h 函数原型: int sprintf( char *buffer, const char *format, [ argument] - ...
- MATLAB中的eps的详细解释及用法
(1)首先,eps是一个函数,它表示的是一个数可以分辨的最小精度.默认时它表示1到它下一个浮点数之间的距离的一半,而正好等于最大小于1的浮点数到最小大于1的浮点数之间的距离.eps=2.2204e-1 ...
- ML之sklearn:sklearn.metrics中常用的函数参数(比如confusion_matrix等 )解释及其用法说明之详细攻略
ML之sklearn:sklearn.metrics中常用的函数参数(比如confusion_matrix等 )解释及其用法说明之详细攻略 目录 sklearn.metrics中常用的函数参数 con ...
- MATLAB中var函数,mean函数的含义及用法详细解释
MATLAB中var函数,mean函数的含义及用法详细解释 var函数语句 我们先来看var函数,MATLAB命令窗输入help var ,可以得到用到方差函数Syntax有: V = var(X); ...
- linux usermod用法,Linux中的usermod命令的详细解释
在Linux系统中,usermod命令的主要功能是修改用户账户,下面由学习啦小编为大家整理了linux下的usermod命令的详细解释,希望对大家有帮助! Linux中的usermod命令的详细解释 ...
- linux mkdir命令用法,linux中的mkdir命令的详细解释
linxu下的mkdir命令从字面上就可以理解其实是创建文件或者目录的意思.下面由学习啦小编为大家整理了linux的mkdir命令的详细解释的相关知识,希望对大家有帮助! 一.linux中的mkdir ...
- Vue项目自动转换 px 为 rem,高保真还原设计图
技术栈 vue-cli:使用脚手架工具创建项目. postcss-pxtorem:转换px为rem的插件. 自动设置根节点html的font-size 因为rem单位是相对于根节点的字体大小的,所以通 ...
- html5变动标签新写法,Html5新标签解释及用法
Html5新标签解释及用法 发布时间:2012-02-17 22:50:45 作者:佚名 我要评论 HTML 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1. ...
- 网络管理:超级详细Tcpdump 的用法
第一种是关于类型的要害字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一 ...
最新文章
- js控制Iframe 和 iframe与主页的交互,传值 (转载)
- java基础-可执行jar包
- 安全性问题(数据篡改(拿到别人的URL,篡改数据(金额)发送给系统))
- 3D Human相关研究总结:人体、姿态估计、人体重建等
- boost :: hash_combine从类的不同成员生成哈希值
- Window VMWare中Centos虚拟机ifconfig命令不显示ens33
- 电梯设计需求调研报告
- Cloud Foundry 2018欧盟峰会日程已确定
- 【爱心2】JAVA表白代码——“LOVE“
- RubyOnRails 在linux平台安装的过程
- ios yylabel 加载html,iOS关于YYLabel的富文本点击事件
- html实现字体加边框及填充
- K3S配置IPV6环境
- Bootstrap 对齐方式
- Java 版本中文数字转阿拉伯数字实现
- oracle deadlock with TM lock in SX/SSX mode
- 【期末复习】技术经济学(南邮储成祥)
- [1609.04802] SRGAN中的那些loss
- 微信小程序 发布后强制更新版本 强制覆盖老版本
- 00后专访:我是如何初中毕业年仅16岁便踏入北漂码农行业的(一)
热门文章
- NetApp ONTAP Select 混合云存储解决方案
- python爬虫——BeautifulSoup库函数find_all()
- Qt Creator配置Intel IPP库并实现信号带通滤波
- android多音频输出,基于Android车载系统的多路音频输出的方法、装置及系统与流程...
- HTML5 em标签:定义文字斜体
- 定位技术-定位模块(u-blox)
- u盘安装纯净版xp(xp安装光盘)非ghost版xp
- 关于uni-app的Picker选择器默认选择的问题
- 【转载】SARscape5.4/5.4.1新功能
- 快捷键个人使用积累(更新ing)