Как мне прокрутить переполненный дочерний элемент flexbox, когда мой курсор находится в любом месте моей веб-страницы?CSS

Разбираемся в CSS
Ответить Пред. темаСлед. тема
Anonymous
 Как мне прокрутить переполненный дочерний элемент flexbox, когда мой курсор находится в любом месте моей веб-страницы?

Сообщение Anonymous »

Я пытаюсь создать веб-сайт с портфолио веб-разработчика и работаю над макетом, в котором мое тело представляет собой флексбокс с двумя основными элементами:
< ul>
[*]Слева: основная панель навигации

[*]Вкл. справа — окно содержимого с идентификаторами разделов, привязанными к панели навигации.


Что работает. Поле содержимого выходит за пределы родительского контейнера по желанию, и я могу плавно прокручивать содержимое с помощью колеса прокрутки, если курсор находится над полем содержимого. При включенной плавной прокрутке я могу нажимать на идентификаторы на панели навигации и плавно переходить к соответствующим разделам.
Моя проблема: мне нужен >окно содержимого для прокрутки при перемещении колеса прокрутки, независимо от того, где находится курсор на веб-странице – например. на панели навигации, на полях — в отличие от прокрутки, только если курсор находится в поле содержимого. После включения я хочу сохранить плавную прокрутку для щелчков по панели навигации и прокрутки колеса прокрутки.
Я надеюсь, что кто-нибудь поможет мне разобраться с этим, поскольку, к сожалению, у меня нет идей! Такое ощущение, что здесь может быть простое решение, которого я пока не вижу. : )
Что я пробовал:
Я пытался добавить прослушиватели событий в элемент поля содержимого, чтобы 1) предотвратить прокрутка по умолчанию и 2) принудительно прокручивать поле содержимого независимо от того, где находится курсор. Хотя это позволяет мне прокручивать поле содержимого с помощью курсора за пределами поля содержимого по желанию и обеспечивает плавную прокрутку для щелчков панели навигации, я теряю плавную прокрутку при прокрутке колеса прокрутки, что нежелательно.
Я ожидал, что смогу прокручивать окно содержимого откуда угодно и поддерживать плавную прокрутку как для щелчков по панели навигации, так и для прокрутки колеса прокрутки.
Я включил ошибочный скрипт ниже, чтобы вы могли понять, что я имею в виду. Я попытался принудительно перенести события колеса в раздел прокрутки. Это успешно заставляет раздел прокрутки прокручиваться, когда курсор находится не в разделе прокрутки (например, на панели навигации), но прокрутки очень разрозненные и неплавные, что приводит к очень плохому пользовательскому интерфейсу.

Код: Выделить всё

let mainContent = document.querySelector('.scrollSection');

function preventDefaultScroll(event) {
event.preventDefault();
}

function enableFlexScroll(event) {
mainContent.scrollTop += event.deltaY;
}

document.addEventListener('wheel', preventDefaultScroll, {
passive: false
});
document.addEventListener('wheel', enableFlexScroll, {
passive: false
});

Код: Выделить всё

/* Flex container */

body {
display: flex;
height: 100vh;
margin: 0 10%;
overflow: hidden;
}

/* LHS Navigation */

.staticSection {
width: 25%;
background-color: antiquewhite;
}

/* RHS Scrolling Content */

.scrollSection {
width: 75%;
overflow-y: auto;
scroll-behavior: smooth;
}

#about,
#experience,
#projects {
height: 500px;
background-color: darkgray;
}

Код: Выделить всё


[list]
[*][url=#about]ABOUT[/url]
[*][url=#experience]EXPERIENCE[/url]
[*][url=#projects]PROJECTS[/url]
[/list]



About

Experience

Projects




Подробнее здесь: https://stackoverflow.com/questions/787 ... where-on-m
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «CSS»