[toc]
## 什么是盒模型
一个CSS盒模型由content、border、padding、margin组成,盒模型又分为标准模型和IE模型。
标准模型和IE模型区别就是就是计算盒子的宽度和高度的不同。
- 标准模型:标准模型的宽度和高度指的是content
![](https://box.kancloud.cn/9408209148c5be6063da6660651823b4_1164x732.png)
- IE模型:IE模型的宽度高度包括padding+border
![](https://box.kancloud.cn/56d6e8c74ffb96ca44b95a01a169e6b3_1140x728.png)
## CSS如何设置这两种模型?
CSS3提供了`box-sizing`属性,他有如下三个取值:
1. content-box,默认值,border和padding不计算入width之内
2. padding-box,padding计算入width内
3. border-box,border和padding计算入width之内
浏览器模型默认是标准模型,也就是`content-box`
## JS如何设置获取盒模型对应的宽和高?
- **dom.style.width/height**,这种方式只能获取元素的内联样式
- **dom.currentStyle.width/height**,获取即时运行的(渲染后的)元素样式,不管是用哪种方式定义的样式,但是这个属性只有IE支持
- **window.getComputedStyle(dom).width/height**,作用同`currentStyle`,但是兼容Firefox和Chrome,通用性更好
- **dom.getBoundingClientReact().width/height**,也能拿到元素渲染后的真实的宽高,这个API经常用来计算一个元素的绝对位置,这个位置是相对于视窗(Viewport)左上角左顶点,返回left、top、width、height。
*****
慕课网实战课程:[《前端跳槽面试必备技巧》](http://coding.imooc.com/learn/list/129.html)
- 说明
- CSS与HTML
- BFC的特性及其常见应用
- CSS深入理解之margin
- CSS深入理解之line-height
- CSS盒模型相关知识
- CSS知识总结
- HTML知识总结
- 三栏布局五种方式
- JavaScript内置对象
- 1.循环
- 2.数组方法对比
- 3.字符串实用常操纪要
- JavaScript核心
- var、let、const定义变量
- this 的指向问题详解
- 箭头函数
- ES6部分知识归纳
- ES6的Class
- Promise和Async/await
- 面向对象的概念及JS中的表现
- 创建对象的九种方式
- JS的继承
- 闭包总结
- 构造函数与作用域
- 原型与原型链
- 函数的四种调用模式
- apply、call、bind详解
- JavaScript应用
- 1.JavaScript实现深拷贝与浅拷贝
- 2.函数防抖与节流
- 3.无阻塞脚本加载技术
- DOM
- 如何写出高性能DOM?
- 事件探秘
- 事件委托
- 操作DOM常用API详解
- 重排和重绘
- 运行机制与V8
- 浏览器的线程和进程
- Vue.js
- Vue.js知识点总结
- Vue-Router知识点总结
- 父子组件之间通信的十种方式
- 优化首屏加载
- 关于Vuex
- 前端路由原理及实现
- 在Vue.js编写更好的v-for循环的6种技巧
- 12个Vue.js开发技巧和窍门
- 网络协议
- HTTP缓存机制
- UDP协议
- TCP协议
- HTTPS协议
- HTTPS的背景知识、协议的需求、设计的难点
- HTTPS与HTTP的区别
- 框架与架构
- MVC、MVP、MVVM
- Gulp与Webpack的区别
- Angular React 和 Vue的比较
- 虚拟DOM和实际的DOM有何不同?
- 架构问题
- 工程化
- npm link命令
- npm scripts 使用指南
- 前端工程简史
- 常见的构建工具及其对比
- Webpack基本配置与概念
- 设计模式
- 工厂设计模式
- 单例设计模式
- 适配器模式
- 装饰器模式