检测“transform:translate3d”支持

有人知道我将如何检测transform:translate3d(x,y,z)支持是否可用吗

我的问题是,我想在支持的浏览器中使用translate3d,因为它倾向于使用硬件加速,因此动画更流畅,然后在不支持的浏览器中使用translate3d

看看这个解决方案

它基于这样一个事实,即如果浏览器支持变换,则

window.getComputedStyle(el.getPropertyValue('transform'))

当三维变换应用于元素el时,将是一个包含变换矩阵的字符串。否则,它将是未定义的或字符串'none',就像Opera 12.02一样

它适用于所有主流浏览器

守则:

函数has3d(){
如果(!window.getComputedStyle){
返回false;
}
var el=document.createElement('p'),
has3d,
变换={
“WebKittTransform”:“-webkit transform”,
“OTransform”:“o-变换”,
'msTransform':'-ms transform',
'MozTransform':'-moz transform',
“转换”:“转换”
};
//将其添加到主体以获取计算样式。
document.body.insertBefore(el,null);
for(变换中的var t){
如果(el.style[t]!==未定义){
el.style[t]=“translate3d(1px,1px,1px)”;
has3d=window.getComputedStyle(el).getPropertyValue(转换[t]);
}
}
文件.正文.删除文件(el);
返回值(has3d!==未定义&has3d.length>0&has3d!==无);
}

发表评论