Utilizing CSS flexbox to create a scrollable main content area

I am working on a page layout with a header, sidebar, and main content. The layout is created using flexbox, but I want only the main content section to be scrollable.

* {
  box-sizing: border-box;
  margin: 0;
}

header {
  height: 30px;
  background: #000;
}

div {
  display: flex;
}

aside {
  width: 200px;
  background: red;
  height: calc(100vh - 30px);
  overflow: auto;
}

.main {
  flex: 1;
}
<main>
  <header>
    header
  </header>
  
  <div>
    
    <aside>Sidebar</aside>
    <section class="main">
      
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi ducimus odit optio dicta placeat dolore beatae dolorum quos corporis vitae aliquid enim cumque aperiam molestiae eligendi a omnis, magni sint!
      Voluptatum facere minima nulla atque quis, consequuntur minus excepturi! Id nesciunt ullam inventore commodi adipisci iure recusandae temporibus placeat perspiciatis consequuntur voluptatum ex, sint non cumque eos libero quis. Qui.
      Ea ut alias, quasi recusandae unde maiores reiciendis corrupti at natus eligendi et, quas adipisci consectetur iusto eum perspiciatis rem nesciunt illum magni incidunt cum aperiam quos ipsum! Officia, autem.
      Laudantium dolorem aliquid, distinctio possimus molestiae voluptates quis. Repudiandae eius id perferendis minima fugit quam, placeat saepe quae? Libero delectus corporis soluta debitis explicabo, rerum odit aliquam. Voluptatibus, delectus? Quia!
      Illo, quo excepturi eveniet sint veritatis et sunt voluptas? Autem recusandae dolores totam exercitationem distinctio minima, eaque soluta saepe sint blanditiis sequi deleniti quibusdam facere reprehenderit, debitis fuga quas suscipit!
      Temporibus, quam amet, ab modi assumenda minus esse, impedit vitae accusamus et ipsa! Amet quis cum labore minima corporis! Harum incidunt quae voluptas fugiat quod aut earum unde, reiciendis aspernatur.
      Magni sequi doloremque, facilis iste quasi sed repudiandae repellat cum voluptas repellendus beatae ullam asperiores voluptatem cupiditate voluptatibus architecto tempora deleniti aperiam mollitia sint praesentium in! Mollitia nemo modi perferendis!
      Architecto quos vel voluptate maxime iste quis impedit nam nostrum earum suscipit. A quidem repellendus exercitationem voluptatum magni facilis repellat impedit dignissimos adipisci quaerat non, doloremque laudantium neque, ipsum minima.
      Explicabo nobis fugit quaerat, deleniti fuga natus, architecto minima ipsam vitae dicta, beatae voluptatem. Numquam accusamus error ducimus ut culpa maiores eveniet necessitatibus. Quo autem recusandae praesentium officia dolorem pariatur?
      Deleniti voluptatem similique, rem qui exercitationem, aut fuga consequuntur pariatur quibusdam cupiditate amet vero et id hic recusandae nesciunt fugit. Doloribus est ducimus necessitatibus maiores expedita pariatur obcaecati omnis ut!
      Amet itaque ut sed? Hic facilis voluptatum nulla necessitatibus nihil optio distinctio rerum omnis temporibus vero similique repellendus eveniet in velit illo obcaecati repellat aliquid possimus aspernatur, quo libero molestias.
      Eaque sequi dolorum modi error cumque repellat excepturi sint, accusantium minima aspernatur quam quas expedita quae recusandae voluptatum nulla dolor ratione sit autem et perferendis. Laudantium sint est unde consectetur.
      Nostrum saepe inventore nam commodi provident, repellat praesentium molestias doloribus optio porro quibusdam est voluptates labore quod at soluta mollitia, placeat, aut eos excepturi maiores ab. Fugiat nemo facilis illo?
      Harum corporis inventore esse, tempora ipsum, sit necessitatibus eaque in mollitia voluptates dolorum doloremque natus ab. Quasi consequatur veniam voluptate obcaecati dolorem fuga omnis quibusdam numquam dignissimos et! A, rem.
      Dolorem nihil placeat non, est odio temporibus eum voluptate mollitia, reprehenderit rem vero officiis beatae consequuntur quos cupiditate nobis aliquid iure quidem ducimus impedit ex illo necessitatibus. Qui, magnam ea!
      Earum quae unde dolorem molestias at itaque magni doloremque consequuntur! Voluptatem odio dolorum, ea optio nihil deserunt eius tempore nisi. Doloremque reprehenderit non, harum eius commodi necessitatibus voluptas. Reiciendis, ratione?
      Omnis fugit dignissimos esse magni rem doloremque quisquam deleniti iusto ut impedit laudantium error ab earum minima qui culpa ipsa rerum, quam, perferendis veritatis! Ut voluptatum tempore asperiores expedita voluptate.
      Harum molestiae natus sapiente libero, voluptatum vero unde aut consequuntur tempore voluptatibus minima iure earum accusantium quaerat nesciunt dolorum fugiat repellat numquam et neque aliquam. Blanditiis modi illo facere autem?
      Aliquid ut nam laboriosam officia qui tempora pariatur delectus, consectetur sapiente ipsum hic ab alias? Numquam aut doloribus veritatis amet quos veniam eos. Quidem laborum qui exercitationem dignissimos eaque officiis?
      Fuga magni provident, excepturi, unde saepe architecto ad eum maxime amet nesciunt laudantium? Ea obcaecati reprehenderit cum sit suscipit minus dolore porro reiciendis dicta? Iusto officiis nam modi dolorem beatae.
    </section>
  </div>
