Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “preserve-3d”测试在Android上不起作用(通过Browserstack)?_Javascript_Css_Modernizr_Css Transforms - Fatal编程技术网

Javascript “preserve-3d”测试在Android上不起作用(通过Browserstack)?

Javascript “preserve-3d”测试在Android上不起作用(通过Browserstack)?,javascript,css,modernizr,css-transforms,Javascript,Css,Modernizr,Css Transforms,据caniuse.com称,从3.0版开始,Android应该完全支持css 3d转换。当我在Android 4.1、Samsng Galaxy上运行下面的一个测试时,它们返回true。但是,当我查看使用3d变换和preserve-3d的页面时,它不起作用。例如: 测试1: (function(Modernizr, win){ Modernizr.addTest('csstransformspreserve3d', function () { var prop = M

据caniuse.com称,从3.0版开始,Android应该完全支持css 3d转换。当我在Android 4.1、Samsng Galaxy上运行下面的一个测试时,它们返回true。但是,当我查看使用3d变换和preserve-3d的页面时,它不起作用。例如:

测试1:

(function(Modernizr, win){
    Modernizr.addTest('csstransformspreserve3d', function () {

        var prop = Modernizr.prefixed('transformStyle');
        var val = 'preserve-3d';
        var computedStyle;
        if(!prop) return false;

        prop = prop.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');

        Modernizr.testStyles('#modernizr{' + prop + ':' + val + ';}', function (el, rule) {
            computedStyle = win.getComputedStyle ? getComputedStyle(el, null).getPropertyValue(prop) : '';
        });

        return (computedStyle === val);
    });
}(Modernizr, window));
测试2:

Modernizr.addTest('csstransformspreserve3d', function () {

  var prop,
      val,
      cssText,
      ret;

  prop = 'transform-style';
  if ('webkitTransformStyle' in document.documentElement.style) {
    prop = '-webkit-' + prop;
  }
  val = 'preserve-3d';
  cssText = '#modernizr { ' + prop + ': ' + val + '; }';

  Modernizr.testStyles(cssText, function (el, rule) {
    ret = window.getComputedStyle ? getComputedStyle(el, null).getPropertyValue(prop) : '';
  });

  return (ret === val);
});

现在我不知道问题出在哪里。测试不起作用吗?Android 4.1不支持preserve-3d吗?还是有其他问题?

您遇到的是仿真器中的缺陷;您的测试用例在运行Android 4.0.4和4.1.2的真实设备上运行良好。Android emulator GPU是在软件中仿真的,该软件没有实现所有必需的3D功能,这就是为什么即使渲染错误,功能测试也会成功。浏览器支持它们,但底层GPU仿真不支持。

您遇到的是仿真器中的一个缺陷;您的测试用例在运行Android 4.0.4和4.1.2的真实设备上运行良好。Android emulator GPU是在软件中仿真的,该软件没有实现所有必需的3D功能,这就是为什么即使渲染错误,功能测试也会成功。浏览器支持它们,但基础GPU仿真不支持。

如果您使用内置浏览器,请检查您使用的设备是否启用了GPU,或者是否启用了GPU

因为3d变换完全依赖于浏览器+硬件

它使用硬件资源图形处理单元,因此如果设备没有GPU或禁用GPU,则不会渲染任何3d效果

请检查此部分,如有可能,请回复


我希望这样就可以了。

如果您使用的是内置浏览器,请检查您使用的设备是否启用了gpu,或者是否启用了gpu

因为3d变换完全依赖于浏览器+硬件

它使用硬件资源图形处理单元,因此如果设备没有GPU或禁用GPU,则不会渲染任何3d效果

请检查此部分,如有可能,请回复


我希望这样可以.

请指定您在Android、内置、chrome mini中使用的浏览器。。或者别的……我想这是内在的。因为在browserstack上没有选择。这可能是与仿真器相关的问题。请指定您在Android、内置、chrome mini中使用的浏览器。。或者别的……我想这是内在的。因为在browserstack上没有选择。这可能是与仿真器相关的问题。