两个性能问题
1.CSS相关
对于一个相同功能的样式,有两种写法:
(1.1)减少了选择器,但需要多写一个width
.className1 { width: 100px; height: 50px }
.className2 { width: 100px; height: 200px }
(1.2)选择器多了,但减少了width的定义
.className1, .className2 { width: 100px }
.className1 { height: 50px }
.className2 { height: 200px }
请问(1.1)、(1.2)两种写法,哪一种更可取呢?原因是?
2.Sizzle和jQuery选择器相关
像$('input[type="checkbox"]')这样的选择器,
(2.1)它的原理是不是先通过getElementsByTagNam获取
到所有的input,再通过getAttribute()判断
这些input是否具有checkbox属性?
(2.2)如果这些要选择的元素都具有.chkbox类名,
那么$('.chkbox')和$('input[type="checkbox"]')
比(尤其是在IE <= 8下),大部分情况下,
或平均来说,哪个更高效?
------解决方案--------------------1.第一种明显直观且便于后期维护修改,比如后面升级时class1和class2的width可能就不相等了
2.想搞清楚看看源代码,猜测是没用的;还有前端不很注重代码执行效率,加载速度才是最重要的
------解决方案--------------------如果就这些css代码,按照css压缩规则,明显第一个好点,如果有许多同样的样式,只有1,2个样式不一样,采用第二种
(2.1)是的
(2.2)input.chkbox应该和$('input[type="checkbox"]')等效,$('.chkbox')这个最差
------解决方案--------------------1 , 1.2 好些,把共用放一起便维护
2, input[type="checkbox"] , .chkbox 都可以用document.querySelectorAll 来取,ie8下input[type="checkbox"] 可先取 所有 input 再取 .check 要取所有的再找,
------解决方案--------------------1. 把共性的属性提炼出来 方便维护
2. 遍历找出某个dom 对性能的损耗 影响不大 可以不做考虑 插入dom才是对性能最大的考验