728x90
마우스 이펙트 01
마우스의 위치를 알려주며, 특정 위치 위에 마우스를 hover 하였을 때 커서가 변화하는 이펙트를 제작하였습니다.
01. HTML
글귀에 마우스 포인터가 올라가 있을 때, 반응을 주기 위해 span으로 p 태그를 감쌌습니다.
<main id="main">
<section id="mouseType">
<div class="mouse__cursor"></div>
<div class="mouse__wrap">
<p class="Nix">Numbing the <span class="style1">pain</span> for a while will <span class="style2">make it worse</span> when you <span class="style3">finally feel it.</span> </p>
<p class="arir"><span class="style4">고통</span>을 잠시라도 <span class="style5">모른 척</span>하면, 나중에 정말 고통을 느낄 때 더 <span class="style6">악화되는 법</span>이란다.</p>
</div>
</section>
<div class="mouse__info">
<ul>
<li>clientX : <span class="clientX">0</span> px </li>
<li>clientY : <span class="clientY">0</span> px </li>
<li>offsetX : <span class="offsetX">0</span> px </li>
<li>offsetY : <span class="offsetY">0</span> px </li>
<li>pageX : <span class="pageX">0</span> px </li>
<li>pageY : <span class="pageY">0</span> px </li>
<li>screenX : <span class="screenX">0</span> px </li>
<li>screenY : <span class="screenY">0</span> px </li>
</ul>
</div>
</main>
02. javascript
clientX, clientY, offsetX, offsetY, pageX, pageY, screenX, screenY도 값을 나타 내주기 위해 표시를 해주며, style 표시가 된 단어는 반응을 해줄 수 있도록 만들었습니다.
window.addEventListener("mousemove",(event) => {
document.querySelector(".clientX").innerText = event.clientX
document.querySelector(".clientY").innerText = event.clientY
document.querySelector(".offsetX").innerText = event.offsetX
document.querySelector(".offsetY").innerText = event.offsetY
document.querySelector(".pageX").innerText = event.pageX
document.querySelector(".pageY").innerText = event.pageY
document.querySelector(".screenX").innerText = event.screenX
document.querySelector(".screenY").innerText = event.screenY
});
const cursor = document.querySelector(".mouse__cursor");
window.addEventListener("mousemove",(e) => {
cursor.style.left = e.clientX - 25 + "px" ;
cursor.style.top = e.clientY - 25 + "px";
});
//getAttribute
document.querySelectorAll(".mouse__wrap span").forEach((span)=>{
let attr = span.getAttribute("class")
span.addEventListener("mouseover", ()=>{
cursor.classList.add(attr);
});
span.addEventListener("mouseout", ()=>{
cursor.classList.remove(attr);
});
});
03. css
마우스에 올릴 때 애니메이션을 주며, 반응이 가능하도록 하였습니다.
.mouse__cursor {
position: absolute;
left: 0;
top: 0;
width: 50px;
height: 50px;
border-radius: 50%;
border: 3px solid #fff;
background-color: rgba(255,255,255,0.1);
user-select: none; /* 포인터로 선택할 수 없게 만듬 */
pointer-events: none;
transition:
background-color 0.3s,
border-color 0.3s,
transform 0.6s,
rotate 0.3s,
border-radius 0.3s ;
}
.mouse__cursor.style1 {
background-color: rgba(238, 43, 173, 0.199);
border-color: rgb(238, 43, 173);
}
.mouse__cursor.style2 {
background-color: rgba(68, 56, 180, 0.247);
border-color: rgb(68, 56, 180);
transform: scale(2) rotateX(720deg);
}
.mouse__cursor.style3 {
background-color: rgba(252, 217, 60, 0.219);
border-color: rgb(252, 217, 60);
transform: scale(1.5) rotateY(350deg);
}
.mouse__cursor.style4 {
background-color: rgba(94, 201, 250, 0.178);
border-color: rgb(94, 201, 250);
transform: scale(3) rotateX(720deg);
}
.mouse__cursor.style5 {
background-color: rgba(104, 241, 111, 0.192);
border-color: rgb(104, 241, 111);
transform: scale(2) rotate(720deg);
}
.mouse__cursor.style6 {
background-color: rgba(60, 105, 252, 0.171);
border-color: rgb(60, 105, 252);
border-radius: 0;
}
.mouse__info {
position: absolute;
left: 20px;
bottom: 10px;
font-size: 14px;
line-height: 1.6;
color: #fff;
margin-bottom: 10px;
}
728x90
'Effect' 카테고리의 다른 글
Parallax Effect 02 (10) | 2022.09.08 |
---|---|
Parallax Effect 01 (6) | 2022.09.06 |
이미지 슬라이드 유형 03 (5) | 2022.09.02 |
이미지 슬라이드 02 (4) | 2022.08.29 |
이미지 슬라이드 01 (2) | 2022.08.29 |
댓글