</main>

Is there a way to achieve this?

Answer №1

Include this in your stylesheet

.main-container {
  display: flex;
  max-height: calc(100vh - 30px);
  overflow-y: auto;
}

Answer №2

One way to control overflow in CSS is by using the overflow Property

Let's take a look at an example:

body{
  overflow :hidden;
}
.main {
  flex: 1;
  overflow-y:scroll;
  height : 250px;
}

Answer №3

Feel free to test out the code snippet below.

* {
  box-sizing: border-box;
  margin: 0;
}

header {
  position: fixed;
  width: 100%;
  height: 30px;
  background: #777;
}

div {
  display: flex;
}

aside {
  position: fixed;
  margin-top: 30px;
  width: 200px;
  background: red;
  height: calc(100vh - 30px);
  overflow: auto;
}

.main {
  margin-top: 30px;
  margin-left: 200px;
  flex: 1;
}
<main>
  <header>
    header
  </header>
  
  <div>
    
    <aside>Sidebar</aside>
    <section class="main">
      
      Unique text goes hereLorem ipsum dolor sit amet consectetur adipisicing elit. Commodi ducimus odit optio dicta placeat dolore beatae dolorum quos corporis vitae aliquid enim cumque aperiam molestiae eligendi a omnis, magni sint!
      Voluptatum facere minima nulla atque quis, consequuntur minus excepturi! Id nesciunt ullam inventore commodi adipisci iure recusandae temporibus placeat perspiciatis consequuntur voluptatum ex, sint non cumque eos libero quis. Qui.
      Ea ut alias, quasi recusandae unde maiores reiciendis corrupti at natus eligendi et, quas adipisci consectetur iusto eum perspiciatis rem nesciunt illum magni incidunt cum aperiam quos ipsum! Officia, autem.
      Laudantium dolorem aliquid, distinctio possimus molestiae voluptates quis. Repudiandae eius id perferendis minima fugit quam, placeat saepe quae? Libero delectus corporis soluta debitis explicabo, rerum odit aliquam. Voluptatibus, delectus? Quia!
      Illo, quo excepturi eveniet sint veritatis et sunt voluptas? Autem recusandae dolores totam exercitationem distinctio minima, eaque soluta saepe sint blanditiis sequi deleniti quibusdam facere reprehenderit, debitis fuga quas suscipit!
      Temporibus, quam amet, ab modi assumenda minus esse, impedit vitae accusamus et ipsa! Amet quis cum labore minima corporis! Harum incidunt quae voluptas fugiat quod aut earum unde, reiciendis aspernatur.
      Magni sequi doloremque, facilis iste quasi sed repudiandae repellat cum voluptas repellendus beatae ullam asperiores voluptatem cupiditate voluptatibus architecto tempora deleniti aperiam mollitia sint praesentium in! Mollitia nemo modi perferendis!
      Architecto quos vel voluptate maxime iste quis impedit nam nostrum earum suscipit. A quidem repellendus exercitationem voluptatum magni facilis repellat impedit dignissimos adipisci quaerat non, doloremque laudantium neque, ipsum minima.
      Explicabo nobis fugit quaerat, deleniti fuga natus, architecto minima ipsam vitae dicta, beatae voluptatem. Numquam accusamus error ducimus ut culpa maiores eveniet necessitatibus. Quo autem recusandae praesentium officia dolorem pariatur?
      Deleniti voluptatem similique, rem qui exercitationem, aut fuga consequuntur pariatur quibusdam cupiditate amet vero et id hic recusandae nesciunt fugit. Doloribus est ducimus necessitatibus maiores expedita pariatur obcaecati omnis ut!
      Amet itaque ut sed? Hic facilis voluptatum nulla necessitatibus nihil optio distinctio rerum omnis temporibus vero similique repellendus eveniet in velit illo obcaecati repellat aliquid possimus aspernatur, quo libero molestias.
      Eaque sequi dolorum modi error cumque repellat excepturi sint, accusantium minima aspernatur quam quas expedita quae recusandae voluptatum nulla dolor ratione sit autem et perferendis. Laudantium sint est unde consectetur.
      Nostrum saepe inventore nam commodi provident, repellat praesentium molestias doloribus optio porro quibusdam est voluptates labore quod at soluta mollitia, placeat, aut eos excepturi maiores ab. Fugiat nemo facilis illo?
      Harum corporis inventore esse, tempora ipsum, sit necessitatibus eaque in mollitia voluptates dolorum doloremque natus ab. Quasi consequatur veniam voluptate obcaecati dolorem fuga omnis quibusdam numquam dignissimos et! A, rem.
      Dolorem nihil placeat non, est odio temporibus eum voluptate mollitia, reprehenderit rem vero officiis beatae consequuntur quos cupiditate nobis aliquid iure quidem ducimus impedit ex illo necessitatibus. Qui, magnam ea!
      Earum quae unde dolorem molestias at itaque magni doloremque consequuntur! Voluptatem odio dolorum, ea optio nihil deserunt eius tempore nisi. Doloremque reprehenderit non, harum eius commodi necessitatibus voluptas. Reiciendis, ratione?
      Omnis fugit dignissimos esse magni rem doloremque quisquam deleniti iusto ut impedit laudantium error ab earum minima qui culpa ipsa rerum, quam, perferendis veritatis! Ut voluptatum tempore asperiores expedita voluptate.
      Harum molestiae natus sapiente libero, voluptatum vero unde aut consequuntur tempore voluptatibus minima iure earum accusantium quaerat nesciunt dolorum fugiat repellat numquam et neque aliquam. Blanditiis modi illo facere autem?
      Aliquid ut nam laboriosam officia qui tempora pariatur delectus, consectetur sapiente ipsum hic ab alias? Numquam aut doloribus veritatis amet quos veniam eos. Quidem laborum qui exercitationem dignissimos eaque officiis?
      Fuga magni provident, excepturi, unde saepe architecto ad eum maxime amet nesciunt laudantium? Ea obcaecati reprehenderit cum sit suscipit minus dolore porro reiciendis dicta? Iusto officiis nam modi dolorem beatae.
    </section>
  </div>
