前端-Q&A

前端-Q&A 浏览器是如何渲染页面的? 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。 在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程。 整个渲染流程分为多个阶段,分别是: HTML 解析、样式计算、布局、分层、绘制、分块、光栅化、画 每个阶段都有明确的输入输出,上一个阶段的输出会成为下一个阶段的输入。 这样,整个渲染流程就形成了一套组织严密的生产流水线。 渲染的第一步是解析 HTML

浏览器的事件循环

浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 何为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有了进程后,就可以运行程序的代码了。 运行代码的「人」称之为「线程」。 一个进程至少有一个线程,所以在进程开启后会自动创建一个线程来运行代码,该线程称之为主线程。 如果程序需要同时执行多块代码,主线程就会启动更多的线程来执行代码,所以一个进程中可以包含多个线程。 何为线程 浏

CSS 属性计算过程

CSS 属性计算过程 你是否了解 CSS 的属性计算过程呢? 有的同学可能会讲,CSS属性我倒是知道,例如: 上面的 CSS 代码中,p 是元素选择器,color 就是其中的一个 CSS 属性。 但是要说 CSS 属性的计算过程,还真的不是很清楚。 没关系,通过此篇文章,能够让你彻底明白什么是 CSS 属性的计算流程。 首先,不知道你有没有考虑过这样的一个问题,假设在 HTML 中有这么一段代码: 上面的代码也非常简单,就是在 body 中有一个 h1 标题而已,该 h1

你不知道的 CSS 之包含块

你不知道的 CSS 之包含块 一说到 CSS 盒模型,这是很多小伙伴耳熟能详的知识,甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别。 但是一说到 CSS 包含块,有的小伙伴就懵圈了,什么是包含块?好像从来没有听说过这玩意儿。 好吧,如果你对包含块的知识一无所知,那么系好安全带,咱们准备出发了。 包含块英语全称为containing block,实际上平时你在书写 CSS 时,大多数情况下你是感受不到它的存在,因此你不知道这个知

前端-Q&A

前端-Q&A 浏览器是如何渲染页面的? 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。 在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程。 整个渲染流程分为多个阶段,分别是: HTML 解析、样式计算、布局、分层、绘制、分块、光栅化、画 每个阶段都有明确的输入输出,上一个阶段的输出会成为下一个阶段的输入。 这样,整个渲染流程就形成了一套组织严密的生产流水线。 渲染的第一步是解析 HTML

浏览器的事件循环

浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 何为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有了进程后,就可以运行程序的代码了。 运行代码的「人」称之为「线程」。 一个进程至少有一个线程,所以在进程开启后会自动创建一个线程来运行代码,该线程称之为主线程。 如果程序需要同时执行多块代码,主线程就会启动更多的线程来执行代码,所以一个进程中可以包含多个线程。 何为线程 浏

CSS 属性计算过程

CSS 属性计算过程 你是否了解 CSS 的属性计算过程呢? 有的同学可能会讲,CSS属性我倒是知道,例如: 上面的 CSS 代码中,p 是元素选择器,color 就是其中的一个 CSS 属性。 但是要说 CSS 属性的计算过程,还真的不是很清楚。 没关系,通过此篇文章,能够让你彻底明白什么是 CSS 属性的计算流程。 首先,不知道你有没有考虑过这样的一个问题,假设在 HTML 中有这么一段代码: 上面的代码也非常简单,就是在 body 中有一个 h1 标题而已,该 h1

你不知道的 CSS 之包含块

你不知道的 CSS 之包含块 一说到 CSS 盒模型,这是很多小伙伴耳熟能详的知识,甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别。 但是一说到 CSS 包含块,有的小伙伴就懵圈了,什么是包含块?好像从来没有听说过这玩意儿。 好吧,如果你对包含块的知识一无所知,那么系好安全带,咱们准备出发了。 包含块英语全称为containing block,实际上平时你在书写 CSS 时,大多数情况下你是感受不到它的存在,因此你不知道这个知

三键成码:在 Powershell 中用三个字母和任意符号输出 Hello World

其实 这篇文章 在去年暑假就已经写好,不过最近我的 pull request 才被合并,已经快忘掉了。现修缮后发出来。 规则 三键成码一项编程比赛,要求参赛者仅用三个字母或数字以及任意数量的符号编码输出 Hello, World!,并且文件体积最小者获胜。以下是详细规则: 参赛选手自行挑选三个「字母 / 数字」来编写代码,代码中的「字母 / 数字」只能且必须 有这三个(大小写算两个不同的键) 除此三个「字母 / 数字」外,额外允许使用普通键盘上的所有 ASCII 符号(例