`
rapheal
  • 浏览: 169929 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

盒子的世界

阅读更多

前言

之前说过了,浏览器拿到了HTML,CSS等资源文件之后就要展示给电脑前的用户看,关于展示的细节,我暂时讲不了也不想讲,本篇想提到一个很重要很重要很重要的概念!就是盒模型,不用蒙了,其实也就那么一回事。

 

盒子是啥

相信是个人都知道盒子长什么样子:四四方方,有个外壳,里边可以装物品,大盒子还可以放小盒子。

这个是俗到不能再俗的解释了。

目前我们假设活在一个2D的世界,有一堆打开盖子的盒子平整地放在地板上,我们飞起来,从空中俯视这一堆盒子,想必大家都能想象这个场景了(想象不到的话只能怪你想象力不好了,那就在家里摆一堆盒子,把自己悬挂在空中去研究吧)。

针对眼前的这一幕,我们稍微来分析一下眼前那个盒子的外观跟大概解释一下盒模型的属性:

 

border (边框):你也许会说盒子又不是相框,边框对于盒子来说是什么东西?先想想我们从空中俯视的时候,你看到的盒子是什么样的呢?是不是就是一个相框的样子呢,盒子的外壳的厚度也就是这里的边框的厚度了。

padding (内边距):padding的英文解释是“填料”,其实对于盒子来说,填料是什么呢?好吧,我又要啰嗦一下了,我在淘宝上买了一个玻璃杯,卖家帮我装进一个大盒子里边,如果他直接拿到物流公司将盒子寄给我,你可以想象一下在经过长途汽车的颠簸,以及快递员们的蹂躏,这个杯子能完整的到你手中不!?为了避免心爱的杯子变成碎片,店家肯定会在杯子装到盒子之后,在杯子旁边塞一些“填料”。在盒模型的概念,这里的填料就是内边距padding。

width (宽度):那盒子的宽度怎么算呢,可能很多人认为应该把上面的边框也算到盒子的宽度进去,这就是很久很久之前的IE所做的事。其实对于浏览器的世界,你真正要放在盒子的东西是应该放到盒子里边去的,而不应该卡在边框上吧。举个例子吧,你告诉我:“我有一个50厘米宽的盒子,你可以放东西进去。”好吧,我就拿一个50厘米宽的尺子放到你那个盒子进去。咦!?卡住了?所以你会发现,对于什么都不懂的计算机来说,如果这样子反而不合适,因此,我们把在边框里边的内容看做是真正的Client区域!刚刚不是讲过padding吗,那这些填料算不算到宽度进去的呢?我只能说,跟前面解释边框算不算到宽度里边去一个道理,我们关心的是真正能够放东西的区域的宽度。所以盒模型的宽度就定义成真正用来装目标物体的区域的宽度。

height (高度):跟width雷同,请将上述内容的“宽”换成“高”重新阅读一次~

margin (外边距):介绍了前面几个属性之后,会发现,盒子的属性大致都已经被我们描述了,为什么又有属性了?这个margin属性不能简单的从一个盒子来看,当我们在空中俯视这一对盒子的时候,你会发现相邻的两个盒子都会有点距离,如果它们紧紧挨着,那就认为margin就是0呗,对于整个地板的布局来说,margin可以用来描述相邻盒子间的距离。

 

至此,盒子有了上边的这些属性,我们就能够把这个放着N个盒子的地板场景转化成一幅俯视图绘制在我们的浏览器上了,为了更加清晰的了解,我引用了w3c上解释盒模型的一张图(图片来自http://www.w3.org/TR/CSS2/box.html ):

w3c盒模型示意图

图1 w3c解释盒模型示意图

 

其实对于盒模型来说,内边距、外边距与边框是有分上下左右四个方向的,也就是你可以把盒子的左边框加厚一点,这个应该不难理解(示意图中采用了T,B,L,R缩写,分别代表上下左右)。

当然了,还可以描述盒子边框的厚度,盒子里边的贴纸背景等等,这些不影响整个盒子的模型概念,暂时忽略。

 

盒子的世界

在WEB应用里边,我们的世界就是我们的浏览器了。

根据前面的比喻,在这里把浏览器看做是地板,在页面上的元素 都是一个一个盒子,经过前端工程师/重构师的摆放,一个网页就呈现在浏览器上了。

不对不对,我经常看到一些很不规则的图像也显示在浏览器里边啊,盒子四四方方的,为什么说页面上全部元素都是盒子呢?

先想一下,如果对于浏览器来说,仅仅处理四四方方的东西,它会方便多少!?尽量让一件事情变得简单容易处理,过多的负担会导致整个性能下降N倍。

那怎么处理那种不规则的形状呢?其实我们可以利用一些不规则的图片贴着盒子上来模拟,不也是一样道理吗。

其实浏览器不仅仅限定元素是盒子模型的,然后也限定了这些盒子要水平摆放的,不能够斜着放。

也许我们会感觉到,在这个盒子的世界里边,乱七八糟的规矩还真多。或许在WEB未来的发展,我们能够找到更加好的方法或者新的模型来解决这些限制,那就从现在开始努力吧!站着巨人肩膀上行动。

 

本篇总结

本篇说到的CSS盒模型的概念对于前端工程师/重构师来说,是很基础也是非常重要的概念。务必,不对,应该是必须 记住这个盒模型概念,并且了解不同的浏览器对它的解析有什么不同之处,这对于一个可用性强的WEB应用来说是非常重要的,谁都不会想让用户在互联网的那头骂娘。

 

 

0
2
分享到:
评论

相关推荐

    在盒子世界生活作文.doc

    在盒子世界生活作文.doc

    坦克世界盒子怎么用.docx

    坦克世界盒子怎么用.docx

    多玩坦克世界盒子怎么安装.docx

    多玩坦克世界盒子怎么安装.docx

    修改MAC,网易盒子连锁BAN专用

    MAC的修改,我的世界盒子连锁ban专用,网易我的世界盒子进入时1MIN左右会被连续BAN掉的时候就使用这个东西来改你的MAC具体的原因:https://www.baidu.com/

    HTML5 3D Google搜索 小盒子 大世界

    HTML5真是能让人想象万千,居然动起了Google搜索的主意,它利用HTML5技术将Google搜索放到了一个小盒子里,弄起了3D搜索。随着鼠标移动,HTML5 3D搜索盒子也就转动,非常立体。点击搜索按钮,即可打开盒子进行Google...

    The-Box-World:一个充满彩色盒子的无尽空隙

    盒子世界一个简单的休息室,供朋友闲逛,在灰色的背景中,您可以像一个色彩缤纷的盒子一样玩耍。 该项目仅用于教育目的。 有什么想法或建议吗? 查看讨论页面。一瞥这是全栈JavaScript Web应用程序。 后端-两台node....

    使用HTML开发商业网站-盒子模型及相关属性课件.pptx

    认识盒子模型; 认识盒子模型;认识盒子模型;盒子模型相关属性; 盒子模型相关属性;盒子模型相关属性;盒子模型相关属性;盒子模型相关属性;盒子模型相关属性; 盒子模型相关属性;盒子模型相关属性;盒子模型相关属性;盒子...

    HTML5&CSS3网页制作:盒子模型概述.pptx

    盒子模型概述;认识盒子模型;认识盒子模型;认识盒子模型;认识盒子模型;div标记;div标记;div标记;div标记;盒子的大小;盒子的大小;盒子的大小;总结;;THANKS

    泡泡玛特-9992.HK-小盒子里的“大世界”.zip

    泡泡玛特-9992.HK-小盒子里的“大世界”

    世界盒子小游戏素材大全

    一个只要0积分大全小游戏素材,python/C++/C/scratch等等等等的编程语言都可以使用,妈妈再也不怕我找不着合适的游戏素材啦。 沙盒等游戏的通用素材,包括地形、建筑、植物、国家标志、工具、武器等,游戏素材均为...

    Box-World:通过“关系深度强化学习”论文实现Box-World环境

    盒子世界介绍从“关系深层强化学习”( )论文在Box-World环境中的Gym实施中,明确地将关系推理作为目标。 示例游戏1 示例游戏2 示例游戏3 这是一个感知上简单但组合复杂的环境,需要抽象的关系推理和计划。 它由一...

    DIRECT3D 天空盒和实现观察和世界矩阵

    自己写的,进阶中,愿对同路之人有用,望高手不惜赐教! D3D DIRECT3D 天空盒 全视角观察 全方位运动 6自由度 世界矩阵 观察矩阵

    CSS3样式表-框模型(盒子模型).pptx

    单元二 CSS3样式表端基础前Web单元2-6 框模型(盒子模型)13内边距框模型概述42边框外边距文档结构与标准文档流span为inline元素,若干个inline元素是水平排列的body,ul,li为block元素,它们独占一整行,兄弟之间...

    坦克世界灯泡不亮(车长直觉)不管用

    坦克世界的技能灯泡不亮,车长直觉满了,但是不能用,去除上面的广告就好了,把此文件件放置在C:\Games\World_of_Tanks\res_mods\0.8.3\gui中,前面为坦克世界的安装目录

    Unity3D绘制物体外框线条盒子

    本资源实现使用线段绘制物体的内框和外框长方体盒子,...外框:选中物体后,绘制物体的外框(紧贴物体、并与世界坐标系的朝向一致的外框盒子) 博客见:https://blog.csdn.net/m0_37602827/article/details/128681398

    使用HTML开发商业网站-CSS盒子模型新增关属性课件.pptx

    盒子模型新增属性;;盒子模型新增属性;盒子模型新增属性;盒子模型新增属性;盒子模型新增属性;盒子模型新增属性;盒子模型新增属性;盒子模型新增属性;盒子模型新增属性; 盒子模型新增属性;盒子模型新增属性;盒子模型...

    影音盒子(MediaBox)v1.0.0.348官方中文多语安装版

    影音盒子(MediaBox)是由hensence网站推出的一款强大而神奇的影音搜索下载保存工具,影音盒子MediaBox能够播放下载世界上几乎所有影音资源,拥有强大的网络协议分析能力和DirectShow检测能力,可以收集电脑当前状态下...

    UGEGE游戏盒子 (集成数百款精品小游戏)

    GEGE游戏盒子是集合了UGEGE精品小游戏,UGEGE积分小游戏,UGEGE网页游戏等多种游戏模式为一体的游戏客户端,让您可以享受丰富多彩的游戏世界。 最多最全的FLASH小游戏在线玩… 登陆后玩游戏即可得积分,赢奖品… ...

    worldbox:用 C++ 编写并使用 JavaScript 编写脚本的游戏引擎

    世界盒子WorldBox 是一个使用 JavaScript 的以实体为中心的游戏引擎。 这意味着什么? 这意味着您定义实体以及它们如何交互,WorldBox 为您完成繁重的工作——物理、游戏循环、与外部世界的交互。 您使用 JavaScript...

    盒子

    盒子

Global site tag (gtag.js) - Google Analytics