【问题标题】:How to detect CSS translate3d without the webkit context?如何在没有 webkit 上下文的情况下检测 CSS translate3d?
【发布时间】:2015-07-16 00:17:10
【问题描述】:

要检测浏览器是否支持translate3d,我们可以使用(WebKitCSSMatrix in window && m11 in new WebKitCSSMatrix())

但是现在firefox支持translate3d怎么才能有正确的检测呢?

我们的想法是在不使用 Modernizr 的情况下找到解决方案。

【问题讨论】:

    标签: css translate3d


    【解决方案1】:

    我需要类似的东西。我想在不使用库的情况下测试浏览器是否支持 translate3d。我没有找到任何不是 webkit 特定的通用测试。所以经过大量的实验,我想出了下面的测试。我先创建一个测试元素,给它分配一个transform函数,然后看看这个元素是否保留了transform函数。

    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
    

    该功能非常快满足我的需求:桌面浏览器中

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      另一个对我来说就像一个魅力的选择:

      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");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 1970-01-01
        • 2015-02-23
        • 1970-01-01
        • 2018-02-13
        相关资源
        最近更新 更多