• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

흠..

21.03.03 10:25 작성 조회수 162

0

2:34초 쯤에

ballElem.style.transform = 'translate( )';

이전에 style 객체는 css를 관장하는 객체이라고 하셔서

이 뒤에 background-color도 들어올 수 있고

지금 처럼 transform이 들어올 수 있다는 것은 알겠어요.

그런데 translate( ) 괄호안에서

0px, 0px을 분리해서

' + 0 + ' +px, 이렇게 분리하는게 더 보기 편한데

'px이게 하나의 문자처럼 보이고 헷갈리네요.

왜 이 아이는 '랑 붙여줬나요?

강의에서는 문자열을 분리했다고 했는데

문자열이 ' ' 안에 들어가는 아이인거고

조금 자세하게 설명 부탁드려요..

그리고 구지 +로 나눠줘야하는 이유가 있을까요?

그냥 (e.clientX, e.clientY)로 넣어주면 안되나..

답변 2

·

답변을 작성해보세요.

1

ballElem.style.transform = `translate(${e.clientX}px, ${e.clientY}px)`; 

이렇게 변수 부분만 ${} 안에 넣어주세요~

1

px은 변수가 아니라 문자열이기 때문에
언급하신 ' + 0 + ' +px, 이런 식의 표기는 문법 오류가 납니다.
문자열이기 때문에 따옴표로 묶어서 표현해주어야 하는 것이지요~

예를 들어, 숫자 100문자열 px를 연결한다고 한다면

변수(또는 수) + '문자'
100 + 'px'
이렇게 +로 연결해 주었다고 생각하면 됩니다.

또는 ES6의 템플릿 문자열 형태로, 따옴표 대신 백틱(`)을 사용해서
`${100}px`
이런 식으로 할 수도 있고요. 변수나 숫자값만 ${}안에 넣으면 됩니다.
다만 이 방식은 IE는 지원하지 않고요.

transform의 translate는 CSS 규칙상 단위가 함께 들어가야하기 때문에
translate(e.clientX, e.clientY) 처럼 표시하면 동작하지 않습니다.

AirDream님의 프로필

AirDream

질문자

2021.03.05

그럼 말씀하신대로 하면

ballElem.style.transform = 'translate(' + e.clientX +'px, ' + e.clientY + 'px)';를

ballElem.style.transform = translate`${ e.clientX, e.clientY}`; 이렇게 쓰면 되나요?