</main>

Answer №4

Place your content within the p tags as shown below.

<main>
  <header>
    header
  </header>
  
  <div>
    
    <aside>Sidebar</aside>
    <section class="main">
      <p>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi ducimus odit optio dicta placeat dolore beatae dolorum quos corporis vitae aliquid enim cumque aperiam molestiae eligendi a omnis, magni sint!
      Voluptatum facere minima nulla atque quis, consequuntur minus excepturi! Nesciunt ullam inventore commodi adipisci iure recusandae temporibus placeat perspiciatis consequuntur voluptatum ex, sint non cumque eos libero quis. Qui.
      Ea ut alias, quasi recusandae unde maiores reiciendis corrupti at natus eligendi et, quas adipisci consectetur iusto eum perspiciatis rem nesciunt illum magni incidunt cum aperiam quos ipsum! Officia, autem.
      Laudantium dolorem aliquid, distinctio possimus molestiae voluptates quis. Repudiandae eius id perferendis minima fugit quam, placeat saepe quae? Libero delectus corporis soluta debitis explicabo rerum odit aliquam. Voluptatibus, delectus? Quia!
      Illo quo excepturi eveniet sint veritatis et sunt voluptas? Autem recusandae dolores totam exercitationem distinctio minima, eaque soluta saepe sint blanditiis sequi deleniti quibusdam facere reprehenderit, debitis fuga quas suscipit!
      Temporibus quam amet ab modi assumenda minus esse, impedit vitae accusamus et ipsa! Amet quis cum labore minima corporis! Harum incidunt quae voluptas fugiat quod aut earum unde, reiciendis aspernatur.
      Magni sequi doloremque facilis iste quasi sed repudiandae repellat cum voluptas repellendus beatae ullam asperiores voluptatem cupiditate voluptatibus architecto tempora deleniti aperiam mollitia sint praesentium in! Mollitia nemo modi perferendis!
      Architecto quos vel voluptate maxime iste quis impedit nam nostrum earum suscipit. A quidem repellendus exercitationem voluptatum magni facilis repellat impedit dignissimos adipisci quaerat non doloremque laudantium neque ipsum minima.
      Explicabo nobis fugit quaerat deleniti fuga natus architecto minima ipsam vitae dicta beatae voluptatem. Numquam accusamus error ducimus ut culpa maiores eveniet necessitatibus. Quo autem recusandae praesentium officia dolorem pariatur?
      Deleniti voluptatem similique rem qui exercitationem aut fuga consequuntur pariatur quibusdam cupiditate amet vero et id hic recusandae nesciunt fugit. Doloribus est ducimus necessitatibus maiores expedita pariatur obcaecati omnis ut!
      Amet itaque ut sed? Hic facilis voluptatum nulla necessitatibus nihil optio distinctio rerum omnis temporibus vero similique repellendus eveniet in velit illo obcaecati repellato aliquid possimus aspernatur, quo libero molestias.
      Eaque sequi dolorum modi error cumque repellat excepturi sint accusantium minima aspernatur quam quas expedita quae recusandae voluptatum nulla dolor ratione sit autem et perferendis. Laudantium sint est unde consectetur.
      Nostrum saepe inventore nam commodi provident repellat praesentium molestias doloribus optio porro quibus dam est voluptates labore quod at soluta mollitia, placeat, aut eos exceptu ri maiores ab. Fugiat nemo facilis illo?
      Harum corporis inventore esse tempora ipsum sit necessitatibus eaque in mollitia voluptates dolorum doloremque natus ab. Quasi consequatur veniam voluptate obcaecati dolorem fuga omnis quibusdam numquam dignissimos et! A, rem.
      Dolorem nihil placeat non est odio temporibus eum voluptate mollitia reprehenderit rem vero offweizer beatae consequuntur quos cupiditate nobis aliquid iure quidem ducimus impedit ex illo necessitatibus. Qui, magnam ea!
      Earum quae unde dolorem molestias at itaque magni doloremque consequuntur! Voluptatem odio dolorum, ea optio nihil deserunt eius tempore nisi. Doloremque reprehenderit non harum eius commodi necessitatibus voluptas. Reiciendis, ratione?
      Omnis fugit dignissimos esse magni rem doloremque quisquam deleniti iusto ut impedit laudantium error ab earum minima qui culpa ipsa rerums quam, perferendis veritatis! Ut voluptatum tempore asperiores expedita voluptate.
      Harum molestiae natus sapiente libero, voluptatum vero unde aut consequuntur tempore voluptatibus minima iure earum accusantium quaerat nesciunt dolorum fugiat repellat numquam et neque aliquam. Blanditiis modi illo facere autem?
      Aliquid ut nam laboriosam officia qui tempora pariatur delectus, consectetur sapiente ipsum hic ab aliases? Numquam aut doloribus veritatis amet quos veniamo eos. Quidem laboroumi qui exercitationem dignissimos eaque officiis?
      Fuga magni provident except uri unde saepe architecto ad eum maxime amet nesciunt laudanters? Ea obcaecati reprehenderit cum sit-suscipital mensorm hippocration? Iustre officiians moisture-mods-dolerercim beaters.
      </p>
      
    ≪/Section>
  ≪/Div>
