테스트 사이트 - 개발 중인 베타 버전입니다

var 값 지정 시 무한정으로 숫자를 늘릴 수 있나요? ex)var $sec[1씩증가하는 값] = 채택완료

굼떠 3년 전 조회 2,231

jquery를 제대로 배운적이 없어서 질문이 좀 난해한점 미리 사과드립니다 ㅠ

 

</p>

<p>$(window).bind("scroll", function() {

       var $sec1 = $('.wrap.sub1_1 .contents > div:nth-child(1)').offset().top;

       var $sec2 = $('.wrap.sub1_1 .contents > div:nth-child(2)').offset().top;

       if ($(this).scrollTop() < $sec2){

         $(".wrap.sub1_1 .contents > div:nth-child(1)").addClass("active");

         $(".wrap.sub1_1 .contents > div:nth-child(1)").siblings().removeClass("active");

       }

       if ($(this).scrollTop() > $sec2 & $(this).scrollTop() < $sec3){

         $(".wrap.sub1_1 .contents > div:nth-child(2)").addClass("active");

         $(".wrap.sub1_1 .contents > div:nth-child(2)").siblings().removeClass("active");

       }

     });</p>

<p>

 

스크롤에 따라 active라는 코드를 붙이고 벗어나면 지우는 그런 작업을 하고있는데요.

현재 섹션이라 칭하는 영역은 20개지만 늘어날 수도 있습니다.

지금 공통적으로 숫자가 증가하는 부분이  var $sec [숫자] , div:nth-child([숫자])인데..

소스를 조금 심플하게 만질 방법은 없을까요?

 

힌트라도 감사합니다 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
3년 전

그냥 제 스타일대로 해봤는데, 수치나 이런거 좀 수정해보시면 어떨지 해서 올려드립니다. 

</p>

<p><script src="<a href="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>" target="_blank" rel="noopener noreferrer">https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script></a>

<style type="text/css">

    html, body {margin:0;}

    #content div {height:600px;background-color:gray;}

    #content div.active {background-color:black;}

</style>

<div id="content">

    <div>1</div>

    <div>2</div>

    <div>3</div>

    <div>4</div>

</div>

<script type="text/javascript">

    $(window).bind('scroll', function() {

        var st = $(window).scrollTop();

        var curPos;

        $('#content div').each(function(idx, el) {

            if (st >= $(this).offset().top) {

                curPos = idx;

            }

        });

        if (!$('#content div').eq(curPos).hasClass('active')) {

            $('#content div').removeClass('active').eq(curPos).addClass('active');

        }

    });

</script></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인