π™Ώπš›πš˜πšπš›πšŠπš–πš–πš’πš—πš π™»πšŠπš—πšπšžπšŠπšπšŽ/π™²πš‚πš‚

[CSS] flex-shrinkλ₯Ό μ΄μš©ν•œ λͺ¨λ‹¬ λ²„νŠΌ 크기 μœ μ§€ 및 슀크둀 문제 ν•΄κ²°

ν•΄λ²„λ‹ˆ 2024. 11. 13. 08:50
λ°˜μ‘ν˜•

 

μ›Ή νŽ˜μ΄μ§€μ—μ„œ λͺ¨λ‹¬ 창을 λ§Œλ“€ λ•Œ, κΈ΄ λ‚΄μš©μ΄ λ“€μ–΄κ°€κ±°λ‚˜ ν™”λ©΄ 크기에 따라 μ½˜ν…μΈ κ°€ μžλ™μœΌλ‘œ μŠ€ν¬λ‘€λ˜λ„λ‘ 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; /* 크기 쀄어듀지 μ•Šλ„λ‘ μ„€μ • */
}

 

 

 

 

μ΄λ ‡κ²Œ μ„€μ •ν•œ κ²°κ³Ό, λͺ¨λ‹¬ 창의 λ‚΄λΆ€ 슀크둀과 상관없이 λ²„νŠΌμ˜ 크기가 μ˜λ„ν•œ λŒ€λ‘œ μœ μ§€λ˜μ—ˆλ‹€.

 

 

 

λ°˜μ‘ν˜•