一、盒模型

一个web页面由许多html元素组成,而每一个html元素都可以表示为一个矩形的盒子,CSS盒模型正是描述这些矩形盒子的存在。

MDN的描述:

When laying out a document, the browser's rendering engine represents each element as a rectangular box according to the standard CSS basic box model. CSS determines the size, position, and properties (color, background, border size, etc.) of these boxes.

Every box is composed of four parts (or areas), defined by their respective edges: the content edge, padding edge, border edge, and margin edge.

CSS盒模型有四条边:外边距边、边框边、内填充边、内容边(Content edge、Padding edge、Border edge和Margin edge),四条边由内到外把它划分为四个区域:内容区域、内边距区域、边框区域、外边距区域(Content area、Padding area、Border area和Margin area)。

内容区域(content area )是包含元素真实内容的区域。

内边距区域(padding area) 延伸到包围padding的边框。如果content area设置了背景、颜色或者图片,这些样式将会延伸到padding上。

边框区域(border area )是包含边框的区域,扩展了内边距区域。

外边距区域(margin area)用空白区域扩展边框区域,以分开相邻的元素。

通过CSS属性(width、height、padding、border和margin)来控制它们的尺寸。

二、box-sizing(css3属性)

1.box-sizing的值

1 /*关键字 值*/

2 box-sizing: content-box;/*默认值*/3 box-sizing: border-box;4

5 /*全局 值*/

6 box-sizing: inherit;7 box-sizing: initial;8 box-sizing: unset;

2.box-sizing的作用

box-sizing的作用就是告诉浏览器,使用的盒模型是W3C盒模型,还是IE盒模型。

a.当 box-sizing 的值为 content-box(默认值) 时,其尺寸计算公式为:

width = content-width;

height = content-height;

b.当 box-sizing 的值为 border-box 时,其尺寸计算公式为:

width = content-width + padding-left + padding-right + border-left-width + border-right-width;

height = content-height + padding-top + padding-bottom + border-top-height + border-bottom-height;

无论取何值,盒子尺寸是一样的,改变的是盒子的容量(盒子内部的width和height的计算方式)。

补充:IE6、7为W3C盒模型。

3.对于box-sizing属性值的选择

在项目里,究竟该使用哪种盒模型?我也不知道啊

在MDN上有这样一句话:

Some experts recommend that web developers should consider routinely applying box-sizing: border-box to all elements.

一些专家甚至建议所有的Web开发者们将所有的元素的 box-sizing 都设为 border-box。

Twitter的开源框架Bootstrap3就全局设置了box-sizing: border-box,由此可见IE盒模型的是比较受欢迎的。

补充:

W3C在CSS3中,加入了 calc() 函数。

CSS函数calc()可以用在任何一个需要、, 、、、或的地方。有了calc(),你就可以通过计算来决定一个CSS属性的值了。

/*property: calc(expression)*/width: calc(100% - 80px);

使用 calc() 函数,我们可以在 content-box 里实现 border-box,相对的,在 border-box 里实现 content-box 也是可以的。

内容来源于网络如有侵权请私信删除

html5 box sizing,CSS 盒模型与box-sizing相关推荐

  1. CSS盒子模型(Box Model)

    什么是盒子模型 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用.CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距 ...

  2. css盒模型和元素绘制

    转自:http://www.mysjtu.com/page/M0/S438/438952.html 一.什么是css盒模型? W3C组织就建议把所有网页上的对象都放在一个盒(box)中,设计师可以通过 ...

  3. 深入理解CSS盒模型 - 程序猿的程 - 博客园

    深入理解CSS盒模型 本文是学习中传思客在慕课网开的课程<前端跳槽面试必备技巧>的学习笔记.课程地址:https://coding.imooc.com/class/evaluation/1 ...

  4. CSS 盒模型与box-sizing

    一.盒模型 一个web页面由许多html元素组成,而每一个html元素都可以表示为一个矩形的盒子,CSS盒模型正是描述这些矩形盒子的存在. MDN的描述: When laying out a docu ...

  5. html盒子模型子元素怎么水平占满父元素_前端面试常考问题之css盒模型

    一.题目:谈一谈你对CSS盒模型的认识 专业的面试,一定会问 CSS 盒模型.对于这个题目,我们要回答一下几个方面: (1)基本概念:content.padding.margin. (2)标准盒模型. ...

  6. Css盒模型有哪几部分,标准盒模型和IE盒模型有哪些区别

    首先介绍Css的盒模型也就是标准盒模型(BOX Model) 包含了 内容(content) 内边距(padding) 边框(border) 外边框(margin) 这是大家经常用到的,也是现在的标准 ...

  7. 从零开始学前端 - 7. CSS盒模型 margin和padding详解

    作者: 她不美却常驻我心 博客地址: https://blog.csdn.net/qq_39506551 微信公众号:老王的前端分享 每篇文章纯属个人经验观点,如有错误疏漏欢迎指正.转载请附带作者信息 ...

  8. 尖刀出鞘的display常用属性及css盒模型深入研究

    一:diplay:inline-block 含义:指元素创建了一个行级的块级元素,该元素内部(内容)被格式化成一个块级元素,同时元素本身则被格式化成一个行内元素.更简单的说就是说inline-bloc ...

  9. CSS盒模型(详解)

    目录 前言 一.什么是CSS盒模型 二.标准模型+IE模型的区别 1.CSS如何设置两种盒模型 2.JS如何设置/获取盒模型对应宽高: 前言 什么是css,css有几种,让我带你来了解一下 一.什么是 ...

最新文章

  1. Jquery源码中的Javascript基础知识(四)— jQuery.fn.init方法
  2. javascript——原型与原型链
  3. 六、利用frp穿透连接内网的linx系统和windows系统
  4. Android模块化之MicroModule(微信Pins工程)
  5. python数字图像处理(4):图像数据类型及颜色空间转换
  6. html 数据库 编写学生表,【数据库】用sql语句创建学生表如何做
  7. OSPF综合实验(三)
  8. html+css基础教程入门篇之css选择器详细解读
  9. 这些和编程有关的日本动漫,你都看过那几部?
  10. Docker commit 联系
  11. 中国石油大学《化工设计概论》第一阶段在线作业
  12. 中山大学曾兆阳_实习派 | 曾兆阳: “宝藏男孩”的进阶之路
  13. 计算机网络原理与技术
  14. 用淘汰的手机做家庭监控
  15. 计算机组成原理实验一---运算器 预习报告
  16. 还是傻傻分不清云计算和大数据?看这篇就够了
  17. 期货反向跟单—探讨个问题
  18. Math类的常用方法,进一法,退一法,四舍五入法,绝对值,随机数 ,平方根 xy的次方
  19. 深度学习实战(1):花的分类任务|附数据集与源码
  20. 斋藤康毅-深度学习入门 学习笔记三

热门文章

  1. python xml实例_python解析xml文档实例
  2. python找不到模块文件夹_python – __init__.py在同一目录中找不到模块
  3. linux系统6.5详解,linux6.5下 简单配置 MINI 系统实现详解(1)
  4. mysql可以存储整数数值的是_MySQL知识树 数值类型 整数
  5. 期待鸿蒙是什么意思,如何看待华为将于 6月2 日举办鸿蒙发布会?你对此有哪些期待?...
  6. 路由器配置——广播多路访问链路上的OSPF
  7. js与C#服务端 json数据交互
  8. 分享一些自己的学习过程和学习方法
  9. 关于Python对齐问题
  10. Nodejs之view中的视图模板之——EJS模板语言,快速入门