인터렉티브 웹 2 - 원페이지 슬라이드

2022. 3. 15. 12:07Study/Example & Plug-in

 

 

 

HTML

<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>인터렉티브 웹 2</title>
	<script src="https://kit.fontawesome.com/cdd59ed73b.js" crossorigin="anonymous"></script>
	<link rel="stylesheet" href="./css/style.css">	
	<script src="./js/jquery-2.1.1.min.js" defer></script>
	<!-- <script src="./js/jquery.easing.1.3.js" defer></script> -->
	<script src="./js/prefixfree.min.js" defer></script>
	<script src="./js/jquery.mousewheel.min.js" defer></script>
	<script src="./js/custom.js" defer></script>
</head>
<body>

	<!-- 전체 페이지 -->
	<div id="wrap">
		<!-- 로고 -->
		<h1><img src="img/logo.png" /></h1>
	
		<!-- 주 메뉴 -->
		<ul id="menu">
			<li class="on"><a href="#">Full Blossom</a></li>
			<li><a href="#">Be Colorful</a></li>
			<li><a href="#">Time on Board</a></li>
			<li><a href="#">Shiny Addict</a></li>
		</ul>
	
		<!-- sns -->
		<ul id="sns">
			<li><a href="#"><i class="fa-brands fa-facebook-f"></i></a></li>
			<li><a href="#"><i class="fa-brands fa-twitter"></i></a></li>
			<li><a href="#"><i class="fa-solid fa-envelope"></i></a></li>
		</ul>

		<!-- 첫 번째 박스 -->
		<section>
			<article>
				<p>FULL BLOSSOM</p>
				<span>Lorem Ipsum is simply dummy text of the printing and typesetting industry</span>
			</article>
			<img class="p11" src="img/obj11.png" alt="image1">
			<img class="p12" src="img/obj12.png" alt="image2">
			<img class="p13" src="img/obj13.png" alt="image3">
		</section>
		
		<!-- 두 번째 박스 -->
		<section>
			<article>
				<p>BE COLORFUL</p>
				<span>Lorem Ipsum is simply dummy text of the printing and typesetting industry</span>
			</article>
			<img class="p21" src="img/obj21.png" alt="image1">
			<img class="p22" src="img/obj22.png" alt="image2">
		</section>
		
		<!-- 세 번째 박스 -->
		<section>
			<article>
				<p>TIME ON BOARD</p>
				<span>Lorem Ipsum is simply dummy text of the printing and typesetting industry</span>
			</article>
			<img class="p31" src="img/obj31.png" alt="image1">
			<img class="p32" src="img/obj32.png" alt="image2">
			<img class="p33" src="img/obj33.png" alt="image3">
		</section>
		
		<!-- 네 번째 박스 -->
		<section>
			<article>
				<p>SHINY ADDICT</p>
				<span>Lorem Ipsum is simply dummy text of the printing and typesetting industry</span>
			</article>
			<img class="p41" src="img/obj41.png" />
			<img class="p42" src="img/obj42.png" />
		</section>
	</div>
</body>
</html>

 

 

CSS

