前端校招知识体系之盒模型

盒模型

“HEY,麻烦你谈谈对盒模型的理解。” 嗯??想了下,这么简单的知识点我还真讲不出来...

下面咱会从以下几个方面谈谈盒模型:

  • 什么是盒模型?
  • 盒模型的两种标准
  • css如何设置这两种模型
  • js如何设置和获取盒模型对应的宽和高

一、什么是盒模型?

CSS处理网页时,它认为每个元素都包含在一 个不可见的盒子里,这样,我们对网页的布局就相 当于是摆放盒子。

一个盒子我们会分为content、padding、border、margin四个部分,由里至外。

 二、盒模型的两种标准

一个是标准模型,一个是IE模型。

在标准模型中,盒模型的宽高只是内容(content)的宽高,

而在IE模型中,盒模型的宽高是内容(content)+填充(padding)+边框(border)的总宽高。

三、css如何设置这两种模型

border-sizing属性:content-box | border-box | inherit

content-box:标准模型

 border-box:IE模型

四、js如何设置和获取盒模型对应的宽和高

 

通过JS获取盒模型对应的宽和高,有以下几种方法:

为了方便书写,以下用dom来表示获取的HTML的节点。

1.  dom.style.width/height 

  这种方式只能取到dom元素内联样式所设置的宽高,也就是说如果该节点的样式是在style标签中或外联的CSS文件中设置的话,通过这种方法是获取不到dom的宽高的。

 2. dom.currentStyle.width/height 

  这种方式获取的是在页面渲染完成后的结果,就是说不管是哪种方式设置的样式,都能获取到。

  但这种方式只有IE浏览器支持。

 3. window.getComputedStyle(dom).width/height

  这种方式的原理和2是一样的,这个可以兼容更多的浏览器,通用性好一些。

 4. dom.getBoundingClientRect().width/height

  这种方式是根据元素在视窗中的绝对位置来获取宽高的

 5.dom.offsetWidth/offsetHeight

  这个就没什么好说的了,最常用的,也是兼容最好的。

posted @ 2019-09-26 15:11  KWskrrrr  阅读(106)  评论(0编辑  收藏  举报