浏览器【WebKit内核】渲染原理【QUESTION-1】

浏览器【WebKit内核】渲染原理【QUESTION】

image-20240722103801093

1.浏览器输入一个网址(域名之后),浏览器会呈现一个新的页面,中间的过程是怎么实现的?

输入一个网址之后,首先DNS服务器会解析这个域名,将这个域名解析成IP地址,通过IP地址会访问到对应的服务器从该服务器中去请求资源,服务器首先会给浏览器返回index.html的静态资源,那么浏览器就可以通过一行行的从上到下的进行解析index.html文件【浏览器的内核:例如WebKit】,从而将HTML解析成一棵DOM树,如果中间有解析到link链接,就会去下载解析链接的内容,如css文件,但是这期间浏览器会继续向下进行解析,不会停留或者阻塞dom树的进行;下载完css文件后,会对css进行解析,生成cssom,称为css对象模型;通俗将也是一棵规则树。那么通过dom和cssom两棵树结合起来会生成一棵新的render tree。最后浏览器对这颗新的render tree的每个节点进行布局【排版引擎】和绘制到屏幕成,最终形成一个新个页面。

2.浏览器是如何解析服务器返回的静态资源的?然后呈现出页面的?

https://web.dev/articles/howbrowserswork?hl=zh-cn
html---->dom      
css----->cssom
结合构建-------->render tree
布局  ----- 绘制  ----- 呈现

3.什么是回流和重绘?

第一次确定页面节点的大小和位置称为布局,当第二次重新计算页面节点的大小和位置成为回流
第一次渲染内容称为绘制,第二次重新渲染称为重绘

4.什么情况下会引起回流?什么情况下会引起重绘?

1.DOM结构发生了改变        颜色、背景、样式等发生了改变
2.页面布局发生了改变
3.窗口resize发生了改变

5.怎么避免回流?

样式尽量一次性修改
尽量频繁的操作DOM

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 相关概念

