检测浏览器是否支持translate3d
我们可以使用(WebKitCSSMatrix
在 window && m11
in new WebKitCSSMatrix())
但是现在那个firefox支持translate3d
怎么才能有正确的检测呢?
我们的想法是在不使用 Modernizr 的情况下找到解决方案。
检测浏览器是否支持translate3d
我们可以使用(WebKitCSSMatrix
在 window && m11
in new WebKitCSSMatrix())
但是现在那个firefox支持translate3d
怎么才能有正确的检测呢?
我们的想法是在不使用 Modernizr 的情况下找到解决方案。
我需要类似的东西。我想在不使用库的情况下测试浏览器是否支持 translate3d。我没有找到任何非 webkit 特定的通用测试。所以经过大量的实验,我想出了下面的测试。我首先创建一个测试元素,为其分配一个变换函数,然后查看该元素是否保留了变换函数。
function Has3DSupport()
{
var sTranslate3D = "translate3d(0px, 0px, 0px)";
var eTemp = document.createElement("div");
eTemp.style.cssText = " -moz-transform:" + sTranslate3D +
"; -ms-transform:" + sTranslate3D +
"; -o-transform:" + sTranslate3D +
"; -webkit-transform:" + sTranslate3D +
"; transform:" + sTranslate3D;
var rxTranslate = /translate3d\(0px, 0px, 0px\)/g;
var asSupport = eTemp.style.cssText.match(rxTranslate);
var bHasSupport = (asSupport !== null && asSupport.length == 1);
return bHasSupport;
} // Has3DSupport
该功能对我的需求来说非常快:桌面浏览器中 < 50 微秒,移动浏览器中 < 500 微秒。
希望这可以帮助。
另一个对我来说就像魅力的选择:
function has3d() {
var el = document.createElement('p'),
has3d,
transforms = {
'WebkitTransform':'-webkit-transform',
'OTransform':'-o-transform',
'MSTransform':'-ms-transform',
'MozTransform':'-moz-transform',
'Transform':'transform'
};
// Add it to the body to get the computed style.
document.body.insertBefore(el, null);
for (var t in transforms) {
if (el.style[t] !== undefined) {
el.style[t] = "translate3d(1px,1px,1px)";
has3d = window.getComputedStyle(el).getPropertyValue(transforms[t]);
}
}
document.body.removeChild(el);
return (has3d !== undefined && has3d.length > 0 && has3d !== "none");
}