子组合器与级联:哪个性能更好,效率更高
Child combinator vs Cascading: Which is better performant and efficient?
子组合器:
#main-navigation-wrapper > .main-navigation > .top-nav > .top-menu > .in {
/* some styling */
}
同样的事情可以用不太具体的方式表示,就像这样(级联,还是称为其他东西??
#main-navigation-wrapper .main-navigation .in {
/* some styling */
}
从理论上讲,根据给定的示例,两者中哪一个的性能和效率更高?(请不要说它可以忽略不计。
我的使用案例
由于社区成员一直建议我在我的问题中描述我想要实现的目标,所以在这里。
我使用Twitter Bootstrap来实现一些JavaScript效果,这是我使用的片段:
!function ($) {
"use strict"; // jshint ;_;
/* COLLAPSE PUBLIC CLASS DEFINITION
* ================================ */
var Collapse = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, $.fn.collapse.defaults, options)
if (this.options.parent) {
this.$parent = $(this.options.parent)
}
this.options.toggle && this.toggle()
}
Collapse.prototype = {
constructor: Collapse
, dimension: function () {
var hasWidth = this.$element.hasClass('width')
return hasWidth ? 'width' : 'height'
}
, show: function () {
var dimension
, scroll
, actives
, hasData
if (this.transitioning) return
dimension = this.dimension()
scroll = $.camelCase(['scroll', dimension].join('-'))
actives = this.$parent && this.$parent.find('> .main-navigation > .top-nav > .top-menu > .in')
if (actives && actives.length) {
hasData = actives.data('collapse')
if (hasData && hasData.transitioning) return
actives.collapse('hide')
hasData || actives.data('collapse', null)
}
/* and the code goes on... */
}(window.jQuery);
在代码中查找此内容 - > .main-navigation > .top-nav > .top-menu > .in
。
现在,我应该使用它,还是这个> .main-navigation .in
?这是我的问题,推理应该基于哪个会提供更好的性能,哪个更有效率。
如果我不够清楚,请告诉我。
我的猜测?
我认为这(#main-navigation-wrapper > .main-navigation > .top-nav > .top-menu > .in
)既高效又高性能,因为我相信它可以帮助浏览器快速识别元素。不过我可能是错的,这就是我问的原因。
所有评论都是正确的,效果可以忽略不计。
此外,重要的是 2 条规则不同。在某些情况下,它们可能会给出非常不同的结果。所以,选择一个或另一个不是表现的问题,而是得到你真正想要的东西的问题。
说了这么多,你是对的,如果子规则是正确的,它会更有效率。
如果您正在编写规则,并且您知道您的 DOM,并且规则不会过于具体,则效率更高。 编写过于具体的规则是一个你可以避免的问题,因为你知道你的 DOM,但框架编写者无法避免。
真正与众不同的是,当你里面有很多内容时
#main-navegation-wrapper not(.main-navigation)
第一条规则甚至不处理,第二条规则必须
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 什么对性能更好:每个元素的事件或一个具有委派的事件
- 哪一个在访问数组长度方面的性能更好
- 不要为机器人(谷歌和其他)加载JS脚本以获得更好的性能
- 优化javascript/jQuery以获得更好的性能
- 更好的性能?200+ 个单独的结果页面或 200+ 个条件(如果还有其他梯形图或开关大小写?)在 Javascript/
- 如何替换getImageData和putImageData以获得更好的性能
- 使用类与 ids 用于多个 li 元素示例 20,具有 KNOCKOUT 和 jQuery,性能和可保留性更好
- 无论如何,优化此视差脚本以获得更好的性能
- 这些jQuery JavaScript中的哪一个将具有更好的性能
- 打字稿 0.9.1 : 非常慢的智能感知 我应该回到 0.8.3 以获得更好的性能吗?
- 向 DOM 添加一个简单的图像标记,而不是使用 GWT 控件以获得更好的 JS 运行时性能
- 性能方面:拥有许多小型 ajax php 控制器脚本还是一个大型脚本更好
- 在性能方面使用.delete()更好吗
- jQuery:通过检查绑定元素是否存在,可以获得更好的性能
- 预排序数据或Angular orderBy哪个性能更好
- 如何在地图上绘制标记以获得更好的性能
- 如何通过画布从Html 5视频中获得更好的性能
- 隐藏HTML元素的性能更好的方法是什么
- kendou网格的更换,需要一种具有更好性能的网格