μΉ νμ΄μ§μμ λͺ¨λ¬ μ°½μ λ§λ€ λ, κΈ΄ λ΄μ©μ΄ λ€μ΄κ°κ±°λ νλ©΄ ν¬κΈ°μ λ°λΌ μ½ν μΈ κ° μλμΌλ‘ μ€ν¬λ‘€λλλ‘ max-heightμ overflow-y: auto μμ±μ μ¬μ©νλ κ²½μ°κ° λ§λ€.
νμ§λ§ μ΄λ κ² μ€μ νλ©΄ λͺ¨λ¬ μ°½ λ΄λΆμ μμλ€μ΄ μλμΉ μκ² ν¬κΈ°κ° μ€μ΄λλ κ²½μ°κ° λ°μν μ μλ€.
μ΄ κΈμμλ μ΄λ° νμμ ν΄κ²°νλ λ°©λ²κ³Ό CSS flex-shrink μμ±μ μ¬μ©ν΄ λ²νΌ ν¬κΈ°λ₯Ό μμ μ μΌλ‘ μ μ§νλ λ°©λ²μ μκ°νλ €κ³ νλ€!
λͺ¨λ¬ μ°½μ λμμΈνλ©΄μ μλμ κ°μ μ€νμΌμ μ μ©νλ€:
.modal {
display: none;
position: fixed;
z-index: 1001;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.4);
}
.modal-content {
background-color: #fefefe;
padding: 20px;
border: 1px solid #888;
max-width: 450px;
max-height: 700px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
align-items: center;
overflow-y: auto;
}
<div class="modal" style="display: block;">
<div class="modal-content">
<p>λͺ¨λ¬μ λν λ΄μ©</p>
<button class="confirm-btn primary-bg white-color">νμΈ</button>
</div>
</div>
μ¬κΈ°μ max-heightμ overflow-y: autoλ₯Ό μ¬μ©ν΄ λͺ¨λ¬ μ°½μ κΈΈμ΄κ° μ΅λμΉλ₯Ό λμΌλ©΄ μ€ν¬λ‘€μ΄ μκΈ°λλ‘ νλ€.
κ·Όβλ°βλ°β
μ΄ μ€μ κ³Ό ν¨κ» display: flex μμ±μ μ¬μ©νλ λ΄λΆ λ²νΌμ ν¬κΈ°κ° μλμΉ μκ² μ€μ΄λ€μλ€.
flex-shrinkλ?
μ°Ύμ보λκΉ flex-shrink μμ±μ κΈ°λ³Έκ°μ΄ 1λ‘ μ€μ λμ΄ μμ΄, μ΄ κ°μ΄ μ μ©λ μμλ 곡κ°μ΄ λΆμ‘±ν λ ν¬κΈ°κ° μ€μ΄λλ νΉμ±μ΄ μμλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄, .confirm-btn ν΄λμ€μ flex-shrink: 0; μμ±μ μΆκ°ν΄ λ²νΌμ΄ μ€μ΄λ€μ§ μλλ‘ μ€μ νλ€
flex-shrink: 0; μμμ ν¬κΈ°κ° μ λ μ€μ΄λ€μ§ μμ
flex-shrink: 1; λΆλͺ¨ μμμ 곡κ°μ΄ λΆμ‘±ν λ λΉμ¨μ λ§κ² ν¬κΈ°κ° μ€μ΄λ¦
flex-shrink: n; 1λ³΄λ€ ν¬κΈ°κ° λ μ€μ΄λ¦
.confirm-btn {
width: 100px;
height: 36px;
padding: 0px;
margin: 15px;
border: 1px solid #999999;
cursor: pointer;
font-size: 14px;
flex-shrink: 0; /* ν¬κΈ° μ€μ΄λ€μ§ μλλ‘ μ€μ */
}
μ΄λ κ² μ€μ ν κ²°κ³Ό, λͺ¨λ¬ μ°½μ λ΄λΆ μ€ν¬λ‘€κ³Ό μκ΄μμ΄ λ²νΌμ ν¬κΈ°κ° μλν λλ‘ μ μ§λμλ€.