重学前端 14 # 浏览器工作解析(四)

简介: 重学前端 14 # 浏览器工作解析(四)

一、概括


本文主要聊聊浏览器是怎样确定每一个元素的位置的



二、基本概念


2.1、排版

浏览器把排版的内容(文字、图片、图形、表格等等)确定它们位置的过程,叫作排版。浏览器最基本的排版方案是正常流排版


2.2、盒模型

浏览器又可以支持元素和文字的混排(元素被定义为占据长方形的区域),还允许边框、边距和留白,这个就是所谓的盒模型


2.2.1、绝对定位元素

绝对定位元素把自身从正常流抽出,直接由 topleft 等属性确定自身的位置,不参加排版计算,也不影响其它元素。完全跟正常流无关的一种独立排版模式。


2.2.2、浮动元素

浮动元素则是使得自己在正常流的位置向左或者向右移动到边界,并且占据一块排版空间。 float 元素非常特别,浏览器对 float 的处理是先排入正常流,再移动到排版宽度的最左 / 最右(主轴的最前和最后)。




三、正常流文字排版


3.1、字体解析库(freetype)


来自freetype的两张图片关于获取某个特定的文字相关信息:

6a07ed498c2993d5ca0e4354c7b49ca3.png

纵向版本:

866a47bef43dfccedb60304ca5abb54d.png


advance:每一个文字排布后在主轴上的前进距离。



3.2、css属性影响


   除了字体提供的字形本身包含的信息,文字排版还受到一些 CSS 属性影响,如 line-height、letter-spacing、word-spacing 等。display 值为 inline 的元素中的文字排版时会被直接排入文字流中,inline 元素主轴方向的 margin 属性和 border 属性也会被计算进排版前进距离当中。


即使没有元素包裹,混合书写方向的文字也可以形成一个盒结构,在排版时,遇到这样的双向文字盒,会先排完盒内再排盒外。




四、正常流中的盒


多数 display 属性都可以分成两部分:内部的排版和是否 inline,带有 inline- 前缀的盒,被称作行内级盒。

vertical-align 属性决定了盒在交叉轴方向的位置,也会影响实际行高。

浏览器对行的排版,一般是先行内布局,再确定行的位置,根据行的位置计算出行内盒和文字的排版位置。

块级盒比较简单,它总是单独占据一整行,计算出交叉轴方向的高度即可。




五、其他排版


比如: flex 排版,支持了 flex 属性,flex 属性将每一行排版后的剩余空间平均分配给主轴方向的 width/height 属性。



浏览器支持的每一种排版方式,都是按照对应的标准来实现的。

目录
相关文章
|
1月前
|
前端开发
调试前端时,在浏览器上修改参数并重新调用接口
有时候我们的页面点击过了,但是接口出问题,想修改参数再调用一次,一般是用apiPost工具把接口复制,再加上token和参数,但是这样非常的效率比较低。
42 0
|
1月前
|
资源调度 前端开发 JavaScript
构建高效前端项目:现代包管理器与模块化的深度解析
【2月更文挑战第21天】 在当今快速演变的前端开发领域,高效的项目管理和代码组织已成为成功交付复杂Web应用的关键。本文将深入探讨现代前端包管理器如npm, yarn和pnpm的工作原理,以及它们如何与模块化编程实践(例如CommonJS、ES6模块)协同工作以优化开发流程。我们将剖析这些工具的内部机制,了解它们如何解决依赖冲突,提高安装速度,并保证项目的健壮性。同时,本文还将介绍模块化编程的最佳实践,包括代码拆分、重用和版本控制,帮助开发者构建可维护且性能卓越的前端项目。
|
1月前
|
前端开发 UED
前端解析Excel文件
前端解析Excel文件
34 0
|
14天前
|
监控 前端开发 JavaScript
如何使用浏览器调试前端代码?
【4月更文挑战第11天】前端开发中,浏览器调试是关键技能,能提升代码质量。本文介绍了如何使用浏览器的调试工具:1) 打开调试窗口(F12或右键检查);2) Elements标签页检查DOM结构和样式;3) Console调试JavaScript,查看日志和错误信息;4) Sources设置断点调试JS文件;5) 利用Network、Performance和Memory等标签页优化性能。熟悉调试工具、利用日志和错误信息能有效定位问题,提高开发效率。
37 7
|
1月前
|
前端开发 JavaScript 程序员
推荐给前端程序员的5款浏览器插件
推荐给前端程序员的5款浏览器插件
|
1月前
|
SQL 存储 JavaScript
前端浏览器调试详解版
前端浏览器调试详解版
55 0
|
2月前
|
缓存 前端开发 JavaScript
前端性能优化实践与原理解析
【2月更文挑战第3天】 在当今互联网时代,前端性能优化已经成为了开发人员必须要面对的重要课题。本文将结合实际案例,探讨前端性能优化的一些实践方法,并深入分析其背后的原理,旨在帮助开发者更好地理解和应用前端性能优化技术。
21 5
|
2月前
|
JSON 前端开发 JavaScript
从前端到后端——Web开发的全流程解析
【2月更文挑战第2天】Web开发涉及多个方面,从前端设计到后端实现,需要开发者具备一定的技术能力和知识储备。本文将以一个简单的Web应用为例,详细介绍Web开发的全流程。
|
6月前
|
Web App开发 前端开发 JavaScript
|
1天前
解决win10无法打开自带的IE浏览器的问题
解决win10无法打开自带的IE浏览器的问题
7 0

推荐镜像

更多