jquery - 性能:纯 CSS 与 jQuery

标签 jquery performance css dom

我看过很多纯 CSS 和等效的 jQuery 之间的代码比较。但我正在寻找关于为什么纯 CSS 绝对比 jQuery 更快的详细信息。

以下是我看到的一些原因,但这些描述并不深入。我不确定它们是不是真的。

  • CSS 不必由浏览器评估
  • jQuery 必须由浏览器评估
  • jQuery 通过脚本语言

难道 CSS 不是必须由浏览器评估并且还要通过脚本语言吗? CSS 不需要像 jQuery 那样遍历 DOM 还是 CSS 在那里有一些优势?

最佳答案

  • CSS doesn't have to be evaluated by the browser

    没有。 CSS 是一种用于编写样式表的语言,然后必须由浏览器加载、解析和评估;见下文。

  • jQuery has to be evaluated by the browser

    是的,因为...

  • jQuery goes through a scripting language

    是的。 jQuery 是用 JavaScript 编写的,它和 CSS 一样,是一种必须由浏览器解析和评估的语言;再次,见下文。

Doesn't CSS have to be evaluated by the browser and also goes through a scripting language?

它必须由浏览器评估,但作为一种语言,它在 native 代码中实现,类似于布局引擎的其他核心语言功能,如 HTML 解析器和 JavaScript 引擎。 CSS 实现不会通过脚本语言实现(当然,除非布局引擎本身是用脚本语言编写的)。

CSS 样式通过 CSSOM 暴露给脚本语言,CSSOM 不是 CSS 实现本身,只是一个脚本 API,您可以将其视为 CSS 等同于 HTML 的 DOM。

jQuery 是用 JavaScript 编写的,然后由浏览器的 JavaScript 实现运行。如果您使用 jQuery 来应用 CSS,那么 jQuery 必须访问 DOM 和 CSSOM,它们又是用 JavaScript 实现的,浏览器必须运行。

这类似于使用 jQuery 选择器与 native 选择器 API。 jQuery 选择器在 Sizzle 中实现,一个 JavaScript 选择器库,而 document.querySelector() 是一个 DOM 方法,允许您直接从脚本使用浏览器 native 实现的选择器引擎。

关于jquery - 性能:纯 CSS 与 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16675952/

相关文章:

javascript - 使用 jQuery 在 DIV 中包装两个 HTML 元素

javascript - 我应该如何在 IE 6 中通过背景重复使用透明 png?

css - 列表不会随着转换而移动

jquery - 在 Chrome DevTools 网络面板中显示请求路径

c# - ToList() 与 EF4 的高锁争用和低性能

python - Python 中列表函数的成本

multithreading - 不同主机上的 OpenMP 程序

javascript - HighChart中导出的多个图表与屏幕上显示的不一样

jquery - 如何使用jquery将插入符后的连续数字转换为上标?

javascript - 为什么我的函数之间的 setTimeouts 不起作用?