일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 카카오톡알림설정 #카톡알림설정
- ThemeProvider
- todolist
- 요일구하는공식
- 프로그래머스
- fadeint
- 음악검색기능 #음악찾기기능 #음악찾기 #음악검색 #네이버음악검색 #다음음악검색 #멜론음악검색
- 숫자게임만들기
- 가장작은자연수
- 티스토리 #폰트변경 #꾸미기
- 자바스크립트
- 문자열다루기
- GIT
- React
- list추가하기
- 오류
- array #object #lodash #javascript
- hover효과
- 슬라이드다운
- 자바스크립트 #메뉴만들기
- 리액트
- 윈도우10캡쳐 #윈도우10캡처 #윈도우10스크린샷 #캡쳐하기 #캡처하기 #스크린샷찍기 #캡쳐지연 #스크린샷지연
- 네트워크 #5G안터질때 #4G로바꾸는법 #5G를4G로 #5G를LTE로 #갤럭시5G변경
- 동영상다운 #영상다운 #크롬웹스토어 #드래그되지않는 #클릭되지않는 #동영상
- 파비콘 #파비콘만들기 #포토샵파비콘
- 메뉴
- 요일구하기
- 좌우슬라이드
- fade-in
- darkmode
- Today
- Total
잿꽃's posting Garden
버튼 클릭하면 물결처럼 원이 나타나는 효과(리플효과) 본문
버튼 클릭하면 물결처럼 원이 나타나는 효과를 만들어 보았다.
이런 기능 진짜 해보고 싶었는데 마침 유튜브의 '맛있는코딩'님의 영상에 이런 내용이... 정말 취향저격 영상밖에 없다...
맛있는 코딩 yummy coding
HTML5, css, Javascript와 React.js기반의 다양하고 재미있는 프로젝트들을 연구하는 개발자입니다. 많은 분들께 영감을 주기 위해 노력하겠습니다.
www.youtube.com
원래 영상들 보면 배속해서 보는데 영상이 빨라서 정지 버튼 누르면서 보는 게 함정...
영상 보고 따라 만들어 봤는데 모르는 부분이 꽤 많았다. 사실 마우스에 대한 효과를 주는 것들을 배우지 않아서 대강 마우스의 x, y 값을 읽어와야 한다는 것만 알고 있기 때문에 공부의 필요성을 느끼긴 했다. 실제 실무에서 활용도가 어느 정도 될까 싶지만....
필요한 계산식
왜 이런 식이 나오는지는 영상에 잘 나와있다.
원의 반지름 : Math.sqrt(w^2 + h^2) left : (마우스 clientX - 버튼 왼쪽 여백 - 원의 반지름) / 버튼 가로 길이 * 100 % top : (마우스 clientY - 버튼 위쪽 여백 - 원의 반지름) / 버튼 높이 * 100 % |
getBoundingClientRect()
내장 객체를 이용하여 x, y, width, height를 비구조 할당으로 가져온다.

Element.getBoundingClientRect() - Web API | MDN (mozilla.org)
Element.getBoundingClientRect() - Web API | MDN
Element.getBoundingClientRect() 메서드는 엘리먼트의 크기와 뷰포트에 상대적인 위치 정보를 제공하는 DOMRect 객체를 반환합니다.
developer.mozilla.org
가져온 값을 원의 반지름 공식에 적용한다.
setProperty()
CSS의 속성을 변수처럼 선언할 수 있다.
javascript : setProperty('이름', 값)
css에 전달할 때 value값에 : var(이름)

CSSStyleDeclaration.setProperty() - 웹 API | 증권 시세 표시기 (mozilla.org)
CSSStyleDeclaration.setProperty() - Web APIs | MDN
The CSSStyleDeclaration.setProperty() method interface sets a new value for a property on a CSS style declaration object.
developer.mozilla.org
>> 이건 예시도 잘 되어있어서 여러 번 봐줄 필요가 있다.
clientX, clientY
이벤트를 매개변수로 e.clientX, e.clientY로 현재 요소 내의 마우스의 위치를 알 수 있다.
참고로 screenX, screenY로 스크린 기준으로 마우스 위치를 알 수 있다.

MouseEvent.clientX - Web API | MDN (mozilla.org)
MouseEvent.clientX - Web API | MDN
CSSOM 뷰 모듈에 의해 재정의된 이중 부동 소수점 값. 원래 이 속성은 긴 정수로 정의되었다. 자세한 내용은 "브라우저 호환성" 섹션을 참조하십시오.
developer.mozilla.org
setTimeout()
클릭할 때마다 효과를 나타내기 위한 setTimeout()
그전에 속성 값을 초기화하고 setTimeout()에서 속성 값을 넣어서 클릭할 때 초기화 > 실행이 가능하게 함
(setTimeout()을 이렇게도 쓸 수 있구먼...)
'WEB > JAVASCRIPT' 카테고리의 다른 글
임의의 년도의 1월 1일은 무슨 요일일까? (0) | 2022.05.21 |
---|---|
자바스크립트로 좌우 슬라이드 만들기 (0) | 2022.05.20 |
자바스크립트로 슬라이드 fade-in효과 만들기 (0) | 2022.05.19 |
자바스크립트로 메뉴 fade-in 효과 만들기 (0) | 2022.05.11 |
자바스크립트로 메뉴 dropdown - slidedown효과 만들기 (0) | 2022.05.10 |