读后感--浏览器解析CSS样式的过程2019-12-23

原文地址:https://mp.weixin.qq.com/s/5J3PMHm_Kq8BPyBZNGNKag

下面是读后感:


一旦 CSS 被浏览器下载,CSS 解析器就会被打开来处理它遇到的任何CSS。所 有CSS(行内CSS、<style>标记内的CSS,也可以是(js控制的)DOM元素的style属性内嵌的 CSS)都根据语法规范进行解析和标记。

解析完成后,就会生成有一个包含所有选择器、属性和属性各自值的数据结构。


首先解析和计算属性与属性值


1解析已有内容的样式

如下,每个属性都会被单独拆分,并标出完整名字:

解析出所有内容的样式,然后就是对样式计算:

2计算样式

    计算样式,会将所有的值返回标准格式的值:'auto',px,百分百%。

下面是计算优先级

3.1级联

级联就是计算下面各个类的值,优先级高的类,其值也大。


!import怎么用:

直接将字符串' ! import  '加在style里面,样式后面,如下图:


body的背景色是重要 ! 的blue,而不是行内式的red.


需要注意:行内的style和内联style的写法不一样

比如,同样代表背景颜色,一个是bgcolor,一个是background-color


3.2 CSS来源:

CSS信息可以从各种来源提供,这些来源可以是 用户(user) 和 作者(author) 及 用户代理/浏览器(user agent),优先级如下:

user:

    浏览器如safari,提供给用户设置文字大小等功能

author:

    网站创建者建立的样式。一般是开发人员写在头部的<style>CSS</style>标签里。

user/agent:

    浏览器自身显示的样式。不同浏览器不一样。(浏览器=代理agent)

一般来讲,三者的优先级依次是:

author   >    user   >  user/agent 

通过!important会改变优先级。



其次触发CSS对象模型


现在我们需要更新 CSS对象模型(CSSOM)。 CSSOM 位于document.stylesheets 中,我们需要对其进行更新,以便让它知道我们目前为止已经解析和计算的所有内容 。

布局*:

创建一个具有样式的DOM树,也是box tree 盒子树。遍历DOM树,并生成不定个数的CSS盒子。

每一个盒子都有一个margin / border / padding /content 

解析auto:

css解析下面代码:

<body>

<p>Hello world</p>

<style> body { width: 50px; }</style>

</body>

1 bod    浏览器从 body 元素开始,生成它的主盒(principal box),它的宽度为50px,默认高度为auto。

2 p    现在移动到 p 标签并生成其主盒(principal box),并且由于 p 标签默认有边距(margin)(前后一个回车符的距离),这将影响正文的高度

3 content    处理字符串"hello world",这是 DOM 中的文本节点。因此,在布局中生成一个行内盒(line box)。请注意,文本溢出了正文.

因为加上“world”长度后实际长度比较设置大并且我们没有设置 overflow 属性,所以引擎会向其父级报告它在布局文本时停止的位置。


由于没有设置overflow,因此,会高度会是auto 。

处理浮动:float

了解片段:fragment

绘制:painting

回顾一下我们现在的情况,我们取出所有的 CSS 内容,对其进行解析,将其级联到DOM 树中,并完成布局。但是我们还没有对布图应用颜色、边框、阴影和类似的设计处理——处理这些过程被称为绘制

绘制的顺序依次是  1 background / 2 border / 3 content 如下图:


z-index

组成composition


创造互动的视觉:伪类

比如:hover ,鼠标悬浮时候,内部将之前的DOM元素中的样式挂起-->跳过布局,直接绘制新图,传递给用户界面。


现在我们需要更新 CSS对象模型(CSSOM)。 CSSOM 位于document.stylesheets 中,我们需要对其进行更新,以便让它知道我们目前为止已经解析和计算的所有内容

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简介网络浏览器很可能是使用最广的软件。在这篇入门文章中,我将会介绍它们的幕后工作原理。我们会了解到,从您在地址栏输...
    wengjq阅读 6,518评论 2 15
  • 前端必读:浏览器内部工作原理[https://kb.cnblogs.com/page/129756/] 作者: T...
    我是强强阅读 4,876评论 0 2
  • 1. 介绍 浏览器可能是最广泛使用的软件。本书将介绍浏览器的工作原理。我们将看到,当你在地址栏中输入google....
    康斌阅读 6,261评论 7 18
  •   DOM 1 级主要定义的是 HTML 和 XML 文档的底层结构。   DOM2 和 DOM3 级则在这个结构...
    霜天晓阅读 5,366评论 1 3
  • 追逐梦想的人是幸福的,无论成功与否至少感动了自己。如果是一个人有很大的梦想,并且带着一群人从小到大的实现,那就是一...
    六乐苍穹阅读 1,319评论 0 0

友情链接更多精彩内容