☭DEVELOPER/#2 웹개발(자바기반 풀스택)

비주얼 스튜디오 코드 57 _ parallax 05

조반짝 2023. 6. 30. 17:11
728x90
반응형

html 마크업

#contents css편집

한 페이지당 h2가 들어가도록 편집

h2 그라디이션으로  배경 넣기

#nav 편집

nav z-index : 100;

cursor : 1000; 지정한다.

h1 편집

.menu 편집

<script>

 

● 상수: 변하지 않는 값

● 변수 : 변하는 값

스크롤 될 때마다 top 값이 변경됨

if  조건문 넣어주기

submenu가 밑에 있다가

스크롤을 하면 위로 붙게 된다.

각 페이지 별 active 활성화하기 (글자색 변경)

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>
<body>
    <nav id="nav">
        <h1>로고</h1>
        <ul class="menu">
            <li class="active"><a href="#">menu1</a></li>
            <li><a href="#">menu2</a></li>
            <li><a href="#">menu3</a></li>
            <li><a href="#">menu4</a></li>
            <li><a href="#">menu5</a></li>
            <li><a href="#">menu6</a></li>
        </ul>
    </nav>
    <section id="contents">
        <article id="article1"><h2>오늘은 금요일입니다.</h2></article>
        <article id="article2"><h2>그리고 6월의 마지막날입니다</h2></article>
        <article id="article3"><h2>2023년 절반이 되는 날</h2></article>
        <article id="article4"><h2>2023년 계획이행률 1%인 듯</h2></article>
        <article id="article5"><h2>나머지 99%는</h2></article>
        <article id="article6"><h2>지금부터 열심히 이룹시다</h2></article>
    </section>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script>
        // const 변하지 않는 상수값 / 변하는 값은 변수값
        const nav = $("#nav ul li");
        const cont = $("#contents > article");

        nav.click(function(e){
            e.preventDefault();
            // 기존에 위로 올라가려고하는 성질을 막아줌
            let target = $(this);
            // 변하는 값 = let 
            let index = target.index();
            // target 의 인덱스 번호를 알아서 인덱스라는 변수안에 넣어준다.
            let section = cont.eq(index);
            // article을 section이라는 아이안에 콘텐츠를 선택
            let offset = section.offset().top;
            // 컨텐츠의 맨위 좌표를 찾자
            $("html").animate({scrollTop:offset},600);
            // offset 만큼 0.6초동안 스크롤 하겠다.
        });

        // 스크롤 됐을 때 이벤트 발생해야함
        $("#nav").each(function(){
            // nav 이름을 변경 >> const = header
            const header = $(this);
            const hedaerOffset = header.offset().top;
            // console.log(hedaerOffset);

            $(window).scroll(function(){
                // 윈도우가 스크롤 됐을때 이벤트 발생시켜라
                let wScroll = $(this).scrollTop();
                // console.log(wScroll);

                if(wScroll > hedaerOffset){
                    header.addClass("on");
                }else{
                    header.removeClass("on");
                }
            });
        });

        $(window).scroll(function(){
            let wScroll = $(this).scrollTop();
            if(wScroll >= cont.eq(0).offset().top){
                nav.removeClass("active");
                nav.eq(0).addClass("active");
            }
            if(wScroll >= cont.eq(1).offset().top){
                nav.removeClass("active");
                nav.eq(1).addClass("active");
            }
            if(wScroll >= cont.eq(2).offset().top){
                nav.removeClass("active");
                nav.eq(2).addClass("active");
            }
            if(wScroll >= cont.eq(3).offset().top){
                nav.removeClass("active");
                nav.eq(3).addClass("active");
            }
            if(wScroll >= cont.eq(4).offset().top){
                nav.removeClass("active");
                nav.eq(4).addClass("active");
            }
            if(wScroll >= cont.eq(5).offset().top){
                nav.removeClass("active");
                nav.eq(5).addClass("active");
            }
        });
    </script>

</body>
</html>
@charset "utf-8";

*{
    padding: 0;
    margin: 0;
    box-sizing: border-box;
    color: #222;
}
li{
    list-style: none;
}
a{
    text-decoration: none;
    color: #222;
}
.clearfix::before,
.clearfix::after{
    content: "";
    display: block;
    clear: both;
}

#contents{
    text-align: center;
    height: 100vh;
    width: 100%;
    line-height: 100vh;
}
#contents > article{}
#contents > article > h2{
    font-size: 5vw;
    white-space: nowrap;
}

#article1{ background: radial-gradient(ellipse farthest-corner at center center ,#6beace 0%, #2e9ae4 100%);}
#article2{  background: radial-gradient(ellipse farthest-corner at left center ,#f39264 0%, #f2606f 100%);}
#article3{ background: radial-gradient(ellipse farthest-corner at 20% 20% ,#7eea6b, #2e71e4);}
#article4{ background: radial-gradient(ellipse farthest-corner at right bottom ,#ff2275 0%, #ff8530 100%);}
#article5{ background: radial-gradient(ellipse farthest-corner at left top ,#6cebcf 0%, #38a7aa 100%);}
#article6{ background: radial-gradient(ellipse farthest-corner at center center ,#69d2fb, #20438e);}

/* nav */
#nav{
    position: absolute;
    left: 0;
    bottom: 0;
    height: 60px;
    width: 100%;
    background-color: rgba(255, 255, 255, 0.4);
    /* nav가 가장 위에 위치하게 100으로 한다. */
    z-index: 100;
}
#nav.on{
    position: fixed;
    top: 0;   
}
#nav h1{
    float: left;
    height: 60px;
    font-size: 40px;
    width: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    text-shadow: 2px 2px #ccc;
}
#nav .menu{
    float: right;
}
#nav .menu li{
    /* menu 옆으로 나열 */
    display: inline;
   

}
#nav .menu li a{
    /* 인라인 블럭으로 해주어야 높이, 너비값이 적용됨 */
    display: inline-block;
    height: 60px;
    /* background-color: #38a7aa; */
    /* 양 옆 여백 넣기 */
    padding: 0px 20px;
    /* disflay: flex 가 안먹기 때문에 inline-flex 적용 */
    display: inline-flex;
    justify-content: center;
    align-items: center;
    color: #fff;
    font-size: 24px;
    font-weight: bold;
}
#nav .menu li.active{}
#nav .menu li.active a{
    color: #000;
    text-transform: uppercase;
}
728x90
반응형