Вертикальная прокрутка в гибком контейнере - PullRequest
0 голосов
/ 13 апреля 2019

Я пытался.добиться вертикальной прокрутки за два дня, пока я изучаю разработку внешнего интерфейса.(и я использую React для этого, пожалуйста, прости мой синтаксис)

У меня есть 3 основные части, которыми я хочу заполнить свое окно просмотра:

  • Навигация: распространеннаязаголовок для приложения

  • Содержимое слева: что-то фиксированного размера, поэтому я могу программно прокручивать его содержимое

  • Содержимое справа: Aвертикально прокручивающаяся панель с содержимым, заключенным в строку

Но проблема в том, что всякий раз, когда высота правого содержимого увеличивается из-за переноса строки, <div id="right-side"> также увеличиваетсяв рост, несмотря на то, что я дал ему высоту 100% от его родителяЭто увеличение высоты также влияет на <div id="main-view"> и приводит не только к прокрутке всей страницы, но и к увеличению высоты <div id="left-side">, которая обрезает часть его содержимого.

Вот мой код, который не работает

<div id="app" style={{height: '100%', display: 'flex', flexFlow: 'column'}}>   

    <div id="navigation-bar" style={{height: '50px', backgroundColor: '#ddddff', display: 'flex', alignItems: 'center'}}>
        Navigation
    </div>

    <div id="main-view" style={{flex: 1, display: 'flex', flexFlow: 'row wrap'}}>

        <div id="left-side" style={{flex: 3, display: 'flex'}}>
            <div id="should-not-expand" style={{flex: 1, backgroundColor: '#dddddd'}} />
        </div>

        <div id="right-side" style={{flex: 2, display: 'flex', height: '100%', maxHeight: '100%', minHeight: '100%'}}>
            <div id="should-vertically-scroll" style={{flex: 1, backgroundColor: '#ffdddd', display: 'flex', flexFlow: 'column', overflowY: 'scroll'}}>

                <div id="heading" style={{margin: '30px 30px 0 30px', backgroundColor: '#ddffdd'}}>
                    Header
                </div>

                <div id="expandable-height" style={{margin: '25px', display: 'flex', flexFlow: 'row wrap'}}>
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                    <div style={{margin: '5px', height: '150px', width: '200px', backgroundColor: '#fff'}} />
                </div>

            </div>
        </div>
    </div>
</div>

То, что я пробовал

По какой-то причине я пытался дать <div id="expandable-height"> фиксированную высоту 0px,И это заставило свитки содержаться в правой части.Однако этот обходной путь казался плохим решением, поскольку я не смог бы разместить нижний колонтитул после <div id="expandable-height">, он просто перекрывался бы с содержимым, заключенным в строки.

Это был бы бесценный урок для изучениячто происходит, и что возможно, а что нет.Я очень ценю ваше время и внимание!Заранее спасибо!

РЕДАКТИРОВАТЬ

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <meta name="theme-color" content="#000000" />
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
</head>

<body>
    <div id="root" />
</body>

</html>

index.css

html, body {
    margin: 0;
    padding: 0;
    height: 100%;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

#root {
    height: 100%;
}

code {
    font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
}

index.tsx

// imports

ReactDOM.render((
    <Provider store={store}>
        <BrowserRouter>
            <App />
        </BrowserRouter>
    </Provider>
), document.getElementById('root')!);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...