У меня проблема, которую я не знаю, как решить, надеюсь, кто-то здесь может пролить свет на нее.
У меня очень простой макет (JSBin) с горизонтально центрированным заголовком, некоторый контент для вертикальной прокрутки, липкий нижний колонтитул и меню навигации вне холста. Я хочу, чтобы пользователь не прокручивал страницу при открытии боковой панели, я делаю это, переключая класс в теге <html>
:
$('button').click(function () {
$('html').toggleClass('sidebar');
});
Класс .sidebar
переместит боковую панель в режим просмотра и отключит прокрутку содержимого:
html {
overflow-y: scroll; /* default state, always shows scrollbar */
}
html.sidebar {
overflow-y: hidden; /* hides scrollbar when .sidebar is on canvas */
}
html.sidebar aside {
-webkit-transform: translate3d(-100%, 0, 0); /* places .sidebar on canvas */
}
Проблема заключается в том, что он перемещает каждый элемент на странице по любой ширине полосы прокрутки <html>
.
Есть ли способ предотвратить этот сдвиг в позиции (желательно, не прибегая к Javascript)?
Здесь JSBin editor, если вам нужно заглянуть в код.
Обновление. Похоже, что Javascript не является опцией, вычисление ширины прокрутки не является надежным вообще.