์ฐธ๊ณ ๋ก Vue.js์ ๋ํด์ ์ ๋ชจ๋ฆ
๋๋ค.
์๋ฌด๊ฑฐ๋ ๋ง ํด๋ณด๋ ์ค์ด๊ณ ์ณ์ ์ ๋ณด์ธ์ง ์ ๋ ๋ชจ๋ฆ ๋๋ค!
๋ ธ๋ ๋ฐฐ๊ฒฝ๊น์ง ๋ง๋ค์๋ค.
์ด๋ฒ์ ํ ์คํธ๋ฅผ
์ค์์ ๋ฐฐ์นํด๋ณด์!
1. ์ ์ฒด์ฝ๋
MainView.vue์ ํ ์คํธ๋ฅผ ๋ง๋ค์๋ค.
<script>
</script>
<template>
<div class="main-view">
<div class="hello-vue"><h1> Hello, Vue!! </h1></div>
</div>
</template>
<style scoped>
.main-view {
position: relative;
width: 100vw;
height: 100vh;
background-color: lemonchiffon;
}
.hello-vue {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: white;
color: olivedrab;
}
</style>
2. ํ ์คํธ ์ ๊ธฐ.
<template>
<div class="main-view">
<div class="hello-vue"><h1> Hello, Vue!! </h1></div>
</div>
</template>
main-view ์์ ์ ์๋ค. ๋ค์์ผ๋ก hello-vue ํด๋์ค์ ์คํ์ผ์ ์ ์ํ์.
(๋ณต์ต) main-view๋ width: 100vw;์ height: 100vh๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ฌ๊ธฐ์ vw์ vh๋ viewport width์ viewport height๋ก viewport๋ ํ๋ฉด Display์์ ํ์ ์์ญ์ ๋ปํ๋ค. ์ฆ, vw์ vh๋ ํ์ฌ ์คํ์ค์ธ ์คํฌ๋ฆฐ ํฌ๊ธฐ์ ๋ง์ถฐ ์๋์ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ค. 1vw์ 1vh๋ ์ ์ฒด ์คํฌ๋ฆฐ์ 100๋ถ์ 1์ด๋ค. ๊ทธ๋์ width: 1200px, height: 900px๋ฅผ ๊ฐ์ง๋ฉด 1vw์ 1vh๋ 12px์ 9px๊ฐ ๋๋ค.
<style scoped>
.main-view {
...
}
.hello-vue {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: white;
color: olivedrab;
}
</style>
position: fixed๋ก ์ง์ ํ์ฌ ๊ณ ์ ๋ฐฐ์น๋ฅผ ํด์คฌ๋ค. ๊ณ ์ ๋ฐฐ์น๋ ๋ถ๋ชจ ์์๋ก๋ถํฐ ์์ ํ ๋ ๋ฆฝ๋์ด ๋ค๋ฅธ ์์์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ํ๋ฉด์ ์ํ๋ ๊ณณ์ ๋ฐฐ์น๊ฐ๋ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์คํฌ๋กค๋ง์ ํด๋ ๊ณ ์ ์์๋ ์ง์ ๋ ์์น์ ์๋ค.
top: 50%๊ณผ left: 50%์ผ๋ก ์ ์ฒด ํ๋ฉด ๋น์จ ์ค ๋ฐ์ ์ ์๋ฏธํ์ฌ ์์์ ๋ฐ์ , ์ผ์ชฝ์์ ๋ฐ์ ์ ์์นํ ๊ณณ์ ๋ํ๋ธ๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ ์ ์ฉํด๋ณด๋ฉด ๊ฐ์ด๋ฐ์ ์ค์ง ์๋๋ค. ๊ทธ ์ด์ ๋ top: 50% left: 50%๋ก ๋ถ๋ชจ์ ๊ฐ์ด๋ฐ๋ฅผ ๋ฑ ์ฐ์ผ๋ฉด, ๋ฑ ์ฐ์ ์ง์ ์ ๋ด ์์์ ์ผ์ชฝ ์ ๋ชจ์๋ฆฌ๊ฐ ๋ฟ๋๋ค.
๊ทธ๋์ transform: translate(-50%, -50%);๋ก ๋ด ์์๋ฅผ ๋ณธ์ธ์ ํฌ๊ธฐ ๋ฐ์ ๋งํผ ์์ง์ฌ์ ์ ์ค์ ์ง์ ์ ๊ฒน์น๋๋ก ๋ง๋ ๋ค. transform์ ์์๋ฅผ ํ์ (rotate)ํ๊ฑฐ๋ ํฌ๊ธฐ๋ฅผ ์กฐ์ (scale)ํ๊ฑฐ๋ ์ด๋(translate) ๋ฑ ๋ณํํ๋๋ฐ ์ฌ์ฉํ๋ค. translate๋ transform ์์ฑ์ ํจ์ ์ค ํ๋๋ก x์ถ, y์ถ์ ์ํ๋ ๋งํผ ์ด๋์ํจ๋ค.
3. ๊ฒฐ๊ณผ
์๋์ ์ถ์ฒ๋ฅผ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค.
๋ธ๋ก๊ทธ์ ์ ๊ฐ ์ต๋ํ ์ดํดํ ๋ด์ฉ๊น์ง๋ง ์ ๋๊ฑฐ๋ผ
์ถ์ฒ์ ๋ค์ด๊ฐ์๋ฉด ๋ ๋ง์ ๋ด์ฉ์ด ์์ด ๊ณต๋ถํ์๋๋ฐ ๋์๋์ค๊ฒ๋๋ค.
๐ชฝ
ํ๋ฆฐ ๋ด์ฉ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์
CSS์ fixed position์ ํตํ HTML ์์์ ์์น ๊ณ ์
Engineering Blog by Dale Seo
www.daleseo.com
๊ฐ์ด๋ฐ ์ ๋ ฌ ์ต๊ฐ์ top:50% left:50% transform:translate(-50%,-50%)๐ฅฐ
์ค๋์ ์์ฃผ ์ ์ฉํ๊ฒ ์ฌ์ฉํ๋ ๊ฐ์ด๋ฐ ์ ๋ ฌ css๋ฌธ๋ฒ์ ์๊ฐํ๋ ค๊ณ ํ๋ค.top:50%;left:50%;transform:translate(-50%,-50%);์ ์ฝ๋์ฒ๋ผ transfrom์ translate๋ฅผ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํ ์ ์๋ค.
velog.io
[CSS] transform: translate(-50%, -50%);
top: 50%; left: 50%; transform: translate(-50%, -50%); ํํ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค. ๋ญ๊ฐ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ด๋ผ ํ๋ฉด ๋ญ๊ฐ ์ top: 50% left: 50%๋ง์ผ๋ก ๋ ๊ฒ ๊ฐ์ ๋ณด์๋ค. (์ ๋ชจ๋ฅด๋ ๋์ ๊ธฐ์ค์ผ๋ก ๋ดค์
cocoding420.tistory.com