caniuse.com によると、Android はバージョン 3.0 以降、css 3d 変換を完全にサポートすることになっています。以下のテストのいずれか (Android 4.1、Samsng Galaxy など) を実行すると、true が返されます。ただし、3d 変換と preserve-3d を使用するページを表示すると、機能しません。例えば:
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 は「preserve-3d」をサポートしていませんか? それとも他に何か問題がありますか?