js、css、html 如何变成页面

简介: html 渲染过程

html:超文本标记语言

由标记和文本组成,标记也成为标签。每一个标签都由自己特殊含义

css :层叠样式表

是由选择器和属性组成,根据选择器选择对应的节点,然后再告诉浏览器,某个属性的值。

js:javaScript  编程语言


按照渲染的时间顺序,流水线可以分为

  • 构建dom树
  • 样式计算
  • 布局阶段
  • 分层
  • 绘制
  • 分块
  • 光栅化
  • 合成

一 、构建dom树

为什么要构建dom树?

因为浏览器无法直接理解和使用HTML,所以需要将HTML转换成浏览器能够理解的-DOM树

dom树本质是一种树结构。

也可以通过浏览器控制台来解析dom树,html和dom内容是一摸一样的。但是dom保存在内存中,通过js可以操作或者修改其内容

虽然生成了dom树。但是dom节点样式需要正确的被计算出来

二、样式计算

样式计算可以分为三个部分

1.把css转换成浏览器能够理解的结构

样式引入的方式有三种: 行内样式。内部样式表,外联样式表

和html文件一样,浏览器也是无法直接理解这些纯文本的css样式。当渲染引擎接口到css文件时,会之星一个转换操作。将css文本转换成为浏览器可以理解的结构   ------ styleSheet

在浏览器控制台可以输入document.styleSheets 看到完整结构

2.转换样式表中的属性值。使其标准化

例如长度单位。vh,vw,rem,em......、blue,red......等等这些值不会被渲染引擎理解。所以这些需要将所有值转换成渲染引擎容易理解的,标准化的计算值。

3.计算dom树中每个节点的具体样式

  • css继承,css继承是每个dom节点都包含有父节点的样式。在浏览器中可以可以看到继承的样式
  • 可以通过style旁边computed来看当前元素的所有样式

布局阶段

现在已经存在dom树。但是还不能显示页面,因为不知道dom元素的几何位置。接下来就要计算出dom树种可见元素的集合位置。我们把这个一个过程称之为布局。chrome在布局阶段需要完成两个任务,创建布局树和布局计算。

分层:页面有很多复杂效果。比如3d变换,页面滚动,或者使用z-index做轴排序。渲染引擎还需要为特定的节点生成专用的图层并生成一颗对应的图层树。

并不是每个节点都包含图层,如果当前节点没有图层。那么当前节点属于父级图层。

视口:屏幕上可见区域就是视口(viewport)

一个页面可能会比较大,浏览器会把页面划分成图块。一个页面可能分成很多,视口中也会有几个图块。合成线程会按照视口附近的图块来优先生成位图,实际生成位图的操作是由栅格化来执行的。所谓栅格化,是指将图块转换为位图

一个完整渲染过程大致如下:

1.渲染进程将html内容转换成为能够读懂的dom树结构

2.渲染引擎将css样式,转化为浏览器可以理解的styleSheets,计算dom节点的样式

3.创建布局树。并计算元素的布局信息

4.对布局树进行分层,并生成分层树

5.为每个图层绘制成列表。并将其提交到合成线程

6.合成线程将图层分成图块,并且在光栅化线程池中将图块转换成位图

7.合成线程发送绘制图块命令DrawQuad给浏览器进程

8.浏览器进程根据drawQuad消息生成页面,并显示到显示器上。

相关文章
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
196 1
|
6月前
|
移动开发 前端开发 JavaScript
征信报告修改器,征信报告生成器,制作软件无痕修改软件【js+html+css】
本项目为信用评分模拟器教学工具,采用HTML5实现,仅供学习参考。核心功能通过JavaScript构建,包含虚拟数据生成、权重分配及信用因素分析(如还款记录、信用使用率等)。
|
6月前
|
前端开发 JavaScript
个人征信电子版无痕修改, 个人信用报告pdf修改,js+html+css即可实现【仅供学习用途】
本代码展示了一个信用知识学习系统的前端实现,包含评分计算、因素分析和建议生成功能。所有数据均为模拟生成
|
3月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
193 2
|
6月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
6月前
|
前端开发
个人征信PDF无痕修改软件,个人征信模板可编辑,个人征信报告p图神器【js+html+css仅供学习用途】
这是一款信用知识学习系统,旨在帮助用户了解征信基本概念、信用评分计算原理及信用行为影响。系统通过模拟数据生成信用报告,涵盖还款记录
|
6月前
|
存储 前端开发 安全
病历单生成器在线制作,病历单生成器app,HTML+CSS+JS恶搞工具
本项目为医疗病历模拟生成器,旨在为医学教学和软件开发测试提供数据支持,严格遵守《医疗机构病历管理规定》。
|
11月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
558 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
10月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
309 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
11月前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
365 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子