Я пытаюсь сделать свое приложение кросс-браузерным, предоставляя два стиля: один для браузеров, поддерживающих 3D-анимацию CSS, и один для браузеров, которые этого не делают, используя этот код для обнаружения функций:
// Function from: https://stackoverflow.com/a/36191841/7982963
const isValueSupported = (prop, value) => {
const el = document.createElement('div');
el.style[prop] = value;
return el.style[prop] === value;
}
// [unction from: http://lea.verou.me/2009/02/check-if-a-css-property-is-supported/
const isPropertySupported = property => property in document.body.style;
// Detection style inspired by Modernizr library
if (isValueSupported('perspective', '400px') && isValueSupported('transform-style', 'preserve-3d') && isValueSupported('backface-visibility', 'hidden') && isValueSupported('transform', 'rotateY(-180deg)') && isPropertySupported('perspective') && isPropertySupported('transform-style') && isPropertySupported('backface-visibility') && isPropertySupported('transform') && (!navigator.userAgent.includes('Firefox'))) {
document.documentElement.classList.add('csstransforms3d');
} else {
document.documentElement.classList.add('no-csstransforms3d');
}
Проблема в том, что хотя некоторые браузеры, такие как Firefox, проходят тест, в них есть известные ошибки, такие как Ошибка видимости обратной стороны Mozilla, поэтому мне пришлось нюхать браузер :(.
Я быстро нашел полезные результаты для Firefox: if (navigator.userAgent.includes('Firefox'))
, но для другого браузера бывает, что я на моем компьютере под названием «Браузер Baidu», я не смог найти никаких результатов.
Так как же обнаружить такие браузеры?
const
и определенно не поддерживает функции со стрелками. - person charlietfl   schedule 20.11.2018transform: translate(0);
к переднему элементу: jsfiddle.net/0nfbdrq1/show - person Kaiido   schedule 20.11.2018