calc(100vw - 100%)
можно вычислить ширину скроллбара (а если он не отображается, то будет 0). Идея: при помощи отрицательного margin-right увеличить ширину <html> на эту ширину. При этом появляется горизонтальная полоса прокрутки — ее скрываем.html {
overflow-x: hidden;
margin-right: calc(-1 * (100vw - 100%));
}
body {
overflow-y: visible;
}
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
// код для мобильных устройств
} else {
// код для обычных устройств
}