≪/Main>

For fixed height in p tag with overflow property set to scroll, use the following CSS:

p {
  overflow: scroll;
  height: 400px;
}

Answer №5

Include the following:

.container {
    width: calc(50vw - 20px);
    overflow: auto;
}

Answer №6

Using position sticky will ensure that the element stays fixed to the left side of the screen.

* {
  box-sizing: border-box;
  margin: 0;
}

header {
  height: 30px;
  background: #000;
}

div {
  width: 100%;
  display: flex;
  position: relative;
}

aside {
  width: 20%;
  background: red;
  height: calc(100vh - 30px);
  position: sticky;
  left: 0;
  top:0;
}

.main {
  flex:1;
    width: 70%;
}

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Intersecting table columns with a different data table

My task is to create a table with a column that contains another table, where I want the colors of each alternating row to be different. Please refer to the image below (ignore the "CharacterAgain" column). Below is an example of AngularJS code for the ta ...

Asymmetrical Edges for a Pair of Divisions

Is there a way to skew two divs without a white line in between, similar to this example: Desired outcome I have tried using a negative top margin, but it doesn't work well in responsive design. Current result Here is the code I am using: ... < ...

"Troubleshooting WordPress website: issues with CSS and images not

I recently developed a custom WordPress theme and everything was working perfectly on my local machine. However, when I moved the theme to the server, the CSS and images are not displaying properly. Strangely enough, when I checked the 'view source&ap ...

