728x90
🖱 마우스 이펙트 : 텍스트 효과
📌 이번 마우스 이펙트는 마우스를 텍스트에 가져다다 놓았을 때 텍스트는 줄마다 서로 반대방향으로 길어지고, 마우스는 반전효과가 나타나도록 하는 이펙트입니다.
마우스 이펙트 완성본⭐️
➰ HTML
∙ mouse__textd에 line에 left와 right를 설정해줍니다. 나중에 글씨가 반대방향으로 가게 하기 위함입니다.
<header id="header">
<h1><a href="mouseEffect.html">Javascript Mouse Effect06</a></h1>
<p>마우스 이펙트 - 텍스트 효과</p>
<ul class="active1">
<li><a href="mouseEffect01.html">1</a></li>
<li><a href="mouseEffect02.html">2</a></li>
<li><a href="mouseEffect03.html">3</a></li>
<li><a href="mouseEffect04.html">4</a></li>
<li><a href="mouseEffect05.html">5</a></li>
<li class="active"><a href="mouseEffect06.html">6</a></li>
<li><a href="mouseEffect07.html">7</a></li>
</ul>
</header>
<!-- //header -->
<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_bg08.jpg" alt="">
</figure>
</div>
<div class="mouse__text">
<div class="line">
<div class="left">
<div class="spanWrap">
<div class="spanSlow">Pain Past</div>
</div>
</div>
<div class="right">
<div class="spanWrap">
<div class="spanSlow">Pain Past</div>
</div>
</div>
</div>
<div class="line">
<div class="left">
<div class="spanWrap">
<div class="spanFast">is pleasure.</div>
</div>
</div>
<div class="right">
<div class="spanWrap">
<div class="spanFast">is pleasure.</div>
</div>
</div>
</div>
<div class="line">
<div class="left">
<div class="spanWrap">
<div class="spanSlow">지나간 고통은</div>
</div>
</div>
<div class="right">
<div class="spanWrap">
<div class="spanSlow">지나간 고통은</div>
</div>
</div>
</div>
<div class="line">
<div class="left">
<div class="spanWrap">
<div class="spanFast">쾌락이다.</div>
</div>
</div>
<div class="right">
<div class="spanWrap">
<div class="spanFast">쾌락이다.</div>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
➰ CSS
마우스 반전 효과 :
mix-blend-mode: difference;
/* 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: orange;
overflow: hidden;
/* skew:기울기 */
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;
mix-blend-mode: difference;
}
➰ JS
주석을 참고해주세요!
const mouseMove = (e) => {
// 반 값 빼주고 현재위치값 빼주면 가운데 정렬
let positionSlow = (e.pageX - (window.innerWidth/2)) * 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);
//마우스 커서가 글씨 위에 올라가면 크기는 5배 정도 크게 작업 원5배크게...
const cursor = document.querySelector(".mouse__cursor")
document.querySelector(".mouse__text").addEventListener("mouseover", () => {
cursor.style.transform = "scale(5)"
})
document.querySelector(".mouse__text").addEventListener("mouseout", () => {
cursor.style.transform = "scale(1)"
});
'Effect(자바스크립트 활용) > Mouse Effect 마우스이펙트' 카테고리의 다른 글
"마우스이펙트 05" : 기울기 효과 / 글씨 반전 효과 (7) | 2022.09.28 |
---|---|
"마우스이펙트 04" : 이미지 효과 🏞 (3) | 2022.09.22 |
"마우스이펙트 03" : 조명 효과 💡 (2) | 2022.09.22 |
"마우스이펙트 02" : 커서 두 개를 통해 다양한 효과 내기 (4) | 2022.09.19 |
"마우스이펙트 01" : 커서에 다양한 효과 넣기 (1) | 2022.09.06 |
댓글