๋ชฉ์ฐจ
โ ์ธ๋ค์ผ ์ด๋ฏธ์ง ๋น์จ ์ ์ง ์์ญ์ ๊ฝ ์ฐจ๊ฒ ์ด๋ฏธ์ง ์๋ฅด๊ธฐ ํ ํ ๊ฐ์ด๋ฐ ์ ๋ ฌ CSS ๋ฐ jQuery ๊ฐ๋ก์ธ๋ก ๋น์จ
์น์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๋ฉด์ ์ด๋ฏธ์ง์ ๋น์จ์ด๋ ํฌ๊ธฐ๋ฅผ ๋ง์ถ๋ ๊ฒ์ ์ค์ํ ์์ ์ค ํ๋์ ๋๋ค. ํนํ, ์ธ๋ค์ผ์ด๋ ๋ํ ์ด๋ฏธ์ง์ ๊ฐ์ ๊ณ ์ ๋ ์์ญ์ ๋ค์ํ ํฌ๊ธฐ์ ๋น์จ์ ์ด๋ฏธ์ง๋ฅผ ํ์ํด์ผ ํ ๋, ๊ทธ ์ด๋ฏธ์ง๋ฅผ ์์ญ์ ๊ฝ ์ฐจ๊ฒ ๋ณด์ฌ์ฃผ๋ฉด์๋ ๋์น๋ ๋ถ๋ถ์ ์๋ผ๋ด์ผ ํ ํ์๊ฐ ์์ต๋๋ค.
์ด๋ฏธ์ง์ ๊ฐ๋ก์ ์ธ๋ก ๋น์จ์ ๊ณ ์ ๋ ์์ญ์ ๋ง์ถ๋ ค๋ฉด, ์๋ฒ์์ ์ด๋ฏธ์ง๋ฅผ ์๋ผ๋ด๊ฑฐ๋ ๋ฆฌ์ฌ์ด์งํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์๋ณธ ์ด๋ฏธ์ง์ ํ์ง์ ์์์ํฌ ์ ์๊ธฐ ๋๋ฌธ์, CSS๋ jQuery๋ฅผ ํ์ฉํ์ฌ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋๋ก ์ ์งํ๋ฉด์๋ ์ํ๋ ๋น์จ์ ๋ง๊ฒ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํฉ๋๋ค.
CSS๋ฅผ ํ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋จผ์ , ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ๋ ์ธ๋ถ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ณ , ์ด ์ปจํ
์ด๋์ ๋น์จ์ ์ ํด์ค๋๋ค. ์๋ฅผ ๋ค์ด 16:9 ๋น์จ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ถ๋ค๋ฉด, ์ปจํ
์ด๋์ padding-top
๊ฐ์ 56.25%
๋ก ์ค์ ํฉ๋๋ค. ๊ทธ ๋ค์, ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ธฐ ์ํด position: absolute
์ transform
์์ฑ์ ์ฌ์ฉํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์ด๋ฏธ์ง์ ๊ฐ๋ก๋ ์ธ๋ก ์ค ์งง์ ๋ณ์ ๊ธธ์ด๋ฅผ 100%๋ก ์ค์ ํ์ฌ ์ด๋ฏธ์ง๊ฐ ์ปจํ
์ด๋์ ๊ฝ ์ฐจ๊ฒ ๋ณด์ด๋๋ก ํฉ๋๋ค.
jQuery๋ฅผ ํ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด๋ฏธ์ง์ ๊ฐ๋ก์ ์ธ๋ก ์ค ์ด๋ ์ชฝ์ด ๋ ๊ธด์ง๋ฅผ ํ๋จํ๊ธฐ ์ํด์๋ JavaScript๋ jQuery์ ๋์์ด ํ์ํฉ๋๋ค. ์ด๋ฏธ์ง์ ๊ฐ๋ก์ ์ธ๋ก ๋น์จ์ ๋น๊ตํ์ฌ, ๊ฐ๋ก๊ฐ ๋ ๊ธด ์ด๋ฏธ์ง์๋ landscape
ํด๋์ค๋ฅผ, ์ธ๋ก๊ฐ ๋ ๊ธด ์ด๋ฏธ์ง์๋ portrait
ํด๋์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด, CSS์์ ํด๋น ํด๋์ค์ ๋ฐ๋ผ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
์ธ๋ค์ผ์ด๋ ๋ํ ์ด๋ฏธ์ง์ ๋น์จ์ ์ ์งํ๋ฉด์๋ ์๋ณธ ์ด๋ฏธ์ง์ ํ์ง์ ๊ทธ๋๋ก ์ ์งํ๋ ๊ฒ์ ์น ๊ฐ๋ฐ์์ ์ค์ํ ์์ ์ค ํ๋์ ๋๋ค. ์์์ ์ค๋ช ํ CSS์ jQuery๋ฅผ ํ์ฉํ ๋ฐฉ๋ฒ์ ํตํด ์ด ์์ ์ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
css
.featImgWrap {
width: 380px;
}
.featImgWrap {
position: relative;
padding-top: 56.57%;
/* 16:9 ratio */
overflow: hidden;
}
.featImgWrap .featImage {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
-webkit-transform: translate(50%, 50%);
-ms-transform: translate(50%, 50%);
transform: translate(50%, 50%);
}
.featImgWrap .featImage img {
position: absolute;
top: 0;
left: 0;
max-width: 100%;
height: auto;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.featImgWrap .featImage img.landscape {
max-height: 100%;
height: 100%;
max-width: none;
}
.featImgWrap .featImage img.portrait {
max-width: 100%;
width: 100%;
max-height: none;
}
jquery
$(document).ready(function () {
// feat image ratio size
$('.featImage > img').each(function (index, item) {
if ($(this).height() / $(this).width() < 0.567) {
$(this).addClass('landscape').removeClass('portrait');
} else {
$(this).addClass('portrait').removeClass('landscape');
}
});
$('#programModalSummary').on('shown.bs.modal', function (e) {
$('#programModalSummary .featImage > img').each(function (index, item) {
if ($(this).height() / $(this).width() < 0.567) {
$(this).addClass('landscape').removeClass('portrait');
} else {
$(this).addClass('portrait').removeClass('landscape');
}
});
})
});
๋๊ธ