$('.sc-visual').mousemove(function(e){
width = $(this).outerWidth()/2;
x = (e.clientX - width)/7
gsap.to('.image-area',{
x:x
})
})
๋ง์ฐ์ค์๋ฐ๋ผ ์ด๋ฏธ์ง๊ฐ ๋๋ฌด ๋ง์ด ์์ง์ฌ์ ์์ฐ์ค๋ฝ์ง ๋ชปํ๋ค..
width๊ฐ์ ๊ฐ์ ธ์ฌ ๋ outerWidth()์ 2๋ฅผ ๋๋ ์ค์ผ ์์์ด ์ค๊ฐ์ ์์ ๋ถํฐ ์์ํ ์ ์๊ณ ,
x์ขํ๋ clientX์์ width๊ฐ์ ๋นผ์ฃผ๋ฉด ๋ง์ฐ์ค๊ฐ ์ข์ฐ๋ก ์ด๋์ ์ค๊ฐ์ง์ ์์ ์ด๋ฏธ์ง๊ฐ width๊ฐ๋งํผ
์์ง์ด๋๊ฑธ ํ์ธ ํ ์ ์์๋ค.
์ด๋ ๋๋๋ ์์น๊ฐ ๋์์๋ก ํญ์ด ์ข์์ ธ์ ์ด๋ฏธ์ง๊ฐ ์กฐ๊ธ์ฉ ์์ง์ด๊ฒ ๋๋ค.
const aboutAni = gsap.timeline({
scrollTrigger:{
trigger: ".sc-about",
start: "top top",
end: "+=2000%",
scrub: 5,
pin: true,
},
})
aboutAni
.addLabel('a')
.to('.sc-about .txt-box1 .txt2.normal span',{yPercent:-100},'a')
.to('.sc-about .txt-box1 .txt2.revers span',{yPercent:100},'a')
.to('.sc-about .txt-box1 .txt3.normal span',{yPercent:-100},'a')
.to('.sc-about .txt-box1 .txt3.revers span',{yPercent:100},'a')
.to('.sc-about .txt-box1 p',{opacity:1, stagger:0.3})
.to('.sc-about .txt-box1 p',{opacity:0})
.to('.sc-about .txt-box2',{'visibility': 'visible', opacity:1})
.to('.sc-about .txt-box2 span',{opacity:1,yPercent:-100,stagger:0.2})
.to('.sc-about .txt-box2 span',{opacity:0.1})
.addLabel('b')
.to('.sc-about .watch-area',{yPercent: -100, opacity:1})
.to('.sc-about .watch-area .watch-box',{yPercent: -100, scale: 1, opacity:1,duration:2}, 'b+=1')
.to('.sc-about .watch-area .screen-item',{opacity:1,stagger:7}, 'b+=2')
.to('.sc-about .watch-area .title1 strong span',{yPercent: -100,opacity:1,stagger: 2, duration:2}, 'b+=3')
.to('.sc-about .watch-area .title1 strong span',{opacity:0}, 'b+=9')
.to('.sc-about .watch-area .title2 strong span',{yPercent: -100,opacity:1,stagger: 2, duration:2}, 'b+=10')
.to('.sc-about .watch-area .title2 strong span',{opacity:0}, 'b+=16')
.to('.sc-about .watch-area .title3 strong span',{yPercent: -100,opacity:1,stagger: 2, duration:2}, 'b+=17')
.to('.sc-about .watch-area .title3 strong span',{opacity:0}, 'b+=23')
.to('.sc-about .watch-area .watch-box',{yPercent: -100, opacity:0}, 'b+=24')
gsap.timeline์ ์์ฐจ์ ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ ์ฉ๋ ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค.
addLabel๋ฉ์๋๋ ํ๋๋ก ๋ฌถ์ ์ ์๊ณ ์๊ฐ์ฐจ๋ก ๋ค๋ฅธ ๋ชจ์
์ด ๋ํ๋๊ฒ ์กฐ์ ํ ์ ์๋ค.
scrub: ์คํฌ๋กค์์๋ ๊ฐ์ด ๋ฐ๋ผ ์์ง์ด๊ณ ์์น๊ฐ ๋์์๋ก ๋ถ๋๋ฝ๊ฒ ์ ์ฉ๋๋ค.
pin: trigger์์ญ์์ ๊ณ ์ ์์ผ์ฃผ๋ ์ญํ ์ ํ๋ค.
<section class="sc-quik-look">
<h2 class="headline">ํ๋์ ๋ณด๊ธฐ</h2>
<div class="group-look ultra">
<div class="img-area">
<p class="logo"><img src="./assets/images/logo-watch-ultra.png" alt="์ ํ์์น ์ธํธ๋ผ ๋ก๊ณ "></p>
<p class="watch-img"><img src="./assets/images/img-watch-ultra.png" alt="์ ํ์์น ์ธํธ๋ผ ์ด๋ฏธ์ง"></p>
</div>
<div class="feature-area">
<div class="feature-box">
<strong class="title">๊ฐ๋ ฅํ<br />๊ฑด๊ฐ ๊ธฐ๋ฅ.</strong>
<ul class="feature-list">
<li class="feature-item temperature">
<em>์๋กญ๊ฒ ์ ๋ณด์ด๋ โ์๋ชฉ ์จ๋ ๊ฐ์งโ ๊ธฐ๋ฅ.</em>
<p>ํ์ ์ ์ธ ์ ์ผ์๊ฐ ๋น์ ์ด ์๋ ๋์ ์๋ชฉ ์จ๋๋ฅผ ์ถ์ ํด์ค๋๋ค.</p>
</li>
<li class="feature-item sleep">
<em>์๋ฉด ์ถ์ .</em>
<p>๋น์ ์ ์๋ฉด ์ํ๋ฅผ ๊ธฐ๋กํด์ค๋๋ค. โREM ์๋ฉดโ, โ์ฝ์ด ์๋ฉดโ ๊ทธ๋ฆฌ๊ณ โ๊น์ ์๋ฉดโ์ ๊ฐ๊ฐ ์ผ๋ง๋ ๋จธ๋ฌด๋์ง๋ฅผ ํ์
ํ๊ณ , ์ธ์ ์ ์ ๊นฌ ๊ฒ์ผ๋ก ๋ณด์ด๋์ง ํ์ธํ ์ ์์ต๋๋ค.</p>
</li>
<li class="feature-item ecg">
<em>์ฌ์ ๋.</em>
<p>โ์ฌ์ ๋โ ์ฑ์ ์ ๊ธฐ ์ฌ๋ฐ ์ผ์๋ฅผ ์ฌ์ฉํด ์ฌ๋ฐ์์ ๋ฐ๋์ ๊ธฐ๋กํ ๋ค์, ๋ถ๊ท์นํ ์ฌ์ฅ ๋ฐ๋์ ์ผ์ข
์ธ ์ฌ์ฅ์ธ๋์ ํด๋นํ๋์ง๋ฅผ ํ๋ณํด ์ค ์ ์์ต๋๋ค.</p>
</li>
<li class="feature-item heart">
<em>๋ถ๊ท์นํ ์ฌ์ฅ ๋ฐ๋ ์๋ฆผ.</em>
<p>๋น์ ์์ ์ผ๋ก ๋๊ฑฐ๋ ๋ฎ์ ์ฌ๋ฐ์ ๋ฐ ๋ถ๊ท์นํ ์ฌ์ฅ ๋ฐ๋์ด ๋ณด์ด๋ฉด ์๋ฆผ์ ๋ณด๋ด์ค๋๋ค.</p>
</li>
<li class="feature-item oxygen">
<em>ํ์ค ์ฐ์.</em>
<p>ํ์ค ์ฐ์ ํฌํ๋๋ฅผ ์ธก์ ํด ๋น์ ์ ์ ๋ฐ์ ์ธ ๊ฑด๊ฐ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ค์ํ ์งํ์ ๋ํ ํต์ฐฐ์ ์ป์ ์ ์์ต๋๋ค.</p>
</li>
</ul>
</div>
<div class="feature-box">
<strong class="title">ํ์ ์ ์ธ<br />์์ ๊ธฐ๋ฅ.</strong>
<ul class="feature-list">
<li class="feature-item sos">
<em>์๋กญ๊ฒ ์ ๋ณด์ด๋ โ์ถฉ๋ ๊ฐ์งโ ๊ธฐ๋ฅ.</em>
<p>์๋ก ์ถ๊ฐ๋ ์ผ์์ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ๊ฐํ ์๋์ฐจ ์ถฉ๋ ๋ฐ์ ์ ์ด๋ฅผ ๊ฐ์งํ์ฌ ์๋์ผ๋ก ์๊ธ ์๋น์ค์ ์ฐ๋ฝํฉ๋๋ค. Apple Watch Ultra๊ฐ ์๊ธ์๋ฃ ์๋ด์์๊ฒ ๋น์ ์ ์์น๋ฅผ ์๋ ค์ฃผ๊ณ ๊ธด๊ธ ์ฐ๋ฝ์ฒ์ ์๋ฆผ๊น์ง ์ ์กํด์ฃผ์ฃ .ํ์ ์ ์ธ ์ ์ผ์๊ฐ ๋น์ ์ด ์๋ ๋์ ์๋ชฉ ์จ๋๋ฅผ ์ถ์ ํด์ค๋๋ค.</p>
</li>
<li class="feature-item fall">
<em>๋์ด์ง ๊ฐ์ง.</em>
<p>์ง์ ์์ ๋๋ ๋ฐ์ผ๋ก ๋ชจํ์ ๋ ๋ฌ์ ๋๋ , ๋์ด์ง์ด ๊ฐ์ง๋๊ณ ๋น์ ์ด ์๋ตํ์ง ์๋ ๊ฒฝ์ฐ ์๊ธ ์๋น์ค์ ์๋์ผ๋ก ์ ํ๋ฅผ ๊ฑธ์ด์ค๋๋ค.</p>
</li>
<li class="feature-item emergency">
<em>๊ธด๊ธ ๊ตฌ์กฐ ์์ฒญ.</em>
<p>์ธก๋ฉด ๋ฒํผ์ ๊ธธ๊ฒ ๋๋ฅด๋ฉด ์๊ธ ์๋น์ค์ ์ ํ๋ฅผ ๊ฑธ์ด ๋น์ ์ ์์น๋ฅผ ์๋ ค์ค๋๋ค. ๊ฒ๋ค๊ฐ ํ๋์์ ๋น์ ์ ์์น๊ฐ ๋ฐ๋ ๋๋ง๋ค ๊ธด๊ธ ์ฐ๋ฝ์ฒ๋ก ์
๋ฐ์ดํธ ์ฌํญ์ ์ ๋ฌํ์ฃ .</p>
</li>
</ul>
</div>
<div class="feature-box">
<strong class="title">์
๋ฃฐ๋ฌ๋ก<br />์ค๋งํธํ ์ํต.</strong>
<ul class="feature-list">
<li class="feature-item call">
<em>์ ํ ๋ฐ ๋ฌธ์ ์ก์์ .</em>
<p>์
๋ฃฐ๋ฌ ๊ธฐ๋ฅ์ ๋ชจ๋ ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ผ๋ก ํ์ฌ๋์ด ์์ต๋๋ค. ์ด๋ํต์ ์ฌ์ ๊ฐ์
ํ๋ฉด ์ต๋ 18์๊ฐ์ ์จ์ข
์ผ ๊ฐ๋ ๋ฐฐํฐ๋ฆฌ ์ฌ์ฉ ์๊ฐ ๋์ LTE๋ก ์ํตํ ์ ์์ฃ .</p>
</li>
<li class="feature-item music">
<em>์์
.</em>
<p>์ฐ ์ ์, ํน์ ํฌ์ค์ฅ, ์ด๋์ ์๋ ์ง ์ข์ํ๋ ์์
๊ณผ ํ์บ์คํธ๋ฅผ ์คํธ๋ฆฌ๋ฐํ ์ ์์ต๋๋ค.</p>
</li>
<li class="feature-item map">
<em>์ง๋.</em>
<p>์ธ์ ๋ฐฉํฅ์ ํ์ด์ผ ํ๋์ง ์๋ชฉ์์ ๋ฐ๋ก ๊ธธ ์๋ด๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.</p>
</li>
<li class="feature-item wallet">
<em>์ง๊ฐ.</em>
<p>์๊ณ๋ฅผ ํ ํค, ์๋์ฐจ ํค ๋๋ ํ์น๊ถ์ ๋์ ํ๋ ์ฉ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.</p>
</li>
<li class="feature-item siri">
<em>Siri.</em>
<p>๊ธธ ์๋ด, ๋ ์จ ํ์ธ, ๋
ธ๋ ์ฌ์ ๋ฑ Apple Watch์์ ํ ์ ์๋ ๊ฑฐ์ ๋ชจ๋ ์ผ๋ค์ Siri์๊ฒ ๋ถํํ ์ ์์ต๋๋ค.</p>
</li>
<li class="feature-item store">
<em>App Store.</em>
<p>Apple Watch์ App Store์์ ๊ฑฐ์ ๋ชจ๋ ์คํฌ์ธ ๋ ํ๋์ ํ์ํ ์ฑ์ ์ฐพ์ ์ ์์ต๋๋ค. iPhone์ ๊บผ๋ด์ง ์๊ณ ๋ ์๋ชฉ์์ ๋ค์ํ ์ฑ์ ์๊ณ์ ๋ฐ๋ก ๋ค์ด๋ก๋ํ ์ ์์ฃ .</p>
</li>
</ul>
</div>
</div>
</div>
</section>
// sc-quik-look ์์ดํ
์ ๋๋ฉ์ด์
$('.sc-quik-look .feature-list').each(function(i, el){
child = $(this).find('.feature-item');
gsap.from(child,0.7,{
scrollTrigger:{
trigger: el,
start: "top 80%",
end: "bottom 60%",
},
stagger: 0.2,
opacity: 0,
yPercent: 20,
})
})
๊ณตํต๋๋ element์์๋ each()ํจ์๋ฅผ ์ด์ฉํด ๋ชจ์
์ ์ข ๋ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
jQuery each()ํจ์๋ object ์ ๋ฐฐ์ด ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋ ์ผ๋ฐ์ ์ธ ๋ฐ๋ณต ํจ์์ด๋ฉฐ,
์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋ฐ๊ณ ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐ๋๋ค.
์ฝ๋ฐฑํจ์์ ์ธ์๋ก๋ index์ ๊ฐ์ ๋ฐ์์ฌ์์๋ค.
.sc-about .watch-area .title-box .title span {
display: block;
font-size: 70px;
font-weight: bold;
line-height: 1.4;
white-space: nowrap;
background: linear-gradient(to right, #A5FECB, #20BDFF, #5433FF);
color: transparent;
-webkit-background-clip: text;
transform: translateY(100%);
opacity: 0;
}
์ ํ์ฌ์ดํธ์์ ์ฝ๋๋ฅผ ๋ณด๊ณ ์๊ฒ ๋์๋ค!
background์ ๊ทธ๋ผ๋ฐ์ด์
์ ๋ฃ์ด์ฃผ๊ณ ,
color๋ transparent;๋ก ํฌ๋ช
ํ๊ฒ ๋ง๋ค์ด์ค๋ค.
๋ง์ง๋ง์ผ๋ก -webkit-background-clip์ background๋ฅผ ์ด๋๊น์ง ์ ์ฉ์ํค๋์ง์ ๋ํ ๊ฒ์ด๋ค.
๊ฐ์ผ๋ก text๋ฅผ์ฃผ๋ฉด ํ
์คํธ๋ง ์ ์ฉ์ํจ๋ค๋ ๋ป์ด๋ค.
ํฌ์ธํธ ์ฃผ๊ธฐ ์ข์ ํจ๊ณผ์ธ ๊ฒ ๊ฐ๋ค.