80%的前端大牛都会忽视的CSS小知识

2023-04-19    分类: 网站建设

有很多开发者并不怎么关注 CSS,我想这已经不是什么新鲜事了。通过网上的各种对话,或者与朋友和同事聊天的时候你都可以观察到这个现象。


然而,在社区中,我们学到的很多知识都是来自于同伴的分享,有时我会意识到很多关于 CSS 的基础知识在社区中从来没有被分享过,因为其他人从来不愿意花时间在 CSS 上深究。

为了解决这个问题,我决定对 CSS 做一些研究并整理出一部分概念,我认为这些概念对于更好地理解和编写 CSS 代码很有帮助。

在所有的编程语言中都有一些用来描述概念的特定术语。CSS 作为一门编程语言也是一样的,了解这些术语对于沟通交流甚至只是为了提高自己的知识储备都是很有帮助的。

后代选择器

你知道样式选择器中间的小空格吗?它实际上还有一个名字,它的名字是后代选择器。


布局,绘制和渲染层合并

这些术语更多地和浏览器渲染有关,但它仍然很重要,因为一些 CSS 属性会影响渲染进程的不同步骤。

1. 布局

布局步骤负责计算元素在屏幕上占用的空间大小。修改 CSS 中的“布局”属性(例如:宽度、高度)意味着浏览器需要检查其他所有的元素并“重排”页面,也就是说重新绘制受影响的区域并将他们合并在一起。

2. 绘制

此过程是为元素的可视化部分(颜色、边框等)填充像素的过程。绘制元素通常在多个图层上完成。

改变“绘制”属性不会影响页面的布局,所以浏览器会跳过布局步骤但仍然会执行绘制。

绘制经常是整个渲染进程中代价最昂贵的部分。

3. 渲染成合并

在渲染层合并这个步骤中,浏览器需要按照正确的顺序绘制图层。因为有一些元素会发生重叠,所以这个步骤对于确保元素按照预期顺序显示非常重要。

如果你改变了一个既不需要布局也不需要绘制的 CSS 属性,那么浏览器只需要做渲染层合并操作。

CSS 性能

后代选择器或许会非常耗能

取决于程序的大小,仅仅使用没有什么特殊性的后代选择器代价会非常昂贵。浏览器会检查每个后代元素是否匹配,因为后代这种关系不仅限于父子之间。

例如:


浏览器会评估页面上的所有链接,最终定位到那个实际位于 #nav 元素内的链接。

一种更高效的方法是在 #nav 元素中的每个 元素上添加一个特定的 .navigation-link 选择器。

浏览器从右到左读取选择器

我觉得我应该知道这个,因为这个听起来很重要,但我并不知道……

解析 CSS 时,浏览器会从右到左解析 CSS 选择器。

让我们看看下面的例子:



采取的步骤如下:

•匹配页面上的每个 元素。
•找到被
  • 元素包裹的 元素。
    •使用之前的匹配结果并将范围缩小到那些被
  • 成都定制网站网页设计