果冻公开课第五课:五分钟理清盒模型的前世今生

在前端程序员眼中,页面其实可以被视为一个个盒子组成的

那么,这些盒子是如何构建起整个页面的呢?

动画视频:

如何理解盒子模型

文字解析:

在上一节里面

我们知道了文档流和网页中的DOM都可以看作是盒子

而无论是文档流还是网页状态,要把一些元素比如H1 H2 H3放到另外一个元素中

都需要他们属于这个元素的子节点,这个元素则是H1 H2 H3的父节点

这个父节点,它就像是一个打包盒,把它的子级元素打包到一起,然后作为一个整体来进行布局

这个打包盒我们通常会用哪个元素呢?

答案是DIV

虽然从理论上来讲大多数html元素都可以担任打包盒这个职责

但在不考虑语义的情况下,通常都会使用DIV

不过随着html的发展,大家逐渐觉得只有DIV还不够:

无法区分更多的语义

因此创造出了各种专有的打包盒:

如section article hgroup等等

由此我们可以知道DIV是盒子,而其他的元素也都是盒子

如果想要将盒子在一个二维的页面中陈列开

除了它们自身出现的顺序以外,还由5个基本属性来调节它们的位置和大小

这5个属性分别是:

宽 高 内边距 边框和外边距

宽和高 决定了盒子内部空间有多大

盒子装的内容都是放在这个区域当中

边框 就是盒子本身

可以修改盒子的厚度 材料以及颜色

内边距和外边距好比是给盒子内外添加的透明抗震材料

改变内边距可以改变内容与盒子之间的距离

改变外边距则可以改变盒子之间的距离,通过这些基本属性改变盒子的⼤小会影响到布局

⽽盒⼦⼤小的计算模型有两种

标准盒⼦模型和IE盒⼦模型

通过改变CSS属性box-sizing的值来改变

第⼀种标准盒⼦模型

box-sizing为content-box

这种行为模式下,盒⼦子的宽和⾼只决定元素的content内容部分

内边距padding和边框border是在content外部另外绘制

也就是说

width = content

第⼆种IE盒⼦模型

box-sizing为border-box

这种⾏为模式下,为盒⼦设定的宽和⾼决定了元素的边框border⼤小,

那么盒⼦的内边距padding和边框border都将在已设定好的宽⾼内绘制

也就是说

width = content + padding + border

因此如果为两个盒子设置同样的css属性

不同的盒模型将会占据不同的⻚面宽度

标准盒⼦模型下的盒⼦会这样计算:

width = content = 300px

然后再额外计算padding和border的值

因此盒⼦实际占据了了500px

IE盒⼦模型下的盒子则会这样计算

width = content + padding + border = content + 50px * 2 + 50px * 2 = 300px

不用额外计算padding和border的值

width 设置是多少,盒子就实际占据多少

不过通过减量计算得到盒子的content部分就只剩下100px了

在实际的开发中

为了在横向方向上尽量不出现滚动条

通常会希望盒⼦实际占据的宽度不超过⻚面宽度

标准盒⼦模型的解决⽅案是通过数学计算

设置宽度时需要⽤希望的宽度减去内边距和边框宽度

但这样开发起来实在太过复杂

幸好我们有IE盒子模型

内边距和边框不会再增加盒⼦宽度

有的开发者甚⾄会这样设置他们的CSS代码

以保证所有盒⼦的计算都统一而且简单直观

怎么样是不是很简单?

学会后赶紧上手写点代码练习一下吧。

————————————————

好了,今天的果冻公开课就先到这,咱们下期见啦~

★★★★★

这里是果冻公开课,一个用趣味的动画来分享IT知识的课堂

我们将原本复杂、不易理解的编程知识,转化为一个个有趣的动画短视频,为更多人提供生动有趣的IT内容/服务

无论是大咖还是小白,都可以快速学会并深度了解每一个知识点,让IT,Q弹可口。

更多内容,欢迎加大师姐微信it_xzy,入群717415872了解课程动态、幕后花絮,还有机会参与到课程制作,成为联合制作人

记得备注来自果冻课堂哟

