๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒต Vue.js

[Vue.js] transform: translate๋กœ ํ…์ŠคํŠธ ์ค‘์•™์— ๋ฐฐ์น˜ํ•˜๊ธฐ.

by ._.sori 2025. 7. 23.

 

 


์ฐธ๊ณ ๋กœ 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.  ๊ฒฐ๊ณผ

์™„์„ฑ!

 

 

 


 

 

์•„๋ž˜์— ์ถœ์ฒ˜๋ฅผ ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ธ”๋กœ๊ทธ์—” ์ œ๊ฐ€ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•œ ๋‚ด์šฉ๊นŒ์ง€๋งŒ ์ ๋Š”๊ฑฐ๋ผ
์ถœ์ฒ˜์— ๋“ค์–ด๊ฐ€์‹œ๋ฉด ๋” ๋งŽ์€ ๋‚ด์šฉ์ด ์žˆ์–ด ๊ณต๋ถ€ํ•˜์‹œ๋Š”๋ฐ ๋„์›€๋˜์‹ค๊ฒ๋‹ˆ๋‹ค.

 

๐Ÿชฝ

ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”

 


 

- fixed

 

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

 

 

 

- transform

 

[CSS] transform: translate(-50%, -50%);

top: 50%; left: 50%; transform: translate(-50%, -50%); ํ”ํžˆ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์„ ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ๋ญ”๊ฐ€ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์ด๋ผ ํ•˜๋ฉด ๋ญ”๊ฐ€ ์ € top: 50% left: 50%๋งŒ์œผ๋กœ ๋  ๊ฒƒ ๊ฐ™์•„ ๋ณด์˜€๋‹ค. (์ž˜ ๋ชจ๋ฅด๋Š” ๋‚˜์˜ ๊ธฐ์ค€์œผ๋กœ ๋ดค์„

cocoding420.tistory.com