以下结论如有错误,欢迎指正

在切入正题之前,先了解下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的大小引申的一系列困惑补录的更多相关文章

  1. Android中动态改变控件的大小的一种方法

    在Android中有时候我们需要动态改变控件的大小.有几种办法可以实现  一是在onMeasure中修改尺寸,二是在onLayout中修改位置和尺寸.这个是可以进行位置修改的,onMeasure不行. ...

  2. 模仿iframe框架,由分隔栏动态改变左右两侧div大小———基于jQuery

    <!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...

  3. ios 运行时特征,动态改变控件字体大小

    需求:ex: 在不同尺寸的iPhone上面显示的字体大小不一样 https://github.com/rentzsch/jrswizzle #import <UIKit/UIKit.h> ...

  4. LaTex Font Size 字体大小命令

    LaTex中字体大小有很多中等级,分别由下列命令控制: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE ...

  5. LaTex Font Size 字体大小

    目录 命令 效果图 命令 LaTex中字体大小由以下命令控制: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LA ...

  6. 动态改变Android控件大小

    Button button = (Button) findViewById(R.id.button2);button.setOnClickListener(myOnClickListener); // ...

  7. 分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小

    原文:分享非常有用的Java程序 (关键代码)(四)---动态改变数组的大小 /** * Reallocates an array with a new size, and copies the co ...

  8. Winfrom固定Label宽度,根据文本动态改变Label的高度 z

    Label,要固定住宽度,然后根据文本的长度来动态改变高度,一开始去网上找解决方案,各种根据字体大小啊,字数啊来动态改变,但是效果却不怎么好.最后灵机一动,想起了偶尔用过一次的FlowLayoutPa ...

  9. 代码动态改变 NGUI UILabel 的字体

    有一次因为 ttf 分成简体和繁体两个..所以就需要动态改变NGUI 中 UILabel 的字体,但是不知道 UILabel 保存字体的字段是哪个 网上搜到..在这里记录一下 using UnityE ...

随机推荐

  1. 点聚-weboffice 6.0 (二)

    1.修订操作 //设置当前操作用户 function SetUserName() { try{ var webObj=document.getElementById("WebOffice1& ...

  2. html乱码怎问题

    大家会不会常常遇到中文乱码的情况?html中文乱码问题该怎么调? <标签名 lang=lang> - 指定语言种类 lang 属性能够指定标签范围内的元素的语言种类. 英语lang=&qu ...

  3. hdoj 1116 Play on Words 【并查集】+【欧拉路】

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  4. python数据分析之:数据加载,存储与文件格式

    前面介绍了numpy和pandas的数据计算功能.但是这些数据都是我们自己手动输入构造的.如果不能将数据自动导入到python中,那么这些计算也没有什么意义.这一章将介绍数据如何加载以及存储. 首先来 ...

  5. px sp dp 手机尺寸

  6. 04-树7 二叉搜索树的操作集(30 point(s)) 【Tree】

    04-树7 二叉搜索树的操作集(30 point(s)) 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType ...

  7. mooc_java 集合框架上 学生所选课程

    用一个集合Set存放学生所选课程接口不能实例化,所以用其实现类进行实例化 set接口不能实例化,通过HashSet这个实现类来进行实例化,需要导入包this.courses=new HashSet() ...

  8. [干货]兼容HTML5的Placeholder属性-更新版v0.10102013

    HTML5对Web Form做了许多增强,比如input新增的type类型.Form Validation等.Placeholder是HTML5新增的另一个属性,当input或者textarea设置了 ...

  9. 中文标准web字体

    标准的简体中文web字体: Windows OS X 黑体:SimHei 冬青黑体: Hiragino Sans GB [NEW FOR SNOW LEOPARD] 宋体:SimSun 华文细黑:ST ...

  10. 前端多媒体(1)——获取摄像头&麦克风

    捕获视频/音频 PPT地址 长久以来,音频/视频捕获都是网络开发中的"圣杯".多年来,我们总是依赖于浏览器插件(Flash 或 Silverlight)实现这一点. 依靠 WebR ...