盒子模型是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. Linux内核态用户态相关知识 & 相互通信

    http://www.cnblogs.com/bakari/p/5520860.html 内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境. 系统调用是操作系统的最小功能 ...

  2. JAVA spring 常用包作用详解(转)

    转载地址:https://www.cnblogs.com/Tmc-Blog/p/6093162.html <project xmlns="http://maven.apache.org ...

  3. Linux命令:在线练习地址

    1.https://www.tutorialspoint.com/unix_terminal_online.php 2.https://www.tutorialspoint.com/index.htm ...

  4. java框架之SpringBoot(14)-任务

    使用 maven 创建 SpringBoot 项目,引入 Web 场景启动器. 异步任务 1.编写异步服务类,注册到 IoC 容器: package zze.springboot.task.servi ...

  5. 高并发架构系列:MQ消息队列的12点核心原理总结

    消息队列已经逐渐成为分布式应用场景.内部通信.以及秒杀等高并发业务场景的核心手段,它具有低耦合.可靠投递.广播.流量控制.最终一致性 等一系列功能. 无论是 RabbitMQ.RocketMQ.Act ...

  6. 使用 Weinre 调试移动网站

    在 PC 端,我们可以使用 Firebug 或者 Chrome 开发人员工具方便的调试网站或者 Web 应用.但是,当我们想在移动端调试站点或者应用的时候,这些工具就派不上用场了.因此,移动开发人员都 ...

  7. unittest改写传参方法

    Python主要讲究简洁简单使用,所以它不像junit一样支持参数化测试,需要改装一下也可以传参.直接上代码实例 import unittest class ParametrizedTestCase( ...

  8. kylin对接hive实现实时查询

     前提: 安装kylin之前,需要安装hadoop2.0.hbase.hive,并且对版本有要求,可以参照官网链接 http://kylin.apache.org/cn/docs/install/in ...

  9. [antd-design-pro] mock 数据(post,request不一致)Sorry, we need js to run correctly!

    Sorry, we need js to run correctly! 可能问题: mock数据 api  和  request  api 不一致 'POST /api/banners/left'   ...

  10. 虚拟机centos7配置本地yum源

    在虚拟机中要使用yum命令,就要先配置一下yum源,下面就分享一下这个过程: 1. 挂载iso到vmware,首先得确保CD/DVD连接到镜像.可以这样操作 2. 执行下面的命令 # mkdir /m ...