์ฌ์ดํธ๋ช
: barcelona
์์
๊ธฐ๊ฐ: 3์ผ ์์
๋ผ์ด๋ธ๋ฌ๋ฆฌ: swiper, jQuery, gsap
์ ํ: PC ์ ์ํ, ํด๋ก ์ฝ๋ฉ
์ฐธ์ฌ๋: 100%
scrollTrigger์ ๋ํ ์ดํด์ ์ญ CSS ๋ณ์ ์ ์ธ์ ํจ์ผ๋ก์จ ์์ฃผ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค!!
sass์ฒ๋ผ ๋ณ์๋ฅผ ์จ์ฃผ๋๊ฑฐ๋ค.
:root{ --font-en1:'hatton',Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif; --font-en2:'Montserrat',Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif; --color-green:#81d8d0; }
๊ณตํต์ผ๋ก ๋ค์ด๊ฐ ํฐํธ์ ์์ ๋ฃ์ด์ค๋ค.
->--color-green:#81d8d0; ์ฌ๊ธฐ์ green์ ๋ด๊ฐ ์ ํ ๋ณ์
=> --๋ณ์-๋ช
: ๊ฐ;
css์์ ์ ์ฉ ์ => :var(--ํด๋น๋ณ์๋ช
-)
font family๋ก ํฐํธ๋ค์ ๋ค ์ค์ ํด๋์ ๋ค์ ๋ณ์ ์ง์ ํด์ฃผ๋๊ฒ
.sc-visual .txt-title{ font-family: var(--font-en1); }
sans-serif โ ๊ณ ๋์ฒด / serifโ ๋ช ์กฐ์ฒด

swiper์ ํน์ ์ด๋ฒคํธ๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์ถ๋ค๋ฉด swiper-slide-active์ css ๋ฃ์ด์ฃผ๊ธฐ
.sc-visual img{ width: 100%; height: 100vh; object-fit: cover; transform: scale(1.2); transition: transform 5s linear; //linear - ์ผ์ ํ๊ฒ } .sc-visual .swiper-slide-active img{ transform: scale(1); }
transition ๋ค์๋ ๋๊ฐํํ
ํจ๊ณผ๋ฅผ ์ค๊ฑด์ง ์จ๋๊ฒ, ์๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ์ ๋ค๊น์ง ํจ๊ณผ๊ฐ ๋ค ์ ์ฉ๋๋ค.<h3 class="txt-box"> <span class="txt-title"><b>we are different</b></span> <span class="txt-info"><b>get to know us</b></span> </h3>
๊ธ์๊ฐ ์ฌ๋ผ์ด๋์ ๋ฐ์์ ์ฌ๋ผ์์ผํ๋ bํ๊ทธ๋ก ๊ฐ์ธ์ค๋ค
(๊พธ๋ฉฐ์ฃผ๊ธฐ ์ํ๊ฒ ์๋ฏธ์์)
โญ transform์ display๊ฐ ์์ผ๋ฉด ์ฌ์ฉํ ์๊ฐ ์์
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ(txt-title)์๋ display, ์ฃผ๋ ค๋ ์์ (b)์๋ display๋ฅผ ์ค์ผํ๋ค.
$(window).scroll(function(){ curr = $(this).scrollTop(); visualHeight = $('.sc-visual').outerHeight(); // scvisual = $('.sc-visual').outerHeight(); if (curr > visualHeight) { $('.header').addClass('active'); } else { $('.header').removeClass('active'); } });

padding์ ์ค๋ค.line-height๋ฅผ ๋๋ ค์ค๋ค.

$(window).scroll(function(){ curr = $(this).scrollTop(); scvisual = $('.sc-visual').outerHeight(); -> ๋น์ฃผ์ผ์์ญ ๋์ด // visualHeight = $('.sc-visual').outerHeight(); if (curr > scvisual) { $('.header').addClass('active'); } else { $('.header').removeClass('active'); } });
โผ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค
๐ค curr, scvisual๋ฑ๋ฑ ์ ๋ณ์๋ก ์จ์ฃผ๋๊ฑฐ์์??
โ ์ฌํ์ฉ ํ๋ ค๊ณ !!
Swiper API
Swiper API์์ ํฐ์น ๊ฒ์ touch-end

touchstart โ ์๊ฐ๋ฝ ๋ฟ์ ๋ ๋ฐ์
touchmove โ ์๊ฐ๋ฝ์ด ๋ฟ์ ์ฑ ์์ง์ผ ๋ ๋ฐ์
touchend โ ์๊ฐ๋ฝ์ ๋ ๋ ๋ฐ์
featuredSlide.on('touchStart',function(){ $('.sc-featured .mid-slide').addClass('grab') console.log(1); }) featuredSlide.on('touchEnd',function(){ $('.sc-featured .mid-slide').removeClass('grab') console.log(2); }).sc-featured .mid-slide.grab .img-box{ transform: scale(0.95); } .sc-featured .mid-slide.grab img{ transform: scale(1.2); }
featureSlide๋ ๋ด๊ฐ ์ง์ ํ๋ ๋ณ์(Swiper)์ด๋ฆ์
ํฐ์น ๋ ๋ grabํด๋์ค ์ถ๊ฐํด๋ผ, ์์ ๋๋ผ grabํด๋์ค๋ฅผ ๋นผ๋ผ
์กํ๋๊ฒ ๋ ๊ทน์ ์ผ๋ก ๋ณด์ด๊ฒํ๊ธฐ ์ํด ์ด๋ฏธ์ง๊ฐ์ธ๊ณ ์๋ ๋ฐ์ค์ ์์์ง๋ ์ค์ผ์ผ์ค

$('header').click(function(e){ if( !$('.header .util-area .link-wrap').has(e.target).length ) $('.header .util-area .link-wrap').removeClass('open'); });
header์์๋ body๋ wrap๋ฑ ๋ด๊ฐ ํด๋ฆญํ๋ ค๋ ์์์ ์ธ์ ์์๋ฅผ ๋ฃ์ด์ค๋ค.

.header .menu-area .menu-body .menu-item{ width: 30%; transform: translateY(20%); transition: transform 1.2s, opacity 1.2s; opacity: 0; }
์ด๋ฒคํธ๋ฅผ ์ฃผ๋ ค๋ ํด๋์ค์ ์๋์ ํฌ๋ช ๋๋ฅผ ์ฃผ๊ณ
.header .menu-area.active .menu-body .menu-item:nth-child(1){ transition-delay: 0.3s; } .header .menu-area.active .menu-body .menu-item:nth-child(2){ transition-delay: 0.4s; } .header .menu-area.active .menu-body .menu-item:nth-child(3){ transition-delay: 0.5s; } .header .menu-area.active .menu-body .menu-item:nth-child(4){ transition-delay: 0.6s; } .header .menu-area.active .menu-body .menu-item:nth-child(5){ transition-delay: 0.7s; } .header .menu-area.active .menu-body .menu-item:nth-child(6){ transition-delay: 0.8s; }
์ ์ด์ฟผ๋ฆฌ๋ฅผ ์คํํ์๋ ํ๋ํ๋์ delay๋ฅผ ์ค๋ค.
โ
nth-child๋ก ํ์์ ์๋ก์ด ์์ญ์ด ์ถ๊ฐ๋์๋ css์์ ๊ณ์ ์ถ๊ฐํด์ค์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค.
const menu = gsap.from('.menu-area .menu-item',{ // delay:1, opacity:0, yPercent:20, stagger:0.1, //์๊ฐ์ฐจ paused:true, //์ ์ง (๋ฏธ๋ฆฌ์คํ๋๋ฉด ์๋๋๊น_) })
gsap.from์ผ๋ก ์ด๋ฒคํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ์
ํ
ํด์ค๋ค.
๋ง๋ค์ด์ค ์ ์ด์ฟผ๋ฆฌ์ ์ฌ์ํ ๋๋ง๋ค ์คํ๋๊ฒํ๊ธฐ
$('.header .util-area .btn-menu').click(function(e){ e.preventDefault(); menu.restart() $('.menu-area').addClass('active'); $('body').addClass('active'); });
์ง์ ํ ๋ณ์menu๋ฅผ ๋๋ฅผ๋๋ง๋ค ์คํํ๊ฒ ํ๊ธฐ
-> menu.restart()
gsap๋ฅผ ๋ณ์ const๋ก ์คฌ๋์??๋ณ์๋ก ์ง์ ํ์ง ์์ผ๋ฉด ์๋ก๊ณ ์นจํ์๋ ๋ฐ๋ก ์คํ๋๋ค.

$('.sc-visual .scroll-down').click(function(){ target = $('.sc-featured').offset().top+1 $('html,body').animate({scrollTop:target},300) })
$('html,body').animate({scrollTop:target},300)
$('์ฌ๊ธธ๊ธฐ์ค์ผ๋ก').animate({scrollTop:์ด์์น๋ก},300) 0.3์ด๋์ ์ค๋ฅด๋ฅดใ ก์ด๋
body::-webkit-scrollbar { width: 7px; /* ์คํฌ๋กค๋ฐ์ ๋๋น */ } body::-webkit-scrollbar-thumb { height: 10%; /* ์คํฌ๋กค๋ฐ์ ๊ธธ์ด */ background: rgba(31, 31, 31, 0.5); /* ์คํฌ๋กค๋ฐ์ ์์ */ border-radius: 10px; } body::-webkit-scrollbar-track { background: transparent; opacity: 1; /*์คํฌ๋กค๋ฐ ๋ท ๋ฐฐ๊ฒฝ ์์*/ }
โน
‹์ผ์ชฝ ํ๊บฝ์ ํ
โบ›์ค๋ฅธ์ชฝ ํ๊บฝ์ ํ
์ด๋ฒคํธ๋ฅผ ๋จผ์ ๊ตฌํด์ผํ๋ค.
์ขํ๋จผ์ ๊ตฌํ๊ธฐ
- ๋ฌธ์์ ์์์ง์ ๋ถํฐ ๋๊น์ง ์ขํ
- ๋ณด๊ณ ์๋ ํ์ฌํ๋ฉด์ ์ขํ
- ์์ญ์์์ ์ขํ
๋ง์ฐ์ค๋ฅผ ๋ฐ๋ผ๋ค๋๋์ ๋ฅผ ๊ตฌํ๋ ค๋ฉด 2. ๋ณด๊ณ ์๋ ํ์ฌํ๋ฉด์ ์ขํ๊ฐ ํ์ํ๋ค

์์์์๊น์ง ์ธ์ํ๋๊ฐ ์ฐจ์ด
mouseover, mouseout๋ ์์ ์์์ ์ ๊ทผํด๋ ๋์์ ํ์ง๋ง,
mouseenter, mouseleave๋ ์์ ์์์๋ ๋์ํ์ง ์๋๋ค.
mousemove : ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋ ๋ฐ์
mouseover : ๋ง์ฐ์ค๋ฅผ ์์ ์์ ๋ค์ด์ฌ ๋ ๋ฐ์
mouseleave : ๋ง์ฐ์ค๊ฐ ์์์ ๊ฒฝ๊ณ ๋ด๋ถ์์ ์ธ๋ถ๋ก ์ด๋ํ ๋ ๋ฐ์
ํ์ฌํ๋ฉด์ x์ ์ขํ,y์ ์ขํ๊ฐ
xVal = e.clientX; yVal = e.clientY;
$('body').mousemove(function(e){ xVal = e.clientX; yVal = e.clientY; // console.log(xVal+'//'+yVal); gsap.to('.cursor',{ x:xVal, y:yVal })
์๊ธด ํฌ์ธํฐ๋๋ฌธ์ ๋ค์ ๋ด์ฉ์ด ์ ํ์ด ์๋ ์ ์๋ค.
pointer-events: none; //css์ ์์ฑ

pointer-event๋ฅผ ์จ์ ๋ค์๊ฐ ์ ํ๋๊ฒํ๋ค. ๋ง์น ํฌ์ธํฐ๊ฐ ๋ค๋ก ๋ซ๋ฆฐ๋๋!!
mouseover: ๋ง์ฐ์ค๋ฅผ ์์ ์์ ๋ค์ด์ฌ ๋ ๋ฐ์$('a').mouseover(function(){ if($(this).data('name')){ val = $(this).data('name'); }else{ val='' } /*$(this).data('name')?val=$(this).data('name'):val='';*/ //์ค์ฌ์ฐ๊ธฐ gsap.to('.cursor',{ scale:1.8, opacity:0.7 }) })
mouseleave: ๋ง์ฐ์ค๊ฐ ์์์ ๊ฒฝ๊ณ ๋ด๋ถ์์ ์ธ๋ถ๋ก ์ด๋ํ ๋ ๋ฐ์$('a').mouseleave(function(){ $('.cursor').text(''); gsap.to('.cursor',{ scale:1, opacity:1 }) })
if($(this).data('name')){ val = $(this).data('name'); }else{ val='' } //์ค์ฌ์ฐ๊ธฐ $(this).data('name')?val=$(this).data('name'):val=''; //์ค์ฌ์ฐ๊ธฐ val = $(this).data('name')?$(this).data('name'):''; //์ค์ฌ์ฐ๊ธฐ =>$('.cursor').html(`<span>${val}</span>`); // if ($(this).parents('.sc-featured').length) { // // $('.cursor').text('featured'); // $('.cursor').html('<span>featured</span>'); // }else if ($(this).parents('.recom-artist-area').length) { // $('.cursor').html('<span>์ถ๊ฐ</span>'); // }
<br>

gsap.to('.recom-artist-area .img-box',{
// y:-180 ํฝ์
scrollTrigger:{
trigger:".recom-artist-area", //์ด๊ตฌ,๊ธฐ์คํ๊ทธ recom-artist-area์ ์์๊ณผ ๋
start:"top 80%", //(ํธ๋ฆฌ๊ฑฐ๊ธฐ์ค, ์๋์ฐ๊ธฐ์ค) ๋์ด ๋ง๋์ผ ์คํ
end: "bottom top", //(ํธ๋ฆฌ๊ฑฐ๊ธฐ์ค, ์๋์ฐ๊ธฐ์ค) ๋์ด ๋ง๋์ผ ์คํ
markers:true, //์ขํํ์
scrub:1, //์ด๊ฒ ์์ด์ผ ์ฌ๋ฌ๋ฒ ์ฌ์ฉ๊ฐ๋ฅ, ์์ผ๋ฉด 1ํ์ฑ
}, //์ปด๋ง ํ์
yPercent:-10 //ํผ์ผํ
์ด์ง, ์์ง์ด๋ ์ ๊ฐ -10%๊น์ง ๊ฐ๋ผ
})
start:"top 80%" โ ์๋์ฐ๊ธฐ์ค์ด 100% ํน์ ๊ทธ๋ฅ bottom์ด์๋ค๋ฉด ํ๋ฅด๋๊ฒ ์ ์๋ณด์์ผ๋ก 80%์ ๋๊ฐ ์ ๋นํ๋ค.
scrollTrigger์ ์ด์ฉํ์ฌ ๊ฐํธํ๊ฒ ํ๋ฅผ์์๊ฒ ๋ง๋ค์ด์ค
gsap.to('.txt-area',{ scrollTrigger:{ trigger:".txt-area", //๊ธฐ์คํ๊ทธ recom-artist-area์ ์์๊ณผ ๋ start:"top 100%", //(ํธ๋ฆฌ๊ฑฐ๊ธฐ์ค, ์๋์ฐ) ๋์ด ๋ง๋์ผ ์คํ end: "bottom top", //(ํธ๋ฆฌ๊ฑฐ๊ธฐ์ค, ์๋์ฐ) ๋์ด ๋ง๋์ผ ์คํ // markers:true, //์ขํํ์ scrub:1, //์ด๊ฒ ์์ด์ผ ์ฌ๋ฌ๋ฒ ์ฌ์ฉ๊ฐ๋ฅ, ์์ผ๋ฉด 1ํ์ฑ }, //์ปด๋ง ํ์ xPercent:-50 //์์ง์ด๋ ์ ๊ฐ -100ํ๋ก๊น์ง ๊ฐ๋ผ })
.contract-box ํด๋ฆญ์ ๋์์ ๋งํฌ์ธ iframe์ผ๋ก ์ด๋ํ๊ธฐ
$('.contract-box').click(function(){ iframe = `<iframe width="560" height="315" src="https://www.youtube.com/embed/omuSTuF-fxk?autoplay=1&mute=1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>` $(this).html(iframe) })

ํผ๊ฐ๊ธฐ์์ ์ฝ๋์ถ์ถ
1.
swiper์์ btn-nav๋ ํด๋์ค ๊ณตํต์ผ๋ก ์ฃผ๋ฉด๋๋ค.
๊ดํ btn-nav1,2,3์ฐ์ง ์๊ธฐ


<div class="img-box"><img src="./asset/imges/contents/biglarge_Tiger_Gaulino_469c752944.jpg" alt=""></div> <div class="txt-box"> <strong class="txt-subtitle">art editions</strong> <h3 class="txt-title">tiger art gaulino</h3> <span class="txt-madeby">oscar tusquets</span> </div>
.recom-artist-area .txt-box{ padding: 20% 0; text-align: center; color: #fff; }
์ด๋ฏธ์ง๊ฐ ์์ผ๋ฉด ๋์ด๊ฐ ์ฌ๋ผ์ง๊ฒ ๋๋ค.
->๊ณต์กดํ๋ ๊ฒ์ ์ข์ง ์๋ค.โ
์ด๋ฏธ์ง๋ง๊ณ textํํ ํจ๋ฉ์ ์ค์ ํฌ๊ฒ ์์ญ์ ์ก์์ค๋ค. โ ๋ ํธํด์ง
๐ฌ
gsap๋ ํด๋ํด๋ ์ด๋ ต๋ค...
์ค์ค๋ก ์์ ๋ง๋ค์ด์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด๋ณด์