由一次动态改变font-size的大小引申的一系列困惑补录
以下结论如有错误,欢迎指正
在切入正题之前,先了解下window 和document这两个大对象
我们熟知 JavaScript的组成如下图所示:

window对象和document对象分别属于哪个分支下面呢?

发现: 在控制台打印出的document对象和window.document打印出来的对象是一致的

原因是因为: 平常我们以document开头的各种API 实际上都是省略了window
现在对于window和documen有了初步理解之后
现在抛出以下几个属性
window.outerHeight ? window.innerHeight? document.documentElement.clientHeight ? document.body.clientHeight? offsetHight? scrolHeight? 脑袋瞬间123
那么就一个个攻破吧
window.outerHeight & windwo.innerHeight
顾名思义,从window开始,我们知道window属于BOM范围,BOM指的是浏览器对象模型,存储浏览器的各种信息个API,所以
window.outerHeight
即是整个浏览器的外边高度(包含了导航栏,横向滚动条等)
windwo.innerHeight
浏览器除去导航栏,横向滚动条剩下的DOM的视口大小
经检验:
在移动端浏览器中: window.outerHeight = windwo.innerHeight ;
在移动端中 两者且是设备的逻辑像素(也叫做CSS像素)
在PC浏览器中: window.outerHeight ≠ windwo.innerHeight ;
浏览器兼容性: 兼容到IE8
document.documentElement.clientHeight && document.body.clientHeight
从document开始,那么描述的是文档对象模型这个对象的相关属性和API,所以
document.documentElement.clientHeight
文档对象模型中HTML标签的高度
document.body.clientHeight
文档对象模型中body标签的高度
经检验:
在移动端中 document.documentElement.clientHeight = document.body.clientHeight
在PC端中 document.documentElement.clientHeight ≠ document.body.clientHeight
兼容性: 兼容到IE6
offsetHight
通常我们立即offset就是偏移的意思,即页面滚动,从页面开始到滚动到的位置的偏移高度
scollHeight
滚动的高度,包含页面没有显示出来的,页面的整体高度
理解了以上的几点之后,脑袋突然想到移动端设配的REM是通过获取docuemt.documentElement.clientWidth来动态改变html标签的font-size的大小,该边font-size的大小的原因是因为会用到REM来匹配1rem 等于HTML元素的font-size的大小,这时候脑袋又想到REM? EM ? PX?
PX
设备中的最小显示单位,不可改变
EM
以元素外层的父元素的font-size作为参照基准,元素的 1em = 元素的父级元素的font-size的大小
REM
以HTML标签的font-size大小为参照基准,元素的1rem = html变迁的font-size大小
晚点画一张图,表示关系。
由一次动态改变font-size的大小引申的一系列困惑补录的更多相关文章
- Android中动态改变控件的大小的一种方法
在Android中有时候我们需要动态改变控件的大小.有几种办法可以实现 一是在onMeasure中修改尺寸,二是在onLayout中修改位置和尺寸.这个是可以进行位置修改的,onMeasure不行. ...
- 模仿iframe框架,由分隔栏动态改变左右两侧div大小———基于jQuery
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- ios 运行时特征,动态改变控件字体大小
需求:ex: 在不同尺寸的iPhone上面显示的字体大小不一样 https://github.com/rentzsch/jrswizzle #import <UIKit/UIKit.h> ...
- LaTex Font Size 字体大小命令
LaTex中字体大小有很多中等级,分别由下列命令控制: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE ...
- LaTex Font Size 字体大小
目录 命令 效果图 命令 LaTex中字体大小由以下命令控制: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LA ...
- 动态改变Android控件大小
Button button = (Button) findViewById(R.id.button2);button.setOnClickListener(myOnClickListener); // ...
- 分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小
原文:分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小 /** * Reallocates an array with a new size, and copies the co ...
- Winfrom固定Label宽度,根据文本动态改变Label的高度 z
Label,要固定住宽度,然后根据文本的长度来动态改变高度,一开始去网上找解决方案,各种根据字体大小啊,字数啊来动态改变,但是效果却不怎么好.最后灵机一动,想起了偶尔用过一次的FlowLayoutPa ...
- 代码动态改变 NGUI UILabel 的字体
有一次因为 ttf 分成简体和繁体两个..所以就需要动态改变NGUI 中 UILabel 的字体,但是不知道 UILabel 保存字体的字段是哪个 网上搜到..在这里记录一下 using UnityE ...
随机推荐
- JAVA中equals()与==的区别详解
在进行判断操作时,常常会用到==或者equals()进行等价判断,那么两者究竟有什么区别呢,下面整理一下个人理解. 简单介绍: ==是一种引用相等性比较符,判断引用到堆上同一个对象的两个引用是相等的. ...
- 【题解】[SCOI2010]股票交易
十分普通的DP+不平凡的转移 传送门 这道题状态十分明显.转移是\(O(n^4)\)的,过不去,我们需要优化. 一个十分显然的DP是\(f(i,j)\)表示第\(i\)天时候拥有\(j\)单位股票的最 ...
- 韩国版微信Kakao推出公链,能否用区块链实现全球扩张?
2018年是属于区块链的一年,国内外巨头们纷纷布局区块链产业,前不久韩国最大的移动社交平台Kakao集团正式启动了旗下的第一个公链Klaytn的测试网. 此次宣布只是一次试探性举措,旨在对外公布Kla ...
- iOS中常见的设计模式(MVC/单例/委托/观察者)
关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...
- 验证控件 .net
检查Page.IsValid if (typeof (Page_ClientValidate) == 'function') { Page_ClientValidat ...
- golang字符串拼接性能对比
对比 +(运算符).strings.Join.sprintf.bytes.Buffer对字符串拼接的性能 package main import ( "bytes" "f ...
- BZOJ 1650 [Usaco2006 Dec]River Hopscotch 跳石子:二分
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1650 题意: 数轴上有n个石子,第i个石头的坐标为Di,现在要从0跳到L,每次条都从一个石 ...
- laravel基础课程---10、数据库基本操作(如何使用数据库)
laravel基础课程---10.数据库基本操作(如何使用数据库) 一.总结 一句话总结: 1.链接数据库:.env环境配置里面 2.执行数据库操作:DB::table('users')->up ...
- linux 多线程编程-读写者问题
#include <cstdio> #include <pthread.h> #include <unistd.h> ]; int i,j; pthread_rwl ...
- 集训Day4
在bzoj刷了好几天杂题感觉手感不是很好 继续回来集训一下 好几天没更新了啊... bzoj1875 一个无向图,一个人要从起始点走$t$步走到终点,不能沿着刚走过来那条边回去,问有多少种走法 $m ...