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消息生成页面,并显示到显示器上。

相关文章
|
5天前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
3天前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
6天前
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
58 33
|
27天前
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
104 24
|
1月前
|
JavaScript 前端开发
页面滚动触发css3动画js插件
delighters.js是一款页面滚动触发css3动画js插件。该js插件可以在页面向下滚动时,为进入浏览器视口的元素制作各种炫酷的CSS3动画效果。
52 13
|
1月前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
49 3
|
8月前
|
前端开发 JavaScript UED
【专栏:HTML与CSS移动端开发篇】移动端触摸事件与手势识别
【4月更文挑战第30天】本文探讨了移动端触摸事件和手势识别在网页开发中的重要性。介绍了基础触摸事件如`touchstart`, `touchmove`, `touchend`, `touchcancel`及相关属性。文章列举了处理触摸事件的方法,包括单点触摸、多点触摸、滑动、长按、捏合缩放、旋转检测和事件代理。建议使用第三方库如Hammer.js简化手势处理,并分享了最佳实践,如避免意外触摸、提供视觉反馈、考虑性能和跨设备测试。理解并有效利用这些技术能提升用户交互体验。
272 7
|
8月前
|
缓存 前端开发 JavaScript
【专栏:HTML与CSS移动端开发篇】移动端网页性能优化策略
【4月更文挑战第30天】本文探讨了移动端网页性能优化的重要性,并提出了优化策略。HTML方面,建议精简结构、使用语义化标签、异步加载脚本和压缩文件;CSS优化包括精简样式、使用CSS3动画、媒体查询和压缩文件。其他策略涉及图片和字体压缩、缓存利用、数据压缩、减少HTTP请求及根据网络状态调整加载。综合运用这些策略能提升网页性能和用户体验。
124 6
|
8月前
|
编解码 移动开发 前端开发
【专栏:HTML与CSS移动端开发篇】使用Viewport Meta标签优化移动端显示
【4月更文挑战第30天】本文介绍了HTML的Viewport Meta标签在移动端网页优化中的作用。Viewport Meta标签定义了视口属性,如宽度、高度、初始缩放等,解决移动设备因屏幕尺寸差异导致的显示问题。主要属性包括width(常用device-width)、initial-scale、maximum-scale、minimum-scale和user-scalable。
229 4
|
8月前
|
编解码 前端开发 UED
【专栏:HTML 与 CSS 移动端开发篇】CSS 媒体查询与移动端特定样式
【4月更文挑战第30天】CSS媒体查询在移动端开发中至关重要,它基于设备特性(如屏幕尺寸、分辨率、方向)应用特定样式,实现响应式设计。通过`@media`规则定义条件,如`(max-width: 600px)`,当屏幕宽度小于或等于600px时应用相应样式。常见条件包括屏幕宽度、高度、方向和分辨率。媒体查询可用于响应式布局、导航菜单优化、图片加载及字体调整。在实践中,需注意保持查询简洁,充分测试,渐进增强,并提前规划。掌握媒体查询能提升移动端用户体验,创造更优秀的网页设计。
226 3