2013-06-20 4 views
1

Android должен поддерживать css 3d-преобразования полностью с версии 3.0 в соответствии с caniuse.com. Когда я запускаю один из тестов ниже (например, на Android 4.1, Samsng Galaxy), они возвращают true. Однако, когда я просматриваю страницу, которая использует 3D-преобразования и сохраняет-3d, она не работает. Например:Тесты для «сохранения-3d» не работают на Android (через Browserstack)?

http://jsfiddle.net/bartaz/e3Rjz/show/

Тест 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 «сохранить-3d»? Или что-то еще не так?

+0

Укажите, пожалуйста, какой браузер вы используете в Android, встроенном, хромированном мини .. или что-то еще .. – MarmiK

+0

Я думаю, что это встроенный. поскольку в браузере нет выбора. Вероятно, это проблема, связанная с эмулятором. – gang

ответ

3

Что вы испытываете - это дефект в эмуляторе; ваш тестовый пример отлично работает на реальном устройстве под управлением Android 4.0.4 и 4.1.2. Эмулятор Android-эмулятора эмулируется в программном обеспечении, которое не реализует все необходимые 3D-функции, поэтому тесты функций преуспевают, даже если рендеринг ошибочен. (Браузер поддерживает их, но основная эмуляция графического процессора не работает.)

1

Если вы используете встроенный браузер, проверьте, используете ли вы устройство с включенным gpu или gpu?

как 3d Transform полностью зависит от браузера + аппаратного обеспечения.

Она использует аппаратные ресурсы (блок обработки графической), так что если устройство не имеет GPU или отключить GPU он не будет оказывать какой-либо 3D-эффектов ..

Пожалуйста, проверьте эту часть и, если возможно, ответ ..

Надеюсь, это сработает ..