var Element = {};
Element.getStyles1 = function() {
var view = document.defaultView;
var propCache = {};
var camelRe = /(-[a-z])/gi;
var camelFn = function(m, a) {
return a.charAt(1).toUpperCase();
};
return view && view.getComputedStyle ? function(el, prop) {
var v, cs, camel;
if (prop == 'float') {
prop = "cssFloat";
}
if (v = el.style[prop]) {
return v;
}
if (cs = view.getComputedStyle(el, "")) {
//if (!(camel = propCache[prop])) {
//camel = propCache[prop] = prop.replace(camelRe, camelFn);
// }
camel = prop.replace(camelRe, camelFn);
return cs[camel];
}
return null;
} : function(el, prop) {
var v, cs, camel;
if (prop == 'opacity') {
if (typeof el.style.filter == 'string') {
var m = el.style.filter.match(/alpha\(opacity=(.*)\)/i);
if (m) {
var fv = parseFloat(m[1]);
if (!isNaN(fv)) {
return fv ? fv / 100 : 0;
}
}
}
return 1;
} else if (prop == 'float') {
prop = "styleFloat";
}
if (!(camel = propCache[prop])) {
camel = propCache[prop] = prop.replace(camelRe, camelFn);
}
if (v = el.style[camel]) {
return v;
}
if (cs = el.currentStyle) {
return cs[camel];
}
return null;
};
}();
Element.getStyles2 = function(element, style) {
var camelRe = /(-[a-z])/gi;
var propCache = {};
var camelFn = function(m, a) {
return a.charAt(1).toUpperCase();
};
//if (!(camel = propCache[style])) {
camel = propCache[style] = style.replace(camelRe, camelFn);
// }
style = style == 'float' ? 'cssFloat' : camel;//style.replace(camelRe, camelFn);;
var value = element.style[style];
if (!value || value == 'auto') {
if(document.defaultView)
var css = document.defaultView.getComputedStyle(element, null);
value = css ? css[style] : null;
}
if (style == 'opacity')
return value ? parseFloat(value) : 1.0;
return value == 'auto' ? null : value;
};
var s = ['width', 'heigth', 'opacity', 'float', 'margin', 'border',
'background', 'top', 'button','padding-left','padding-right','margin-bottom','border-bottom-width','border-right-width'];
var now = new Date().getTime();
for (var i = 0;i < 10000; i++) {
var m =parseInt(Math.random()*(s.length-1))+1;
var el=document.getElementById('test1');
Element.getStyles1(el, s[m]);
}
var now1 = new Date().getTime();
alert(now1 - now);
var now = new Date().getTime();
for (var i = 0;i < 10000; i++) {
var m =parseInt(Math.random()*(s.length-1))+1;
Element.getStyles2 (document.getElementById('test1'), s[m]);
}
var now1 = new Date().getTime();
alert(now1 - now);
在分析Ext,觉得ext,yui(类似style1的实现)要不要这样做,于是做了一个性能的测试
在IE中 style1:420-440之间,style2:'453-470之间
在FF中,style1:953-970之间,style2:1266-1287之间
加上came缓存的性能提升在0-20之间。
先不用去说prototype,mootools的类似的getstyle2的实现上有点问题。而且性能还是差很多,要慢五分之一。
分享到:
相关推荐
在本文中,我们将深入探讨如何使用PHPExcel库来操作Excel文件,这是一个非常实用的PHP库,用于创建、读取和修改Microsoft Excel文件。... ...以下代码片段展示了如何...在处理大量数据时,合理使用内存和优化性能也是关键。
$sheet->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('A1')->getFill()->getStartColor()->setARGB('FF0000'); // 设置背景色为红色 ``` ### 5. 性能优化 由于...
在多物体动画的场景下,例如通过鼠标悬停来触发元素动画,作者推荐不要直接使用offsetWidth属性来获取宽度,而是将`getStyle`函数获取到的宽度值存储在一个变量中重复使用,从而提高动画效果的流畅性和性能。...
2. **检查透明度动画**:通过`getStyle`方法获取元素的透明度属性,并与目标值进行比较。如果它们不相等,说明动画尚未完成,将`flag`设为`false`。 ```javascript if (parseInt(target) != parseInt(parseFloat...
使用`PHPExcel_Worksheet_AutoFilter`和`PHPExcel_Reader_IReader::loadSheetsOnly`可以限制加载的工作表数量,提高性能。 7. **处理错误和异常** 在实际应用中,确保处理可能出现的错误和异常,例如文件不存在、...
- **性能**:相比依赖外部库的方式,原生JavaScript通常具有更好的性能表现。 ##### 2. **复合运动**: - **概念**:在同一时间周期内,元素的多个属性同时进行变化的动画效果。 - **应用场景**:常用于网页游戏...
在前端开发中,jQuery提供了一套非常方便的API来实现动画效果,但随着Web标准的发展和性能优化需求的提高,原生JavaScript的方法逐渐受到青睐。通过原生JavaScript实现动画,能够更精确地控制动画过程,并在需要时...
- **目的**: 减少内存占用,提高性能。 - **实现**: 只有当真正需要时才加载特定组件。 **2.3 内存中的电子表格** - **表示方式**: 工作簿由多个工作表组成,每个工作表又包含许多单元格。 **2.4 读取器和写入器**...
例如,如果你想获取特定单元格的样式,可以使用`getStyle()`方法。 6. **性能优化** 对于大量数据的Excel文件,可能需要考虑性能问题。可以使用流式读取,只读取需要的部分,以减少内存消耗。 总的来说,通过使用...
- **性能优化**:考虑使用`requestAnimationFrame`替代`setInterval`,提高动画流畅度。 - **兼容性问题**:虽然示例代码考虑了IE浏览器的兼容性,但可以进一步优化,例如使用前缀来支持更多旧版本浏览器。 - **交互...
$sheet->getStyle('A1')->applyFromArray($style); // 保存为XLSX文件 $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $writer->save('output.xlsx'); ``` 在实际项目中,可能还需要处理错误...
- **数据格式化**:设定单元格的数据类型,如日期、货币等,`$worksheet->getStyle('D1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14);` - **图表**:创建图表并添加到...
$worksheet->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); ``` - **公式计算**:可以使用Excel的内置公式。 ```php $worksheet->setCellValue('C1', '=A1+B1');...
- `getStyle()`方法用于获取单元格的样式,然后可以通过`setNumberFormat()`来设定特定的数字格式。 5. **合并单元格** - 使用`mergeCells()`方法可以合并多个相邻的单元格。 6. **读取Excel文件** - 使用`...
例如,你可以使用`getActiveSheet()->setCellValue()`方法设置单元格内容,`getStyle()`和`applyFromArray()`组合设置单元格样式。 4. **格式化和样式**:PHPExcel允许你控制单元格的字体、颜色、边框、对齐方式、...
$worksheet->getStyle('A1')->applyFromArray($style); ``` ### 4. 写入数据 如果你有大量数据需要写入,可以使用`fromArray()`方法批量插入数据。这将大大提高效率,避免循环写入的性能损耗。 ```php $data = ...
$sheet->getStyle('A1:A100')->applyFromArray($styleArray); ``` 在性能优化方面,`PHPExcel`提供了一些配置选项,如关闭自动样式调整、禁用公式计算等,以减少不必要的计算和内存占用。在处理大量数据时,这些...
10. **getStyle**:`Ext.fly('elId').getStyle('color')`和`Ext.fly('elId').getStyle('z-index')`返回元素的CSS属性值。 11. **setStyle**:通过`Ext.fly('elId').setStyle({ /* style properties */ })`可以设置...
$worksheet->getStyle('A1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); // 公式计算 $worksheet->setCellValue('B1', '=SUM(A1:A5)'); ``` ### 6. 支持的格式 除了Excel文件,PHPExcel...
6. **性能优化**:对于大数据量的处理,PHPExcel提供了内存和缓存管理策略,如使用CSV备份,分批处理数据等,以减少内存消耗和提高性能。 7. **兼容性**:PHPExcel兼容多种PHP版本,适合各种类型的PHP项目。同时,...