由一次动态改变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 ...
随机推荐
- varnish代理缓存服务器的安装与使用
1. 下载解压 cd /usr/local/src/ wget https://codeload.github.com/varnishcache/varnish-cache/zip/master ch ...
- spring 配置bean-自己主动装配
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qilixiang012/article/details/28260477 概要:(蓝色为本节所讲) ...
- Data Structure Binary Tree: Level order traversal in spiral form
http://www.geeksforgeeks.org/level-order-traversal-in-spiral-form/ #include <iostream> #includ ...
- uboot 2013.01 代码简析(2)第一阶段初始化
uboot执行"make smdk2410_config"之后就可以进行编译了,可以执行make命令进行编译, 因为整个输出太长,我仅仅列出部分最关键的输出(部分我不关心的内容直接 ...
- 深入理解JVM - 垃圾收集器与内存分配策略 - 第三章
引用计数算法——判断对象是否存活的算法 很多教科书判断对象是否存活的算法是这样的:给对象添加一个引用计数器,每当一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象 ...
- python做简易记事本
以下内容参考<辛星tkinter教程第二版>: from tkinter import * from tkinter.filedialog import * from tkinter.me ...
- DenseNet算法详解——思路就是highway,DneseNet在训练时十分消耗内存
论文笔记:Densely Connected Convolutional Networks(DenseNet模型详解) 2017年09月28日 11:58:49 阅读数:1814 [ 转载自http: ...
- 分布式锁的实现方式——ACID数据库、缓存或者是zk
针对分布式锁的实现,目前比较常用的有以下几种方案: 基于数据库实现分布式锁 基于缓存(redis,memcached,tair)实现分布式锁 基于Zookeeper实现分布式锁 在分析这几种实现方案之 ...
- L89
His voice was hoarse after several hours' speech.Attributive adjectives precede the noun.I gave the ...
- leetcode 43. Multiply Strings(高精度乘法)
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...