Why does overflow:auto not work as expected?

I have an HTML where I can’t figure out how to tell the .modal-message div not to exceed its parent div .modal-container. The parent has a dynamic height set (80%) and I somehow have to make its child to fit into that. I don’t want to add overflow: auto to the parent, I only want the child being scrollable.

.content {
    width: 600px;
    margin: 0 auto;
    background: #ddd;
}

.wrapper {
    padding: 1rem;
    position: relative;
}

.modal {
    display: flex;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;

    align-items: center;
    justify-content: center;
}

.modal-container {
    max-width: 80%;
    max-height: 80%;
    /* overflow: auto; */ /* this I don't want to do */
}

.modal-header {
    padding: .1rem 1rem;
    background: #ccc;
}

.modal-message {
    /* max-height: 150px; */ /* this I can't do */
    padding: 1rem;
    background: #f1f1f1;
    overflow: auto;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
  <div class="content">
    <div class="wrapper">

      <div class="section">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
      </div>

      <div class="modal">
        <div class="modal-container">
          <div class="modal-header">
            <h4>Very important headline</h4>
          </div>
          <div class="modal-message">
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>          
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>          
          </div>
        </div>
      </div>

    </div>
  </div>

</body>
</html>

Has anybody any clue how to achieve this?

>Solution :

Make the modal container a flexbox container

.content {
  width: 600px;
  margin: 0 auto;
  background: #ddd;
}

.wrapper {
  padding: 1rem;
  position: relative;
}

.modal {
  display: flex;
  position: absolute;
  inset: 0;
  align-items: center;
  justify-content: center;
}

.modal-container {
  max-width: 80%;
  max-height: 80%;
  display: flex; /* added */
  flex-direction: column; /* added */
}

.modal-header {
  padding: .1rem 1rem;
  background: #ccc;
}

.modal-message {
  padding: 1rem;
  background: #f1f1f1;
  overflow: auto;
}
<div class="content">
    <div class="wrapper">

      <div class="section">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
      </div>

      <div class="modal">
        <div class="modal-container">
          <div class="modal-header">
            <h4>Very important headline</h4>
          </div>
          <div class="modal-message">
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque perferendis aut dolores quia soluta sequi eos, ad reiciendis ex modi voluptate dolore officiis sint est laboriosam aperiam exercitationem ipsam consequuntur.</p>
          </div>
        </div>
      </div>

    </div>
  </div>

Leave a Reply