浏览器工作原理——step4 排版(整理)

step2和step3已经构建了DOM,计算了CSS属性,即给页面的DOM原则添加了用于展现的CSS属性,接下来就要继续流式地确定每个元素的位置。

浏览器最近的排版方案是正常流排版,包含了顺次排布和折行等规则。

在正常流的基础上,浏览器还支持两类元素:绝对定位元素和浮动元素。
绝对定位将自己从正常流抽出,直接由top和left等熟悉确定自身的位置,不参加排版计算也不影响其他元素。position
浮动元素使自己在正常流的位置向左或向右移动到边界,并占据一块排版空间。float
除了正常流,浏览器还支持其他排版方式,如现在非常常用的flex排版。display

浏览器的排版遵循工人的文字排版规范,文字排版规定了行模型和文字在行模型中的排布。行模型规定了行顶,行底,文字区域,基线等对齐方式。

浏览器支持元素和文字的混排,元素被定义为占据长方形的区域,还允许有边框、边距,这就是盒模型
由于不同语言的书写顺序不一致,浏览器的文本排版还支持双向文字系统。

1. 正常流文字排版

正常流是唯一一个文字和盒混排的排版方式。
书写文字时,中文的上、下、中轴线都对齐,英文的不同字母高度不同,但有一条基线对齐。
文字依次书写的延伸方向称为主轴方向(或主方向),换行延伸的方向 称为交叉轴(交叉方向)。
advance代表每个文字排布后,在主轴上的前进距离,这个值跟文字的 宽/高 不相等,是字体中最重要的属性。
除了字体提供的字形本身包含的信息,文字排版还受一些CSS属性的影响,如line-height、letter-spacing、word-spacing。
在正常流的文字排版中,多数元素被当做盒来排版,只有display为inline的元素是被拆成文本来排版的。display值为inline的元素中的文字,排版时会被直接排入文字流中,inline元素主轴方向的margin 属性和border属性也会被计算进排版前进距离当中。

2. 正常流中的盒

正常流中,display不为inline的元素或伪元素,会以盒的形式和文字一起排版。
多数display属性可以分成两部分,内部的排版和是否inline,带有inline-前缀的盒 被称作内级盒。
盒模型在主轴方向占据的空间由对应方向的几个属性之和决定的:margin、border、padding、width/height, 盒在交叉轴方向的位置由vertical-align决定,vertical-align也会影响实际行高。

浏览器对行的排版,一般是先行内布局,再确定行的位置,根据行的位置计算出行内盒和文字的排版位置。
块级盒 总是单独占据一整行,计算出交叉轴方向的高度即可。

3. 绝对定位元素

position为absoute的元素,从父级元素开始逐层找到position不是static的元素即可,根据此元素设置元素的位置

4. 浮动元素排版

浏览器对float元素的处理是先排入正常流,再移动到主轴的最前/最后。
移动之后,float元素占据了一块排版空间,在数行之内 主轴方向的排版距离发生了变化,知道交叉轴方向的持续你超过了浮动元素的交叉轴尺寸范围,主轴排版的尺寸才会恢复。
float元素排布完成后。float元素所在的行需要重新确定位置。

5. 其他的排版

css的每一种排版都有一个复杂的规定,实际的实现形式也各不相同。如flex排版,支持了flex属性,flex属性将每一行排版后的剩余空间平均分配给主轴方向的width/height属性。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • 1 浏览器的工作原理 1.2.5.3 浏览器解析与计算CSS  接第⑤章节生成DOM树的过程,如果语法分析器在解析...
    RingoD阅读 282评论 0 1
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,595评论 0 6
  • 所有题目答案整理自网络,如有错误,接受指正,拒绝批评! 关于html5 HTML5的十大新特性 语义化标签使得页面...
    黄金原野阅读 1,464评论 0 0
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,314评论 0 11
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,501评论 0 26