@charset "utf-8";
@import url(http://fonts.googleapis.com/css?family=Righteous);

/*  Reset CSS  */
* { margin:0; padding:0;}
ol,ul { list-style: none; }
a { outline:0; text-decoration:none; color:#555; }
img { border:0;}
body { font:12px/1.6 arial; color:#555; }


/* 로고 */
h1 {position:fixed; left:50px; top:50px; z-index:10;}
h1 img {width:200px; height:auto;}

/*sns*/
#sns {position:fixed; right:50px; top:40px; z-index:14;}
#sns li {float:left; margin-left:20px;}
#sns li i {font-size:25px; color:#111; opacity:0.5; transition:all 0.5s;}
#sns li i:hover {transform:scale(1.5); opacity:1;}

/*메뉴*/
#menu {position:fixed; left:0px; top:50%; margin-top:-100px; z-index:13;}
#menu a {display:block; width:200px; height:60px; font-family:righteous; font-size:14px; color:#000; text-align:right; overflow:hidden; box-sizing:border-box;  border-top:1px solid #111;  opacity:0.8; transition:all 0.5s;}
#menu li:hover a {font-size:24px;  opacity:1;}
#menu li.on a {font-size:24px; opacity:1;}

#menu li:nth-child(1):hover a { color:#d4164c; border-color:#d4164c;}
#menu li:nth-child(2):hover a { color:#fff; border-color:#fff;}
#menu li:nth-child(3):hover a { color:#ffec6a; border-color:#ffec6a;}
#menu li:nth-child(4):hover a { color:#005a89; border-color:#005a89;}

#menu li:nth-child(1).on a { color:#d4164c; border-color:#d4164c;}
#menu li:nth-child(2).on a { color:#fff; border-color:#fff;}
#menu li:nth-child(3).on a { color:#ffec6a; border-color:#ffec6a;}
#menu li:nth-child(4).on a { color:#005a89; border-color:#005a89;}


/*레이아웃*/
section {position:relative; width:100%; height:700px; background-size:cover; background-position:right center; background-attachment:fixed; overflow:hidden;}
section:nth-of-type(1) { background-image:url(../img/bg1.jpg); }
section:nth-of-type(2) { background-image:url(../img/bg2.jpg); }
section:nth-of-type(3) { background-image:url(../img/bg3.jpg); }
section:nth-of-type(4) { background-image:url(../img/bg4.jpg); }


/*텍스트 박스*/
article {position:absolute; left:300px; top:46%; z-index:11;}
article p { font-family:righteous; font-size:50px; letter-spacing:2px; line-height:1;} 
article span { font-size:16px; }

section:nth-of-type(1) p { color:#d4164c;}
section:nth-of-type(1) span { color:#111;}
section:nth-of-type(2) p { color:#fff;}
section:nth-of-type(2) span { color:#fff;}
section:nth-of-type(3) p { color:#fff;}
section:nth-of-type(3) span { color:#ffec6a;}
section:nth-of-type(4) p { color:#005a89;}
section:nth-of-type(4) span { color:#111;}

/*첫 번째 박스 이미지*/
.p11 { position:absolute; right:20px; bottom:20px;}
.p12 { position:absolute; right:130px; bottom:-40px;}
.p13 { position:absolute; right:60px; top:180px;}

/*두 번째 박스 이미지*/
.p21 { position:absolute; right:-180px; bottom:-480px;}
.p22 { position:absolute; right:130px; bottom:-40px;}

/*세 번째 박스 이미지 */
.p31 { position:absolute; right:180px; bottom:30px;}
.p32 { position:absolute; right:110px; bottom:-270px;}
.p33 { position:absolute; right:-70px; bottom:-130px;}

/*네 번째 박스 이미지 */
.p41 { position:absolute; right:20px; bottom:-120px;}
.p42 { position:absolute; right:0px; bottom:-180px;}

 

 

JS

// $(document).ready(function(){
// });


//변수 ht에 브라우저의 높이값을 저장
var ht = $(window).height();	
//브라우저의 높이값을 section의 높이값으로 지정
$("section").height(ht);

//브라우저가 리사이즈 될 때마다 브라우저와 section의 높이값을 갱신
$(window).on("resize",function(){
    var ht = $(window).height();
    $("section").height(ht);
});	


//각각의 section에서 마우스를 움직이면
$("section").on("mousemove",function(e){

    //변수 posX에 마우스 커서의 x축 위치 저장
    var posX= e.pageX;
    //변수 posY에 마우스 커서의 y축 위치 저장
    var posY= e.pageY;
    
    //첫 번째 박스의 이미지 위치값을 마우스 커서의 위치값과 연동
    $(".p11").css({"right":20-(posX/30) , "bottom":20-(posY/30) });
    $(".p12").css({"right":130+(posX/20) , "bottom":-40+(posY/20) });
    $(".p13").css({"right":60+(posX/20) , "top":180+(posY/20) });

    //두 번째 박스의 이미지 위치값을 마우스 커서의 위치값과 연동
    $(".p21").css({"right":-180-(posX/30) , "bottom":-480-(posY/30) });
    $(".p22").css({"right":130+(posX/50) , "bottom":-40+(posY/50) });
    
    //세 번째 박스의 이미지 위치값을 마우스 커서의 위치값과 연동
    $(".p31").css({"right":280-(posX/30) , "bottom":30-(posY/30) });
    $(".p32").css({"right":110+(posX/20) , "bottom":-270+(posY/20) });
    $(".p33").css({"right":-70+(posX/20) , "bottom":-130+(posY/20) });
    
    //네 번째 박스의 이미지 위치값을 마우스 커서의 위치값과 연동
    $(".p41").css({"right":20-(posX/30) , "bottom":-120-(posY/30) });
    $(".p42").css({"right":0+(posX/20) , "bottom":-180+(posY/20) });
});

//메뉴 버튼 클릭시
$("#menu li").on("click",function(e){
    e.preventDefault();
    
    //변수 ht에 브라우저의 높이값 저장
    var ht = $(window).height();
    
    //변수 i에 현재 클릭한 li의 순서값을 저장
    var i = $(this).index();    // 0 1 2 3
    
    //브라우저의 높이값*박스의 순서값은 현재 박스의 스크롤 위치값과 동일
    var nowTop = i * ht;

    //해당 스크롤 위치값으로 문서를 이동
    $("html,body").stop().animate({"scrollTop":nowTop},500);
});


$(window).on("scroll",function(){

    //변수 ht에 현재 브라우저의 넓이값 저장
    var ht = $(window).height();
    
    //변수 scroll에 현재 문서가 스크롤된 거리 저장
    var scroll = $(window).scrollTop();
    var dht = $(document).height() - ht;
    
    /*
    if(scroll>=ht*0 && scroll< ht*1){
        $("#menu li").removeClass();
        $("#menu li").eq(0).addClass("on");
    }
    if(scroll>=ht*1 && scroll< ht*2){
        $("#menu li").removeClass();
        $("#menu li").eq(1).addClass("on");
    }
    if(scroll>=ht*2 && scroll< ht*3){
        $("#menu li").removeClass();
        $("#menu li").eq(2).addClass("on");
    }
    if(scroll>=ht*3 && scroll< ht*4){
        $("#menu li").removeClass();
        $("#menu li").eq(3).addClass("on");
    }
    */
    
    for(var i=0; i<4; i++){
        if(scroll >= ht*i && scroll < ht*(i+1)){
            $("#menu li").removeClass();
            $("#menu li").eq(i).addClass("on");
        };
    }
    
    
    //section위에서 마우스 휠을 움직이면
    $("section").on("mousewheel",function(event,delta){

        var ht = $(window).height();
        var dht = $(document).height() - ht;
        var thistop = $(this).offset().top;

        //마우스 휠을 올렸을때	
        if (delta > 0 && thistop > 0) {

            //변수 prev에 현재 휠을 움직인 section에서 이전 section의 offset().top위치 저장
            var prev = $(this).prev().offset().top;
            //문서 전체를 prev에 저장된 위치로 이동
            $("html,body").stop().animate({"scrollTop":prev},500);
            return false;

        //마우스 휠을 내렸을때	 
        }else if (delta < 0 && thistop < dht) {
            
            //변수 next에 현재 휠을 움직인 section에서 다음 section의 offset().top위치 저장
            var next = $(this).next().offset().top;
            //문서 전체를 next에 저장된 위치로 이동
            $("html,body").stop().animate({"scrollTop":next},500);
            return false;
            
        }

    });

});

 

 

 

interactive3.zip
4.72MB

 

 

 

 

 

 

 

 

 

'Study > Example & Plug-in' 카테고리의 다른 글

인터렉티브 웹 4 - z축 원근감  (0) 2022.03.16
인터렉티브 웹 3 - 영상제어  (0) 2022.03.16
인터렉티브 웹 1 - 3D rotate  (0) 2022.03.15
반응형 네비게이션 2  (0) 2022.01.11
반응형 네비게이션 1  (0) 2022.01.11