Change the color of the menu icon based on the specified HTML class or attribute

I'm trying to create a fixed menu that changes color depending on the background of different sections. Currently, I am using a data-color attribute but I am struggling with removing and adding the class to #open-button. Adding the class works fine, ...

CSS styling not rendering consistently across various web browsers

Hey everyone! I've encountered an issue with my webpage. Feel free to check out the code on my CodePen here. When I view this page on Safari, everything looks perfect. However, when I switch over to Chrome or Firefox, the layout is all messed up. Ele ...

Using jQuery.dataTables to choose all rows except the final column

I'm utilizing a table with jQuery.dataTables. I have a requirement to input dates in the last column. However, when I click to input a date, the row becomes deselected. The following code is meant for selecting all rows: Displayed below is the DataT ...

`Videos on youtube with elements overlapping each other`

Having an issue with YouTube videos where other elements (LayerSlider) are overlapping on top of them. You can see the problem by clicking on this link () and trying to make the video fullscreen. I found a similar issue mentioned in the following link: Y ...

What could be causing the black spaces to appear after my text in HTML?

I recently tried to implement text on an image following a tutorial I found at https://css-tricks.com/text-blocks-over-image/. Here is the code snippet I used: .image{ position: relative; } h2{ position:absolute; top: 200px; left: 200px; wi ...

Creating a clickable table cell in CSS that maintains vertical alignment of text within

Is there a way to make an entire table cell clickable while still vertically aligning the text inside it? One possible solution is to set the link to display:block and adjust the line height. However, this method may not work if the text spans two lines a ...

Is there a way to ensure that the text is positioned below the image with flexbox?

https://i.sstatic.net/c5xyr.png Is there a way to make the text fall underneath the image? I am familiar with using display: inline-block and float:left or float:right, but I am new to using flexbox. Can someone with more expertise help me solve this issu ...

Concealing a hyperlink within a DIV by removing or hiding it

I am looking to temporarily hide or remove a specific link (team.aspx) within a drop-down menu, with the intention of adding it back in later. Here is my current code: <div id="nav_menu"> <ul id="nav"> <li class="current"><a href= ...

Looking for a basic image/div slider that works smoothly with ie9?

Can anyone recommend a basic content slider that is compatible with IE9? ...

Unusual images emerge following certain elements in this unique gallery

Looking for some advice on my image gallery created using an ordered list. The issue I'm facing is that the images are not all the same size, causing the 4th and 7th images to disrupt the layout. I have come up with a solution by using: ...

Vacant area on the right side of the page

There seems to be an issue with the website where there is an empty space to the right, causing a horizontal scroll bar to appear at the bottom. Despite my efforts, I cannot seem to identify the root cause of this problem. While one solution would be to si ...

JQuery Mobile: Styling does not apply to dynamically populated Select elements

I've been struggling to apply jQuery Mobile styles to a select element that is dynamically filled. Even after attempting to add themes, manual styles, refreshing, $('.ui-page-active').trigger('create');, and more, I still can' ...

Prevent line breaks when using symbols like ":-)" in CSS/HTML5

I need to display strings containing smileys made of ascii characters such as :-) on a web page without them being split between two lines, especially when they are at the end of a line. Does anyone have a solution for ensuring that the smiley is always d ...

Is there a way to specify the dimensions of the canvas in my image editing software based on the user-input

Here is the code and link for my unique image editor. I would like to allow users to enter the desired width and height of the selection area. For example, if a user enters a width of 300 and height of 200, the selection size will adjust accordingly. Addit ...

Updating the style of different input elements using Angular's dynamic CSS properties

I am seeking guidance on the proper method for achieving a specific functionality. I have a set of buttons, and I would like the opacity of a button to increase when it is pressed. Here is the approach I have taken so far, but I have doubts about its eff ...

Trouble aligning div elements vertically within another div

Why aren't the divs inside #inner vertically aligning? It's important to note that I am using IE 8 and CSS, not CSS3, in case that matters. Here is my HTML: <div class="Content"> <div id="home"> <div id="inner"> ...

Expanding Side Panel feature in Bootstrap 4+

Attempting to create a collapsible sidebar using Bootstrap 4+. I managed to find code for Bootstrap 3.7.3 from here, but after converting it to Bootstrap 4+, the layout doesn't appear as intended. I'm not well-versed in HTML styling and would gre ...