所以我正在构建一组 JavaScript (jQuery) 小部件,我想确保这些小部件的所有元素都在使用box-sizing: border-box
(是的,我知道这意味着我只能支持 8 或更高版本的 IE 版本我很好)。
现在我听说做 a[selector] > *
很慢,但到底有多慢?
我的意思是对于其中一个小部件,我有这个选择器来确保所有元素都具有正确的框大小:
.jg-grid-wrap,
.jg-grid-content-outer-wrap,
.jg-grid-colum-actions a,
.jg-grid-content-wrap,
.jg-grid-wrap .hide,
.jg-grid-wrap ul,
.jg-grid-wrap ul li,
.jg-grid-header-wrap,
.jg-grid-header-wrap li,
.jg-grid-header-wrap .sort-indicator,
.jg-grid-row,
.jg-grid-row li,
.jg-grid-footer-wrap,
.jg-grid-footer-wrap .column-selection
.jg-grid-wrap .controls,
.jg-grid-wrap .controls .first-page-link,
.jg-grid-wrap .controls .previous-page-link,
.jg-grid-wrap .controls .next-page-link,
.jg-grid-wrap .controls .last-page-link,
.jg-grid-wrap .controls .column-selection-link,
.jg-grid-wrap .controls .set-page-link,
.jg-grid-wrap .controls .total-page-count,
.jg-grid-wrap .controls .record-counts,
.jg-grid-wrap .controls .record-display-text
{
box-sizing: border-box;
}
但是写起来会更小更容易:
.jg-grid-wrap *
{
box-sizing: border-box;
}
另外,如果我添加一个元素,我现在必须记住将它添加到带有星号的巨大选择器中,我不必担心它。
真的值得我花时间单独列出每个可能的元素,因为[selector] > *
它真的那么慢吗?
更新
最后,我将继续:
[class^=jg-] *
{
box-sizing: border-box;
}
基于谷歌浏览器,这个选择器有大约 14% 的总 4 毫秒。其他的稍微小一点(~4%),但是考虑一下,CSS 将是我可能需要担心性能的最后一个地方(我的 javascript 和服务器端代码将成为瓶颈的主要部分)。如果我真的需要优化我的 CSS chrome 分析器,我需要它时就在那里。