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

我们先来看一个图

Content Edge => 是元素所在的内容区域,它有一个宽度和高度

Padding Edge => 内边距

Border Edge => 边框

Margin Edge => 外边距

所以,在css中,我们设置一个元素的width 和 height时(比如 width =300px, height =200px),如果你不说清楚,浏览器并不知道你说的这个宽度和高度是否包括内边距,边框等,还是说只是Content Edge中的内容宽度,内容高度.

我们上面说了,css中有一个盒子模型,通过设置box-sizing属性来告诉浏览器到底是上面的哪一种情况.这个属性有2个值 : content-box,  border-box

Content-box : 这个是默认值. 如果你设置一个元素的宽度为50px, 那么这个元素的内容区域,内容的宽度就是50px. 你把元素的宽度改为100px, 那么它的内容宽度就会变为100px

* {

   box-sizing: content-box;
}

Border-box: 如果你的box model设置为border-box, 那么就是告诉浏览器,你设置的元素的width,包括内容的宽度,内边距以及边框. 这三样的宽度都包括在你所设置的元素的width里面. 比如你设置一个元素的宽度为50px, 那么这个50px是包括该元素的padding和border的,这个元素的内容的实际宽度应该是50px减去border+padding的计算值. 普遍建议是web开发者应该将所有元素的box-sizing属性都设置为border-box, 这种情况下我们会更容易地去设定和更改一个元素的宽高.

 

* {

   box-sizing: border-box;
}

我们来看看下面的例子

div {
box-sizing: content-box;
width: 100px;
padding: 20px;
border: 1px solid #DDD;
}

上面这个例子中,盒子模型的box-sizing属性设置为content-box. 所以这个div元素里面的内容宽度为100px, 而div元素的宽度呢, 显然是 100px  + 20 px (padding-left) + 20px (padding-right) +1px (border-left) + 1px (border-right) = 142px;

如果我们通过javascript,把这个div的width属性值改为200px, 那么这个div的元素宽度将变为 200px  + 20 px (padding-left) + 20px (padding-right) +1px (border-left) + 1px (border-right) = 242px;

div {
box-sizing: border-box;
width: 100px;
padding: 20px;
border: 1px solid #DDD;
}

上面,我们把盒子模型的box-sizing属性改为border-box. 这个时候div属性的width还是100px,但是这个100px就不再是div元素的内容的宽度了,而是包括了padding(内边距) 和border(边框), 那么元素宽度是多少呢:

100px  - 20 px (padding-left) - 20px (padding-right) -1px (border-left) - 1px (border-right) = 58px;  此时,如果我们通过javascript,把这个div的width属性值改为200px, 那么这个div的元素宽度将变为 200px,而它里面的

内容宽度将变为200px  - 20 px (padding-left) - 20px (padding-right) -1px (border-left) - 1px (border-right) = 158px

CSS学习系列1 - CSS中的盒子模型 box model的更多相关文章

  1. HTML和CSS的盒子模型(Box model)

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

  2. 教你吃透CSS的盒子模型(Box Model)

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

  3. 盒子模型(Box Model)

    盒子模型(Box Model) ■ 盒子模型——概念 在网页设计中常用的属性名:内容(content),填充(padding),边框(border),边界(margin),CSS 盒子模式都具备这些属 ...

  4. CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  5. CSS学习系列2 -- CSS中的清除浮动

    CSS中有一个很常见的问题,就是元素的浮动. 那么,到底什么是元素的浮动呢,我们来看一个例子 举个例子,在一个div里面内部有浮动元素的话,这个浮动元素会让这个div的高度塌陷. .myDiv{ ba ...

  6. CSS学习系列4 -- 再说CSS中的浮动运用及clear:left/right实际用法

    在 CSS学习系列2 -- CSS中的清除浮动 中,我们详细说了CSS中清除浮动的方法及使用 后来我自己在项目开发一个需要使用浮动的网页时,进行了实际运用,加上后来看到一篇好文章.所以就在这里再次写篇 ...

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

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

  8. css盒模型(Box Model)

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

  9. css中的盒子模型

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

随机推荐

  1. Android系统篇之—-编写简单的驱动程序并且将其编译到内核源码中【转】

    本文转载自:大神 通过之前的一篇文章,我们了解了 Android中的Binder机制和远程服务调用 在这篇文章中主要介绍了Android中的应用在调用一些系统服务的时候的原理,那么接下来就继续来介绍一 ...

  2. STL头文件有哪些及简单介绍

    #include <iostream>标准输入输出cin cout等 #include <algorithm> 算法库 如sort find等 #include <vec ...

  3. Java -- Swing 组件使用

    1. 示例1 public class Main { JFrame f = new JFrame(); Icon okIcon = new ImageIcon("/home/test/sta ...

  4. Function Pointers in C

    来源:https://cs.nyu.edu/courses/spring12/CSCI-GA.3033-014/Assignment1/function_pointers.html Function ...

  5. MySQL常用方法

    1.INSTR,例:INSTR(content,'\"SHOP_DES\"')>0,返回字符串在某一个字段的内容中第一次出现位置,没有为0 2.REPLACE,例:conte ...

  6. 机器学习(十九)— xgboost初试kaggle

     1.官网下载kaggle数据集Homesite Competition数据集,文件结构大致如下: 2.代码实战 #Parameter grid search with xgboost #featur ...

  7. PHP使用http_build_query()构造URL字符串的方法

    http_build_query http_build_query -- 生成 url-encoded 之后的请求字符串描述string http_build_query ( array formda ...

  8. java--Hibernate添加数据save

    添加按钮跳转到add表单页面 <a href="${pageContext.request.contextPath }/department_saveUI.action"&g ...

  9. Agc004_C AND Grid

    传送门 题目大意 给定一个$N\times M\space(N,M\leq 500)$的网格,有一些格子是紫色,保证边界没有颜色. 构造两个$N\times M$的网格$A,B$,在$A$中染红色在$ ...

  10. 20179215《Linux内核原理与分析》第一周作业

    一.Linux介绍 我们现在很常见Windows系统,对于Linux则显得尤为陌生.当然我也不例外,初识Linux过程中遇到一些困惑,但我也在实验的同时通过不断查找资料与实践中慢慢解决问题.那么下面我 ...