使用纯javascript设置样式的最有效方法
Most efficient way to set style using pure javascript?
在javascript中对元素设置多个样式的最有效方法是什么?
for (i=0;i<=lastSelector;i++) {
var e = mySelector[i],
v = 'opacity 1s';
e.style.WebkitTransition = v;
e.style.MozTransition = v;
e.style.OTransition = v;
e.style.MsTransition = v;
e.style.transition = v;
e.style.opacity = 0;
};
几乎可以使用堆叠赋值:
for (i=0;i<=lastSelector;i++) {
var e = mySelector[i];
e.style.WebkitTransition =
e.style.MozTransition =
e.style.OTransition =
e.style.MsTransition =
e.style.transition =
'opacity 1s';
e.style.opacity = 0;
}
由于我们有几个特定于供应商的版本,因此您可以考虑使用可重复使用的函数来实现这一点,例如:
function setMultiVendorProp(style, propName, value) {
// Set the non-vendor version
style[propName] = value;
// Make first char capped
propName = propName.substring(0, 1).toUpperCase() + propName.substring(1);
// Set vendor versions
style["Webkit" + propName] = value;
style["Moz" + propName] = value;
style["O" + propName] = value;
style["Ms" + propName] = value;
// Done
return value;
}
或者使用虚线样式,因为我们已经在使用字符串而不是标识符:
function setMultiVendorProp(style, propName, value) {
// Set the non-vendor version
style[propName] = value;
// Set vendor versions
style["-webkit-" + propName] = value;
style["-moz-" + propName] = value;
style["-o-" + propName] = value;
style["-ms-" + propName] = value;
// Done
return value;
}
然后:
for (i=0;i<=lastSelector;i++) {
var e = mySelector[i];
setMultiVendorProp(e.style, "transition", "opacity 1s");
e.style.opacity = 0;
}
<小时>旁注:
- 在
for
语句中,在关闭}
之后没有;
- 函数中任何位置的
var
都是函数范围内的,因此在函数内的非函数块中声明var
(稍微)会误导代码的读者;详细信息:可怜的、被误解的var
你可以试试这个:
var i,
es,
v = 'opacity 1s';
for (i=0;i<=lastSelector;i++) {
es = mySelector[i].style;
es.WebkitTransition = v;
es.MozTransition = v;
es.OTransition = v;
es.MsTransition = v;
es.transition = v;
es.opacity = 0;
};
不需要每次循环时都设置v = 'opacity 1s'
,只需在循环之前设置一次即可。只要我们移动v
的声明,请注意JS只有函数范围,所以在循环中声明变量实际上并不会将其范围限制在该循环中。
可能在函数中:
function setStyles(styles, element, value)
{
for(var i=0,l=styles.length;i<l;i++)
{
if(p in element.style)
element.style[p] = value;
}
};
}
所以你可以打电话给:
var s = ['WebkitTransition','MozTransition','OTransition','MsTransition','transition'];
for (i=0;i<=lastSelector;i++) {
var e = mySelector[i],
v = 'opacity 1s';
setStyles(s,e,v);
e.style.opacity = 0;
};
相关文章:
- 在jQuery中创建向下滑动子菜单的最有效方法
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 选择具有值数组的所有元素的最有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- 将javascript数组中的项移动到特定位置的有效方法
- 将JS对象数组转换为嵌套形式的最有效方法
- 隐藏具有特定类$.each、for等的元素的有效方法
- 什么's是调用具有可变参数的函数的有效方法
- 选择具有特定数据的所有 html 标记的最有效方法是什么 - [适当性],无论值如何
- 使用 jQuery 调用 PHP 端点的最有效方法
- 这是解析 Int 的有效方法吗?
- 在JavaScript中搜索数组映射的最有效方法
- 获取字符串中最后一个换行符的最有效方法是什么
- 什么's是在两个(或多个)阵列中找到匹配的细胞序列的最有效方法
- 什么's是在IE8+中添加元素的最有效方法
- 从任何jquery选择器字符串创建元素的最有效方法
- 在日期范围内查找丢失日期的最有效方法是什么
- 对区间[1,10^12]中的整数进行编码/解码的快速有效方法是什么
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 在ASP.NET中使用JQuery UI自动完成的有效方法