개인공간

[제이쿼리] 해시(hash)태그 사용하여 앵커이동 load, click, scroll 이동되게 처리 본문

IT정보/jQuery_javaScript

[제이쿼리] 해시(hash)태그 사용하여 앵커이동 load, click, scroll 이동되게 처리

천재소년s 2023. 7. 12. 15:27
반응형

예제확인방법 바로가기 >>

innerLink1
innerLink2
innerLink3
innerLink4

CSS

.innerLink{position:relative;z-index:1;}
.innerLink .inner{overflow:hidden;position:static;}
.innerLink.fixed .inner{position:fixed;}

HTML


innerLink1
innerLink2
innerLink3
innerLink4

JS

function targetMove2(e){
    var stickyObj = $('.innerLink230712');
    var headerH = $('.cconWrap_header').innerHeight() + $('.cconWrap_tab').innerHeight(); //header가 fix된 경우 
    var stickyH = stickyObj.find('.inner').height();
    if(e.type == 'load'){  //load일때
        if(location.hash != ''){
            var _id = location.hash;   
            var _top =  $(_id+'-area').offset().top - headerH - stickyH;
        }
    }else{ //click일때
        var _id = $(this).attr('href');
        var _top =  $(_id+'-area').offset().top - headerH - stickyH;
    };
    if(_top != undefined){
        $("html, body").stop().animate({scrollTop:_top}, 400);   
    }
}
function targetMove(e){
    var stickyObj = $('.innerLink230712');
    var headerH = $('.cconWrap_header').innerHeight() + $('.cconWrap_tab').innerHeight(); //header가 fix된 경우 
    var stickyH = stickyObj.find('.inner').height();
    if(e.type == 'load'){  //load일때
        var _id = location.hash;   
    }else{ //click일때
        var _id = $(this).attr('href');
    };
    var _top =  $(_id+'-area').offset().top - headerH - stickyH;
    stickyObj.addClass('fixed');            
    $("html, body").stop().animate({scrollTop:_top}, 400);   
}

function fixWidhtHeight(){
    var stickyObj = $('.innerLink230712');
    var fixWidth = $('#content-inner').innerWidth(); // content사이즈
    var fixHeight = $('.innerLink230712 a').innerHeight();
    stickyObj.find('.inner').width(fixWidth);
    stickyObj.height(fixHeight);
};

function scrollSticky(){
    var stickyObj = $('.innerLink230712');
    if(stickyObj.offset().top - stickyObj.find('.inner').height()  < $(window).scrollTop()) {
        stickyObj.addClass('fixed');
        stickyObj.find('.inner').css('top', $('.ktd-conWrap header').innerHeight() + $('.ktd-tab').innerHeight())
    }else{
        stickyObj.removeClass('fixed');
        stickyObj.find('.inner').css('top', 0)
    }
}
//스크롤 애니메이션
$(window).scroll(scrollSticky);
$(window).on('load', targetMove);
$('.innerLink230712').on('click', targetMove);
$(window).on('resize', fixWidhtHeight);
fixWidhtHeight();
반응형