盒模型

wlxhappiness 2019-01-07 原文

盒模型

盒模型

页面就是由一个个盒模型堆砌起来的,每个HTML元素都可以叫做盒模型,盒模型由外而内包括:边距(margin)、边框(border)、填充(padding)、内容(content)。

浏览器选择哪个盒模型,主要看浏览器处于标准模式(Standards Mode)还是怪异模式(Quirks Mode)。我们都记得<!DOCTYPE>声明吧,这是告诉浏览器选择哪个版本的HTML,<!DOCTYPE>后面一般有DTD的声明,如果有DTD的声明,浏览器就是处于标准模式;如果没有DTD声明或者HTML4一下的DTD声明,那浏览器按照自己的方式解析代码,处于怪异模式。
处于标准模式的浏览器(IE浏览器版本必须是6或者6以上),会选择W3C盒模型解析代码;处于怪异模式的浏览器,则会按照自己的方式去解析代码,IE6以下则会是选择IE盒模型,其他现代的浏览器都是采用W3C盒模型。

  • 基本概念:标准模型和IE模型
  • css如何设置这两种模型
  • JS如何获取盒模型对应的宽和高
  • BFC(边距重叠解决方案)

1 标准模型(W3C盒子模型)

宽度:内容(content)的宽度

2 IE模型

宽度:内容(content)+填充(padding)+边框(border)的总宽度

3 css如何设置这两种模型

这里用到了css3的box-sizing属性

```css
/* 标准模型 */
box-sizing:content-box;
/* IE模型 */
box-sizing:border-box;
```

4 JS如何获取盒模型对应的宽高
dom(表示获取到的html节点元素)

  • dom.style.width/height 获取内联样式的宽高
  • dom.currentStyle.width/height 获取页面渲染完成后的结果(仅支持IE)
  • window.getComputedStyle(dom).width/height 同上,但通用性好一些
  • dom.getBoundingClientRect().width/height 根据元素在视窗中的绝对位置来获取宽高
  • dom.offsetWidth/offsetHeight(content+padding+boe=rder) 最常用的
    5 边距重叠
    两个上下方向相邻的元素框垂直相遇时,外边距会合并,合并后的外边距的高度等于两个发生合并的外边距中较高的那个边距值(只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并)。
    6 边距重叠解决方案(BFC Block Formatting Context 块级格式化上下文 )

BFC原理

  • 内部的box会在垂直方向,一个接一个的放置
  • 每个元素的margin box的左边,与包含块border box的左边相接触(对于从做往右的格式化,否则相反)
  • box垂直方向的距离由margin决定,属于同一个bfc的两个相邻box的margin会发生重叠
  • bfc的区域不会与浮动区域的box重叠
  • bfc是一个页面上的独立的容器,外面的元素不会影响bfc里的元素,反过来,里面的也不会影响外面的
  • 计算bfc高度的时候,浮动元素也会参与计算

怎么取创建bfc

  • float属性不为none(脱离文档流)
  • position为absolute或fixed
  • display为inline-block,table-cell,table-caption,flex,inine-flex
  • overflow不为visible
  • 根元素

    应用场景

  • 自适应两栏布局
  • 清除内部浮动
  • 防止垂直margin重叠

    参考博客

    深入理解盒模型

发表于 2019-01-07 13:23 wlxhappiness 阅读() 评论() 编辑 收藏

 

版权声明:本文为wlxhappiness原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wlxhappiness/p/10232722.html

盒模型的更多相关文章

  1. 盒模型

    所谓的盒模型说白了就是content(实际内容)、border(边框)、padding(内边距)和margin […]...

  2. css盒模型以及如何计算盒子的宽度

    每个存在于可访问性树中的元素都会被浏览器绘制成一个盒子。 每个盒子都可以看成由4部分组成,它们分别是 — ** […]...

  3. 盒模型 | CSS权重 | CSS层叠

    span{ color:red;} *{ font-family:”楷体”;line- […]...

  4. CSS基础知识01

    一、CSS基础知识介绍 1.css是cascading style sheet层叠式样式表的简写 2.css小 […]...

  5. 盒模型

    盒模型 每一个元素都会创建一个盒子,盒模型让我们更好理解和划分区域分布。盒模型由四部分组成。margin,bo […]...

随机推荐

  1. iOS开发之App上架流程(2017)

    来必力大佬...

  2. Python爬虫案例:爬取微信公众号文章

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 文章转载 […]...

  3. mitmproxy使用详解

    mitmproxy 相比Charles、fiddler的优点在于,它可以命令行方式或脚本的方式进行mock m […]...

  4. Github Pages 使用国内 CDN 加速

    本文以阿里云CDN + Github Pages/Coding Pages为例 腾讯云CDN + Github […]...

  5. 交换机主要参数详解

      我们购买交接机就是要求这款交换机做到线性无阻塞传输。我们如何去考察一个交换机的背板带宽是否够用呢?如何去确 […]...

  6. SpringBoot系列——Spring-Data-JPA(究极进化版) 自动生成单表基础增、删、改、查接口

      前言   我们在之前的实现了springboot与data-jpa的增、删、改、查简单使用(请戳:Spri […]...

  7. Centos 7.0 zabbix 部署

    1、LAMP 环境搭建 初次安装可以先关闭selinux 和 firewall [root@localhost […]...

  8. tomcat控制台启动成功但是却访问不了主页

    从杭州来京出差,也许是因为春节将至,也或许是由于携带的一点点小情绪致使自己丧失了理智,So 那就开始吧R […]...

展开目录

目录导航