盒子模型代码_果冻公开课第五课:五分钟理清盒模型的前世今生相关推荐

  1. 网页设计图片向上浮动_果冻公开课第六课:5分钟理解浮动布局

    浮动,是如何实现页面布局的呢? 它有哪些特质和使用方法? 今天,我们就用5分钟的动画短视频来深入浅出地理解浮动~ 动画视频: 果冻公开课:如何理解浮动布局? 文字解析: 网页儿也能这么图文并茂吗? 假 ...

  2. 小学教师计算机课评课,信息技术公开课的评课

    信息技术公开课的评课 (即使没有听课的教师看本文也是有用的,能领会我的意思,并学到一点知识的.有几处是精彩之处,值得大家细看.) 用◎表示一点. 宏观指与本节无关的内容,如个人素质,总体印象,对课程理 ...

  3. python数据结构算法 北京大学_北京大学公开课《数据结构与算法Python版》

    之前我分享过一个数据结构与算法的课程,很多小伙伴私信我问有没有Python版. 看了一些公开课后,今天特向大家推荐北京大学的这门课程:<数据结构与算法Python版>. 课程概述 很多同学 ...

  4. 代码随想录算法公开课!

    关注代码随想录的录友,基本都是跟着代码随想录一起刷题的. 目前代码随想录的内容是完全开放在代码随想录网站,Github,和Gitee上,同时也出版了<代码随想录>纸质版. 这套刷题顺序和题 ...

  5. 光子浏览器_光子学公开课第十四期 明日开课 | 上海大学金翊教授:三值光学计算机...

    导引 三值光学处理器用无光态和偏振方向正交的两个线偏振光态表达信息,用旋光器和偏振片制作光学运算器,沿用现有的计算机外设和存储芯片.依据降值设计理论构造出的三值逻辑光学处理器能够根据用户的需要而改变硬 ...

  6. 北大AI公开课第七课--AI赋能 智赢未来by科大讯飞胡郁

    今天来打卡英语流利说第三天,希望自己可以坚持下去,说实话,一直以来我都挺喜欢英语的,然后从大一开始,也在网易公开课上听了很多世界名校的计算机专业课.金融.心理学方面的课,感觉对于语感的培养还是很不错的 ...

  7. unity 批量导入模型工具_零基础的Unity图形学笔记3:使用多模型UV与优化模型导出...

    前文所说,贴图多UV,直接命名对应贴图就可以. 模型的多套UV,则需要在3DMAX里编辑. 这篇文章主要解决两个问题: 如何正确使用多模型UV? 从3DMAX导出,到shader使用 如何优化模型导出 ...

  8. html 在盒子中字体垂直,第五章,css行内盒模型和文字样式

    一,盒模型 发现默认样式,会破坏布局,比如p标签的默认样式 p标签默认样式 从图片中我们可以看到我们并没有加margin值,可是左边依然有空隙出现,这就是p标签的默认样式,那我们怎么去掉一些会破坏我们 ...

  9. mf模型 svd++_算法小板报(六)——初探MF(矩阵分解)和FM模型

    一.简介 矩阵分解(Matrix Factorization,MF)是推荐系统中非常经典的一个算法,虽然现今工业界直接使用的较少,但其背后蕴含的编码降维思想,得以广泛应用于推荐领域之中.本文则主要来梳 ...

最新文章

  1. tensorflow安装教程
  2. 执行插件超过2分钟超时错误,如何办?
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)函数模板显式实参
  4. 递归函数中局部变量和全局变量
  5. wegame每次登陆都要滑动验证_Vue项目中实现用户登录及token验证
  6. 乌班图安装pycharm
  7. EFI下WIN8.1和Ubuntu的双系统安装
  8. 几个交换问题的咨询?
  9. VB 域名转换IP地址函数
  10. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 3.1 运用试错法
  11. 企业管理软件开发新模式:抛开旧思维,轻松做系统
  12. ThinkPHP学生社团管理系统
  13. 怎样培养数据分析的能力
  14. 【高等数学】弧微分、渐近线、曲率和曲率半径
  15. 2022/06/06 day07:Scanner类、Random类、ArrayList 类
  16. GCN-LSTM预测道路交通车辆速度 英文 Vehicle Speed Forecasting Based On GCN-LSTM Combined Model
  17. 1 数据分析业务指标
  18. 如何实现GridView分页功能?
  19. Android项目之仿360手机助手项目
  20. 小米手机适合用什么蓝牙耳机?适合小米手机的蓝牙耳机推荐

热门文章

  1. 通过传址交换两个字符
  2. 你需要的是持续的服务改进 1
  3. 那些年,翻过山,趟过河,挖了山丘,黑了河沟,终于还是遇到了——跨服务器查询...
  4. C#通用类库--数字转为人民币汉字大写表示
  5. Widows Live Writer
  6. 用户扫描二维码进入公众号后自动发送指定消息_wetool的封杀、企业微信的崛起,我们要怎么利用企业微信进行用户增长?...
  7. 不使用网线就无法将两台计算机连接成网络,不通过路由器将两台计算机连接到网络的方法不止一种-如何将两台计算机连接到局域网...
  8. html页面ajax提交数据,ajax请求提交form表单
  9. python中的doctest_Python测试框架doctest
  10. 怎样看mysql是不是支持SSL_mysql是如何支持ssl通信的?