盒子模型是css中一个重要的概念,是开发网页必须要用的布局方法。盒子模型有两种,分别是标准 w3c 盒子模型和 ie 盒子模型。

标准 w3c 盒子模型:包括 magin(外边距)、border(边框)、padding(内边距)、content(内容),并且 content 部分不包含其他部分。也就是说给该元素添加的任何padding,border,和magin属性都会占据空间。

在标准的盒子模型中,width 的值 = content 部分的宽度。增加内边距 padding 、边框 border 和外边距 margin 不会影响内容区域的尺寸,但是会增加元素占据的总尺寸,而盒子的实际大小受 padding 和 border 属性的影响,如果想把这个盒子变成原来的大小,只要把盒子原来设置的宽高减去 padding 和 border 的对应值就行。

ie 盒子模型:也包括 margin、border、padding、content,但其 content 部分包含了 border 和 padding。

在 ie 盒子模型中,width 的值 = content + padding + border 这三个部分的宽度。对于一个盒子设置了外边距 margin 后,看似没有影响,只是增加了这个盒子的真实占用宽高,没有影响盒子的实际大小。

例如:

  一个盒子的 margin 为 20px,border 为 1px,padding 为 10px,content 的宽为 200px、高为 50px

  如果用标准 w3c 盒子模型解释,那么这个盒子真实占有的宽度为:20*2 + 1*2 + 10*2 + 200 = 262px,盒子的实际大小为:宽 1*2 + 10*2 + 200 = 222px

  若用 ie 盒子模型,那么这个盒子真实占有的宽度为:20*2 + 200 = 240px,盒子的实际大小为:200px

  那我们应该选择哪中盒子模型呢?当然“标准 w3c 盒子模型”了。怎样才算是选择了“标准 w3c 盒子模型”呢?很简单,就是在网页的顶部加上 doctype 声明。当我们写了 <!Doctype html> 声明的时候,无论在哪种内核的浏览器下盒子模型都会被解析为标准盒模型。假如不加 doctype 声明,那么各个浏览器会根据自己的行为去理解网页,即部分有IE内核的浏览器则会触发 ie 盒子模型,而 ff 会采用标准 w3c 盒子模型解释你的盒子,所以网页在不同的浏览器中就显示的不一样了。

  如果想要切换盒模型也很简单,这就需要用到css3的 box-sizing 属性,给想要变成IE盒子模型的元素添加 box-sizing:border-box,这样我们再给元素添加 padding 及 border 属性时,元素就会在我们设定的宽度和高度内自动调节,而不会再向外扩张。

语法:

  box-sizing: content-box | border-box | inherit;

  content-box:默认值,在指定的宽度和高度之外绘制元素的内边距和边框,即 border 和 padding 不计入 width 之内,总宽度width = margin + border + padding + content;

  border-box:为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制,盒子的width 包含了 border 和 padding,即总宽度 width = margin + content,需要从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度,这使得我们更容易的去设定一个元素的宽高,也省去了一次又一次的加加减减。

  inherit:从父元素继承 box-sizing 属性的值。

CSS中的盒子模型与 box-sizing 属性的更多相关文章

  1. css中的盒子模型

    css中的盒子模型 css中的盒子模型,有两种,一种是“标准 W3C 盒子模型”,另外一种是IE盒子模型.   1.w3c盒子模型 从图中可以看出:w3c盒子模型的范围包括了:margin,borde ...

  2. CSS学习系列1 - CSS中的盒子模型 box model

    css中有一个盒子模型的概念. 主要是用来告诉浏览器如何来计算页面元素的宽度和高度, 比如该元素的宽度/高度 是否包括内边距,边框,外边距.  盒子模型有一个属性box-sizing属性来说明是否包括 ...

  3. css中的盒子模型是什么?

    什么是CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封装周 ...

  4. CSS中的盒子模型详解

    很多人对盒子模型搞晕头了,下面通过一个简单的代码来分析盒子模型的结构! 为了方便方便观看!在第一个div中画了一个表格,并将其尺寸设置成与div内容大小一样!且设置body的margin和paddin ...

  5. js中的盒子模型

    说到盒子模型,你第一时间会想到css盒子模型,css中的盒子模型包括(内容区+内边距+边框).那在js中怎么去获取这些属性值呢?下面一起来学习js中的盒子模型. css样式 body { margin ...

  6. 【CSS学习】--- 盒子模型

    一.前言:这篇只作为本人的笔记,以后慢慢再补充. 页面中的所有元素都可以被看作一个一个的“盒子”.这些盒子都包含了:内容(content).内边距(padding).边框(border)以及外边距(m ...

  7. CSS 盒子模型(Box model)中的 padding 与 margin

    本文将讲述 HTML 和 CSS 的关键—盒子模型 (Box model) .理解 Box model 的关键便是 margin 和 padding 属性,而正确理解这两个属性也是学习用 CSS 布局 ...

  8. CSS的盒子模型(Box Model)

    盒子模型(Box Model)是 CSS 的核心,现代 Web 布局设计简单说就是一堆盒子的排列与嵌套,掌握了盒子模型与它们的摆放控制,会发现再复杂的页面也不过如此. 然而,任何美好的事物都有缺憾,盒 ...

  9. 浅谈css中的盒模型(框模型)

    css中的盒模型是css的基础,盒模型的理解可以帮助我们进行对样式进行修改.废话不多说,进入正题: 在w3c中,CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边框.边框 和 外边 ...

随机推荐

  1. ES6 字符串

    拓展的方法 子串的识别 ES6 之前判断字符串是否包含子串,用 indexOf 方法,ES6 新增了子串的识别方法. includes():返回布尔值,判断是否找到参数字符串. startsWith( ...

  2. angular--获取时间方法services

    写了一些公用方法获取自然周.传入开始和结束日期,获取中间全部日期等方法 .service('DateServices', [function () { // 获取某年自然周的方法 (如果是当年,只返回 ...

  3. Win10部署IIS 10.0

    win10自带IIS10.0 控制面板 >> 程序 >>启用或关闭Windows功能 勾选完之后会安装IIS,安装完成后 计算机管理 >> 服务和应用程序 > ...

  4. 高性能Nginx服务器-反向代理

    Nginx Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供 ...

  5. Linux 两台服务器之间传输文件

    一.scp命令的使用 1.传输文件(不包括目录) 命令格式:scp 源文件路径目录/需要传输的文件 目标主机的用户名@目标主机IP/主机别名:目标主机存储目录 举个例子:scp /root/ceshi ...

  6. java框架之Struts2(4)-拦截器&标签库

    拦截器 概述 Interceptor (拦截器):起到拦截客户端对 Action 请求的作用. Filter:过滤器,过滤客户端向服务器发送的请求. Interceptor:拦截器,拦截的是客户端对 ...

  7. return ajax 把ajax链式操作 简易封装

    成功就是done,失败就是fail

  8. st2_057

    http://vulapps.evalbug.com/s_struts2_s2-057/ 这大概是全网复现st2-057环境最简单的操作了. 不过首先,你需要安装过docker,安装方法参考官方文档h ...

  9. nuxtjs中使用axios

    最近使用nuxtjs服务端渲染框架,在异步请求时遇到两个问题,一是怎么使用axios, 二是怎么在asyncData方法中使用axios 当使用脚手架create nuxt-app创建项目时,会提示是 ...

  10. 解决wine中文字体方块或乱码

    从Windows使用字体 如果有一个安装了Windows的分区, 可以通过链接它们来使用其字体. 例如, Windows的C:\盘被挂载在/windows: # ln -s /windows/Wind ...