ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๋ก ํ์ฌ์์ caniuse์์ 95%์ด์ ์ง์๋๋ css์์ฑ๋ง ์ฌ์ฉํด์ผ ํ๋๋ฐ
asepct-ratio๋ 95%๊ฐ ๋์ง ์์ ์ฌ์ฉํ ์ ์์์ต๋๋ค๐ฅน
aspect-ratio์์ด ์ด๋ป๊ฒ ์์์ ๋น์จ์ ์ ์งํ ์ ์์๊น์?
๋ฐ๋ก padding-top(๋๋ padding-bottom)์ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค.
โญ๏ธ๊ธฐ๋ณธ์ ์ผ๋ก padding๊ฐ์ ๋ฐฑ๋ถ์จ์ ๋ถ๋ชจ ์์์ width๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ์ด ๋ฉ๋๋ค.โญ๏ธ
-> ์ปจํ ์ด๋๋ธ๋ก์ผ๋ก๋ถํฐ_๋ฐฑ๋ถ์จ_๊ณ์ฐํ๊ธฐ(MDN๋ฌธ์ ์ฐธ๊ณ )
์ด๋ฌํ ์ฑ์ง์ ์ด์ฉํด์ ๊ฐ๋จํ css ํธ๋ฆญ์ ๋ง๋ค ์ ์์ต๋๋ค.
See the Pen without aspect-ratio by JM K (@JM-K-the-selector) on CodePen.
<ul class="list">
<li class="card">
<div class="aspect-ratio-box">
<div class="aspect-ratio-box-inner">
์ด ์์๋ 16:9 ๋น์จ์
๋๋ค.
</div>
</div>
</li>
<li class="card">
<div class="aspect-ratio-box">
<div class="aspect-ratio-box-inner">
์ด ์์๋ 16:9 ๋น์จ์
๋๋ค.
</div>
</div>
</li>
<li class="card">
<div class="aspect-ratio-box">
<div class="aspect-ratio-box-inner">
์ด ์์๋ 16:9 ๋น์จ์
๋๋ค.
</div>
</div>
</li>
<li class="card">
<div class="aspect-ratio-box">
<div class="aspect-ratio-box-inner">
์ด ์์๋ 16:9 ๋น์จ์
๋๋ค.
</div>
</div>
</li>
</ul>
ul {
list-style: none;
}
.list {
width: 1920px;
height: 1000px;
background-color: skyblue;
display: flex;
justify-content: center;
gap: 10px;
padding: 20px;
}
.card {
flex: 1;
max-width: 300px;
}
.aspect-ratio-box {
/*
๋น์จ์ ๋ง์ถฐ์ฃผ๋ ์ฉ๋์ ๋ฐ์ค
padding์ ๋ถ๋ชจ ์์์ width๋ฅผ ๊ธฐ์ค์ผ๋ก %๊ฐ์ด ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์
padding-top๋ง์ ์ด์ฉํด์ ๋์ด๋ฅผ ์ก์์ค
16:9 = ๋๋น:๋์ด -> ๋๋น๊ฐ 100%์ผ ๋, ๋์ด๋ 56.25%
*/
position: relative;
width: 100%;
padding-top: 56.25%;
}
.aspect-ratio-box-inner {
/* ์ค์ ๋ก ์นด๋ ์์ ๋ค์ด๊ฐ ์์๋ ํด๋น ๋ฐ์ค์์ ์์ฑ */
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: lightblue;
}
'๐ป ํ๋ก ํธ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React Native - ์น๋ทฐ ํต์ ๊ตฌํ(TypeScript) (0) | 2024.01.27 |
---|---|
Next scss ์ ์ญ๋ณ์ ์ ์ฉํ๊ธฐ (0) | 2024.01.17 |
React Native ์น์์ผ ์ฑํ ๊ตฌํ (1) | 2024.01.10 |
CSS ์์ ์์๊ฐ focus ๋ ๋ ๋ถ๋ชจ ์์ ํจ๊ณผ ์ฃผ๊ธฐ (2) | 2024.01.08 |
React Native์ React ์ปดํฌ๋ํธ ์ฐจ์ด (2) | 2024.01.08 |