.NET 和 .NET SDK .NET 介绍 .NET 是一个由 Microsoft 开发和维护的广泛用于构建各种类型应用程序的开发框架。它是一个跨平台、跨语言的开发平台,提供了丰富的类库、API和开发工具,支持开发者使用多种编程语言(如C#、VB.NET、F#等&#xf…

09 算术运算符

① 运算符除了用于算数加法以外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象之间的相加或连接。 print([1, 2, 3] [4, 5, 6]) # 连接两个列表 print((1, 2, 3) (4,)) # 连接两个元组 print(hello 123) # 连接字符串 print(Fa…

开发桌面程序-Electron入门

Electron是什么 来自官网的介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 总…

与Bug较量:Codigger之软件项目体检Software Project HealthCheck来帮忙

在软件工程师的世界里,与 Java 小程序中的 Bug 作战是一场永不停歇的战役。每一个隐藏在代码深处的 Bug 都像是一个狡猾的敌人,时刻准备着给我们的项目带来麻烦。 最近,我就陷入了这样一场与 Java 小程序 Bug 的激烈较量中。这个小程序原本应…

wget下载github文件得到html文件

从github/gitee下载源文件,本来是22M下载下来只有11k 原因: Github会提供html页面,包括指定的文件、上下文与相关操作。通过wget或者curl下载时,会下载该页面 解决方式: github点击Code一栏的raw按钮,获得源…

【论文复现】Vision Transformer(ViT)

1. Transformer结构 1.1 编码器和解码器 翻译这个过程需要中间体。也就是说,编码,解码之间需要一个中介,英文先编码成一个意思,再解码成中文。 那么查字典这个过程就是编码和解码的体现。首先我们的大脑会把它编码,编…

遍历dom元素下面的子元素的方法,vue中原始标签的ref得到是该元素的dom及下面包含的子dom,与组件ref是引用不同

研究到这个的目的来源是 想用div 遍历方式 替代之前的table tr td 那种框选功能,觉得div灵活,可以随便在外面套层,td与tr之间就不能加div加了布局就乱,然后使用之前的原理( const cellList tableIdR.value.querySelec…

【反转链表 II】python刷题记录

印象中,这是遍历r2了,还好没放弃。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def reverseBetween(self, head: Optional…

C# struct里面的class是值类型还是引用类型

最近在接连的面试一些候选者,我发现很多候选者对于基础还是一知半解 很多人知道struct是值类型,class是引用类型 但是我补一句,如果一个struct里面有个class是值类型还是引用类型 很多面试者就答不出来了,其实这是个很简单的问题…

了解Selenium中的WebElement

Selenium中到处都使用WebElement来执行各种操作。什么是WebElement?这篇文章将详细讨论WebElement。 Selenium中的WebElement是一个表示网站HTML元素的Java接口。HTML元素包含一个开始标记和一个结束标记,内容位于这两个标记之间。 HTML元素的重命名 …

Spring Boot与微服务架构:快速开发指南

引言 随着微服务架构的兴起,越来越多的企业选择将应用拆分成一系列小型、独立且松耦合的服务。Spring Boot作为Spring Framework的扩展,提供了快速开发微服务的能力。本文将深入探讨如何使用Spring Boot快速开发微服务,包括服务发现、配置管理等关键技术。 微服务架构概述…

SCADA系统易用性的重要性

对于中小企业而言,SCADA系统的易用性至关重要,因为它直接影响到系统的实施效率、员工的接受程度和培训成本。一个易用的SCADA系统可以减少员工对新技术的学习曲线,加快系统的部署速度,并降低长期的维护成本。此外,易用…

音视频入门基础:H.264专题(15)——FFmpeg源码中通过SPS属性获取视频帧率的实现

音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

Parameter index out of range (2 > number of parameters, which is 1【已解决】

文章目录 1、SysLogMapper.xml添加注释导致的2、解决方法3、总结 1、SysLogMapper.xml添加注释导致的 <!--定义一个查询方法&#xff0c;用于获取日志列表--><!--方法ID为getLogList&#xff0c;返回类型com.main.server.api.model.SysLogModel,参数类型为com.main.se…

Unity UGUI 之 坐标转换

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本&#xff0c;请注意分别 前置知识&#xff1a;…

大模型-鲁棒性总结-2024-7-21

大语言模型-鲁棒性总结 文章目录 大语言模型-鲁棒性总结1.大语言模型的鲁棒性概述2.自然噪声的鲁棒性2.1.真实标签任务的性能2.2.开放式任务的表现 3.评估分布外&#xff08;OOD&#xff09;任务的弹性3.1.OOD检测3.2.OOD泛化 1.大语言模型的鲁棒性概述 大语言模型&#xff08…

牛客JS题(三)文件扩展名

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 正则表达式可选链操作符 题干&#xff1a; 我的答案 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /></head><body><script>/*** 可能…

快速上手,spring boot3整合task实现定时任务

在已经上线的项目中&#xff0c;定时任务是必不可少的。基于spring boot自动装配的原理&#xff0c;我们要集成task定时任务还是非常简单的。只需要简单的两步就可以实现。 1、创建一个spring boot项目&#xff0c;并在项目的启动类&#xff08;也不一定非要是启动类&#xff…

AI测试入门:认识AI大语言模型(LLM)

AI测试入门&#xff1a;认识AI大语言模型&#xff08;LLM&#xff09; 前言一、大语言模型的概述1. 什么是大语言模型&#xff1f;2. 大语言模型的历史发展 二、大语言模型的工作原理1. Transformer架构自注意力机制 2. 预训练与微调预训练微调 三、大语言模型的应用场景1. 文本…

LabVIEW 实现用户授权与管理多项测试项目

在使用 LabVIEW 开发测试软件时&#xff0c;用户授权和项目管理是一个重要的功能。为了确保系统安全性、灵活性和可扩展性&#xff0c;可以设计一个用户管理系统&#xff0c;允许管理员增加或减少用户的测试项目权限。以下是一个详细的实现方案&#xff0c;包括用户授权管理、项…