inflearn logo
강의

Course

Instructor

Interactive Web Development Know-How in a Few Lines [Beginner's Edition]

Smooth Movement Implementation 1 (requestAnimationFrame)

mouse position interpolation과 transition linear interpolation의 차이

Resolved

72

SuperDuper

2 asked

0

targetX += (x - targetX) * speed;
targetY += (y - targetY) * speed;

이 코드가 매번 마우스가 움직일 때마다 보간을 구하는 거라면,

 

JS에서는

box.style.top = pageY;
box.style.left = pageX;

이렇게 포지션만 잡아주고,

.box {
    transition: top second linear, left second linear;
}

css에서 transition에 각각 top, left에 linear를 주면,
targetX/Y의 선형보간이랑 css에서 transition 선형보간이랑 같은 거 아닌가요?


다르다면 어떤 부분이 다른지 알고 싶습니다!

javascript 인터랙티브-웹

Answer 1

0

coding11

안녕하세요 좋은 질문입니다.

실행 결과는 크게 다르지 않으나 코드 작성해서 비교 해보시면 느낌이 다르실거에요.

 

예제처럼 실시간으로 위치 값을 계산할때는 requestAnimationFrame을 이용한 계산이

60프레임 전부 사용할 수 있어서 움직임이 부드럽습니다.

 

물론 실무에서는 버튼 롤오버 등 다양한 곳에 transition 을 많이 사용하기는 합니다.

필요한 곳에 적절히 나눠서 사용하시면 되겠습니다. 두가지를 섞어도 사용하기도 합니다.

1

SuperDuper

답변 감사합니다.

어제 다시 공식에 대해서 다시 공부해 보니.

  const forceX = (mousePos.x - currentPos.x) * strength;
  const forceY = (mousePos.y - currentPos.y) * strength;

  const accelerateX = forceX / mass;
  const accelerateY = forceY / mass;

  velocity.x = velocity.x + accelerateX;
  velocity.y = velocity.y + accelerateY;

  velocity.x = velocity.x * damping;
  velocity.y = velocity.y * damping;

  currentPos.x = currentPos.x + velocity.x;
  currentPos.y = currentPos.y + velocity.y;

이와 같은 공식을 사용했을 땐, (미분, 후크 법칙,등)을 사용하여 최종 포지션만 알 수 있을 때, 사용하기 좋은 공식인 걸 알게 되었고, 추가적으로 strength, mass, damping을 사용해서 더 동적인 스프링같은 애니메이션이나 transition의 ease-out같은 애니메이션을 만들 수 있다는 걸 알게 되었습니다.

css의 transition같은 경우, 현재 위치, 최종 위치와 시간을 알게 되면 더 정확한 애니메이션을 구할 수 있다는 것도요.

실무에서는 더 정확한? 애니메이션을 위해서 transition(bezier curve)를 사용한 다는 것도 알게 되서 답변 감사합니다!

mousemove 시 따라 다니는 커서 이미지 wheel 할 경우

0

180

2

부드러운 움직임 구현1 강의 부분 질문있습니다.

0

147

2

go live 실시간 크롬

0

321

1

javascript 도움말 vsCode 확장팩 문의!

0

362

1

블로그 상단 페럴렉스 효과 구현 질문 있습니다!

0

356

1

마우스 인터렉티브 변형 질문

0

338

1

안녕하세요. 수업 잘 듣고 있습니다. 포트폴리오 관련 질문도 가능할까요?

0

397

1

나비가 버튼위로올라가면 버튼의 hover기능이 멈춰버려요

0

344

1

perspective에 대해서

0

285

1

CSS에서 궁금했던 부분 -실전 페럴렉스 강의 부분

0

480

1

requestAnimationFrame 질문

0

362

1

리뉴얼 이전 강의 파일

0

441

1

코드가 미리보기로 보여주는 확장프로그램이 뭔가요?

0

747

1

수업 파일 부탁드립니다~

0

323

1

배경질문

0

353

1

textWrap의 position을 relative로 주는 것에 대해 질문있습니다!

0

289

1

safari에서 position fixed가 잘 동작하지 않습니다

0

981

1

addEventListener후에 익명함수 실행할때 뒤에 false는 어떤 역할을 하는건가요?

0

556

1

스피드 변수로 scrollTop을 두는 이유가 무엇인가요?

0

363

1

완성파일 어디서 받아볼 수 있나요 ?

0

432

1

완성 파일 요청 드립니다.

0

301

1

사진들이 상단 nav바를 침범하는데 침범 못하게 어떻게해야할까요?

0

152

1

리액트로 하면 어떻게 해야할지 작성해주실수있나요?

0

365

1

리액트에서 똑같이 만든다면 어떻게 만들어야할까요?

0

376

3