Javascript 30 Day 16
Day 16 - Mouse Move Shadow
마우스 이동에 따라 텍스트에 그림자 효과 주기
완성본
🔥WOAH!
소스 코드
그림자의 방향을 정하는데 사용되는 것은 mouseOffset과 브라우저의 크기이다. 텍스트의 컨테이너에 mousemove
이벤트를 등록하고 ES6 destructuring을 사용해 깔끔하게 값을 구해온다.
1 | //destructuring |
여기서 if
문이 사용되는 이유는 컨테이너위에 childe element가 있는 경우 offsetX, offsetY를 콘솔에 찍어보면 알수있지만 child element의 위치가 반환되기 때문이다. this
는 항상 외부 컨테이너를 가리킬 것이다. 따라서 Event.target
과 this
가 다른 경우는 child element에 의해 이벤트가 호출된 것이라 반환된 offset에 child element와 컨테이너 사이의 왼쪽과 오른쪽 여백 만큼의 길이를 더해줘야 한다. (let
을 쓴 이유)
offset을 구했다면 이제 그림자의 크기를 결정해야 한다.
1 | const walk = 100; |
여기서 100
으로 설정했다는 것은 -50
부터 50
까지의 pixel 길이로 그림자 위치를 조정한다는 뜻이다.
1 | const xWalk = Math.round((x / width) * walk - walk / 2); |
마우스 위치 / 화면 크기
에 그림자 크기를 곱하면 0부터 100 까지의 수가 나온다. 필요한 값은 -50에서 50 까지의 값이므로 walk/2
를 빼준다. 여기서 구해진 값으로 텍스트의 그림자를 지정한다.
마무리
비율을 계산해 간단한 효과를 주는 기능을 잘 쓰면 정말 멋진 화면을 만들어 낼 수 있는 게 많은 것 같다. 간단 계산인데도 혼자 생각해내려고 하면 잘 안되고 결국 딱딱한 UI를 만들어내는 것 밖에 못하는 것 같다. 😅
이 블로그의 모든 글은 CC BY-NC-SA 4.0 라이선스를 따르며, 별도로 명시되지 않는 한 모든 권리를 보유합니다. 재배포 시 출처를 명시해 주세요: StudyYeong.