메뉴 건너뛰기

2017.04.05 19:17

8장 실습문제 7번

조회 수 695 댓글 5

질문이 많아서 죄송합니다..

 

 

 

function change(obj){
    obj.style.transform="rotate("+n+"deg)";
    n+=90;

}

 

저는 코드를 이렇게 작성하였는데 (가독성을 위해 변수명칭은 동일하게 바꾸었습니다.)

function rotate(obj) {
    obj.style.transform = "rotate(" + n + "deg)";
    n += 90;
    n %= 360;
}

답안지에는

n%=360; 

코드가 포함되어있습니다.

 

제가 작성한 코드 역시 문제없이 잘 되는데

n%=360; 코드를 넣어둔 이유가 뭘까요 ?

 

 

?
  • profile
    관리자 2017.04.05 20:07

    ㅋㅋ아니에요 열공하시네요!

    우선 n %= 360의 의미를 생각해보자면 n을 360으로 나눈뒤 그 나머지를 n에 다시 대입한다는 뜻이죠.
    따라서 rotate() 메소드가 호출될 때마다 n에 90이 추가되다가, 360이 넘는 순간 다시 0부터 시작되게 됩니다. (0, 90, 180, 270, 0, 90, 180, 270, ...)

    이 부분이 없다면 n은 어떻게 될까요? 0부터 90씩 계속해서 증가하게 될 것입니다. (0, 90, 180, 270, 360, 450, ...)
    그런데 어짜피 360도는 한바퀴 돌리는 거랑 똑같으니까 450도나 90도나 똑같은 것 같죠? 굳이 n %= 360을 해주어야 하나 싶기도 하구요.

    결과만 보자면, 최종적으로 출력되는 모양은 동일합니다. 하지만 변환 과정에 조금 차이가 있습니다.
    브라우저는 회전 변환을 처리할 때, 입력된 각도를 모두 적용시킵니다. 즉 90도는 90도 만큼만, 450도는 한바퀴를 돌리고 다시 90도를 돌립니다.
    만약에 입력각도를 36000으로 주었다면 출력은 마치 회전이 없었던 것처럼 나타나게 되지만, 내부적으로 브라우저는 입력값인 36000을 처리하기 위해 100바퀴를 돌립니다.

    스타일시트에
    img {
    transition: transform 1s;
    }

    를 추가하셔서 결과를 확인해보시면 좀더 직관적으로 이해가 가능할 것 같습니다.
    파이팅!

  • ?
    은성 2017.04.05 22:10
    와 감사합니다!!
    확실히 눈으로 확인을 해보니까 이해가 되네요!
    나머지 값을 왜 대입시키는가 했는데
    내부적인 부분을 고려하지 못했습니다 ㅎㅎ..
    덕분에 쉽게이해했습니다!
  • ?
    . 2020.06.12 16:38
    혹시 n+=90이 무슨의미인가요? n=90으로 하면 실행이 되지 않아서요..
  • ?
    김사영 2020.06.12 17:21
    각도를 표현하는 'n'값에 90deg를 더한 값을 다시 대입하는 겁니다. 즉, 이미지의 회전 각도를 저장하고 있는 변수에 다음 회전할 각도를 저장하는 코드인거죠
  • ?
    성인 2021.11.05 00:21
    위의 문제에서 궁금한 점이 있는데 rotate(" + n + "deg)안에 " +n+의 의미가 무엇인지 궁금합니다.

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18304
402 span과 text-align : center; 에 관한 문제입니다. file 2019.10.15 279782
401 11장 6번 으엉 2019.11.27 187759
400 placeholder속성 1 khl 2017.04.08 85754
399 11장 6번 1 mj 2018.11.29 67615
398 실습문제 8-2 (3) 13412 2018.11.08 16527
397 웹 프로그래밍 책 답안지 1 mumu 2017.03.06 14076
396 살다 살다 답을 반쪽만 주는 책은 처음입니다 1 음음 2019.01.24 8848
395 Open Challenge 와 실습문제 자료 2 김원상 2017.04.29 7446
394 14장 예제 사라진 건가요 1 ... 2021.03.09 4078
393 localhost 관련 문의 3 소년정 2018.02.20 4041
392 페이지 247 에 있는 Open Challenge 05 의 CSS3로 태그 배치하기를 공부하고 있는데 질문드립니다. 1 file 워니고 2018.03.28 3879
391 ㅠㅠ..질문좀 드리겠습니다.. 1 은성 2017.04.18 3835
390 연습문제 답안지 2 vdncnck 2017.03.28 3267
389 짝수번 정답 3 idididid 2017.12.24 3139
388 8장 연습문제 실습문제 4장 2 student 2017.05.08 2873
387 10장 오픈챌린지 5 은성 2017.04.07 2247
386 open challenge 05 2 hardworking 2017.03.29 2225
385 5장 연습문제 홀수 번 질문 1 채XX 2019.06.17 1998
384 HTML을 열심히 공부중인 학생입니다 3 열심히 하자 2018.05.30 1962
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로