728x90
마우스 효과06
자바스크립트를 이용하여 마우스 효과를 만들어 보겠습니다. 이번에는 텍스트 효과로, 마우스 방향에 따라 글씨가 좌, 우로 움직입니다. 또한, 텍스트에 마우스를 올렸을 때 커서가 확대되고 글씨가 반전되는 효과가 나타납니다.
자바스크립트
마우스 효과를 만들기 위한 자바스크립트 작성법입니다.
const mouseMove = (e) => {
let positionSlow = (e.pageX - (window.innerWidth / 2)) * 0.1; //가운데 정렬, * 0.1 은 이질감 효과
let positionFast = (e.pageX - (window.innerWidth / 2)) * 0.2; //속도조절
gsap.to(".spanSlow", { duration: 0.4, x: positionSlow });
gsap.to(".spanFast", { duration: 0.4, x: -positionFast });
gsap.to(".mouse__cursor", { duration: 0.3, left: e.pageX - 5, top: e.pageY - 5 });
}
window.addEventListener("mousemove", mouseMove);
const text = document.querySelectorAll(".spanWrap span"); //글씨
const cursor = document.querySelector(".mouse__cursor"); //마우스 커서
text.forEach(e => {
e.addEventListener("mouseenter", () => { //text에 마우스 올렸을 때
cursor.style.transform = "scale(5)"; //cursor가 5배 확대
cursor.style.mixBlendMode = "difference"; //글씨 반전 효과 추가
})
e.addEventListener("mouseleave", () => { //text에서 마우스를 떼면
cursor.style.transform = "scale(1)"; //cursor가 다시 원래크기로
cursor.style.mixBlendMode = "normal"; //글씨 반전 효과 제거
})
})
HTML
마우스 효과를 만들기 위한 html 작성법입니다.
<main id="main">
<section id="mouseType">
<div class="mouse__cursor"></div>
<div class="mouse__wrap">
<div class="mouse__img">
<figure>
<img src="../assets/img/effect_bg20@2x-min.jpg" alt="">
</figure>
</div>
<div class="mouse__text">
<div class="line">
<div class="left">
<div class="spanWrap">
<span class="spanSlow">The time</span>
</div>
</div>
<div class="right">
<div class="spanWrap">
<span class="spanSlow">The time</span>
</div>
</div>
</div>
<div class="line">
<div class="left">
<div class="spanWrap">
<span class="spanFast">never stops.</span>
</div>
</div>
<div class="right">
<div class="spanWrap">
<span class="spanFast">never stops.</span>
</div>
</div>
</div>
<div class="line">
<div class="left">
<div class="spanWrap">
<span class="spanSlow">시간은</span>
</div>
</div>
<div class="right">
<div class="spanWrap">
<span class="spanSlow">시간은</span>
</div>
</div>
</div>
<div class="line">
<div class="left">
<div class="spanWrap">
<span class="spanFast">멈추지 않고 간다.</span>
</div>
</div>
<div class="right">
<div class="spanWrap">
<span class="spanFast">멈추지 않고 간다.</span>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
CSS
마우스 효과를 만들기 위한 css 작성법입니다.
overflow: hidden => width값 반으로 정해서 나머지 반은 보이지 않게
transform: skew(0deg, -15deg) => 기울이기 효과
transform: skew(0deg, -15deg) => 기울이기 효과
/* mouseType */
.mouse__wrap {
color: #fff;
width: 100%;
height: 100vh;
cursor: none;
}
.mouse__img {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: -1;
}
.mouse__text {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -20%);
font-size: 3vw;
line-height: 1.5;
}
.mouse__text .line {
width: 100%;
display: flex;
}
.mouse__text .line .left {
width: 50vw;
color: #738dc5;
/* 반 안보이게 */
overflow: hidden;
/* 기울이기 */
transform: skew(0deg, -15deg);
}
.mouse__text .line .left .spanWrap {
width: 100vw;
text-align: center;
}
.mouse__text .line .right {
width: 50vw;
overflow: hidden;
transform: skew(0deg, 15deg);
}
.mouse__text .line .right .spanWrap {
width: 100vw;
text-align: center;
transform: translateX(-50vw);
}
.mouse__text span {
display: inline-block;
}
.mouse__cursor {
position: absolute;
left: 0;
top: 0;
width: 20px;
height: 20px;
z-index: 9999;
border-radius: 50%;
background-color: rgba(255, 255, 255, 0.9);
user-select: none;
pointer-events: none;
transition: transform 0.25s;
}
728x90
반응형
'JAVASCRIPT Effect' 카테고리의 다른 글
PARALLAX Effect 07 (3) | 2022.10.10 |
---|---|
PARALLAX Effect 06 (2) | 2022.09.29 |
SEARCH Effect 05 (2) | 2022.09.29 |
SEARCH Effect 04 (4) | 2022.09.28 |
Mouse Effect 05 (3) | 2022.09.28 |
댓글