头闻号

童军

塑料表面处理|中网|数码相机|注塑加工|表面处理

首页 > 新闻中心 > 科技常识:关于游览器对CSS的渲染
科技常识:关于游览器对CSS的渲染
发布时间:2024-09-22 03:51:48        浏览次数:2        返回列表

今天小编跟大家讲解下有关关于游览器对CSS的渲染 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关关于游览器对CSS的渲染 的相关资料,希望小伙伴们看了有所帮助。

样式规则有三种来源 分别为: 外部样式表或style元素中的CSS rules。如: 复制代码代码如下: p{color:blue;} 这里的外部样式表包括浏览的样式、用户声明的样式(正常声明和重点声明)、作者的样式(正常和重点)。 内联的style属性 如: 复制代码代码如下: <p style="color:blue"></p> HTML元素的视觉属性 如: 复制代码代码如下: <td bgcolor="blue"></td> 由于元素有自己的HTML属性 后面两者都能很容易的和元素匹配上。 对第一个的处理就有些麻烦 如果按一般的想法 为每个元素查找匹配的规则而遍历整个样式表 这将是一个非常艰巨的任务。浏览器又是怎么做的呢 浏览器会分析样式表的时候会建立一些hash map 这些hash map有通过ID映射的 有通过CLASS映射的 有通过TagName映射的 还有一个通用的hash map用来映射其它的。在样式分析完过后 CSS规则(css rules)都会被增加到这些hash map的某一个中。如果这个规则的选择器是ID选择器 就会添加到ID map里面;如果这个规则的选择器是class选择器 就会添加到class map里 等等 复合选择器通常由最右边的部分决定。这样对元素进行规则匹配就很快捷了。在Mozilla下(其它的可能也差不多) 引擎先从分析完过后的样式表中(即那些hash map)选出跟元素部分匹配的css规则 这些css规则并不一定都能应用在这个元素上 还需要其它的操作来找出精确匹配的css规则。引擎这时就会分析这些部分匹配的css规则的选择器 从右到左进行分析 直到发现这个规则是精确匹配或是不匹配的从而放弃这条规则。假设定义了下面的样式规则: 复制代码代码如下: p.error {color:red}#messageDiv {height:50px}div {margin:5px}table div{margin:10px;} 第一个规则将会被添加到class map里面 第二个被添加到id map里 第三、四个添加到tag map里面。 复制代码代码如下: <p class="error">an error occurred </p><div id="messageDiv">this is a message</div> 首先会尝试为p 元素匹配 通过class关键字error在 class map里找到p.error这条规则。div 元素相关的规则在id map和tag map里 为#messageDiv,div,table div。接下就是要找出精确匹配的 #message,div很容易就能完成对div的匹配。对于table div 引擎从右到左分析规则的选择器 找到了table 而这里的div元素没有table的祖先元素 所以放弃这条规则 匹配完成。接下去就会去处理别的 如相对单位到绝对单位的转换、构建style context等等 。 此前见一些人说id选择器的CSS规则速度是最快的 我想应该是误解吧。page speed的Optimize browser rendering里也没有这种提法。没有想出最佳实践的方法 也不知道CSS的改善得到的优化在什么样的数量级上 还望有人能指点。谢谢了。

来源:爱蒂网