Можно ли предотвратить прокрутку элемента по горизонтали, но разрешить прокрутку по вертикали вместе с остальным содержимым страницы?Это немного сложно описать, поэтому позвольте мне показать пример:
HTML:
<nav>Side Nav</nav>
<header>Header</header>
<main>
<h1>Main Content</h1>
<div class="wideContainer">
Some wide and tall container
</div>
</main>
CSS:
nav {
position: fixed;
width: 150px;
height: 100vh;
}
header {
height: 100px;
padding-left: 150px;
}
main {
padding-left: 150px;
}
.wideContainer {
width: 2000px;
height: 1000px;
}
https://jsfiddle.net/hg2zmu1o/7/
Как видите, левый столбец исправлен.Заголовок прокручивается при вертикальной прокрутке.Это правильно.Но когда в области main
есть какой-то широкий контент, он делает горизонтальную прокрутку страницы (что нормально).Однако при горизонтальной прокрутке заголовок также перемещается за боковой навигационный столбец.
Как сделать так, чтобы он оставался горизонтально?
Я пытался использовать position:sticky
, но безуспешно.
position: sticky;
left: 150px;
Имейте в виду, я не хочу делатьposition:fixed
на весь заголовок, потому что тогда он не будет прокручиваться вертикально с остальной частью страницы.
jsfiddle иллюстрирует проблему.
EDIT:
Найден этот пример , который демонстрирует поведение, за которым я следую.Он использует JS, чего я надеялся избежать.
$(window).scroll(function(){
$('#header').css({
'left': $(this).scrollLeft() + 15
//Why this 15, because in the CSS, we have set left 15, so as we scroll, we would want this to remain at 15px left
});
});
Если кто-нибудь знает, как этого добиться с помощью чистого CSS, дайте мне знать.В противном случае я могу пойти с этим тем временем.