티스토리 뷰

jQuery

fade / sticky / shrinking-nav-bar

정낭고 2023. 10. 10. 09:56

fade (페이드)

▏fade in / fade out

$(function () {

    let slides = $('.slideshow img'),
    slideCount = slides.length,
    currentIdx = 0;

    slides.eq(currentIdx).fadeIn();
    setInterval(()=>{
        let nextIdx = (currentIdx + 1)%slideCount;
        slides.eq(currentIdx).fadeOut();
        slides.eq(nextIdx).fadeIn();
        currentIdx = nextIdx
    }, 4000);
});

 


sticky

< 상단에서의 거리 >
대상.offset().top;

< window 스크롤양 >
$(window).scrollTop();

< A요소 안의 모든 요소 선택 >
A.contents();

< contents의 크기반영 >
대상.width();
대상.height();

< padding까지의 크기 반영 >
대상.innerWidth();
대상.innerHeight();

< border까지의 크기 반영 >
대상.outerWidth();
대상.outerHeight();

< margin까지의 크기 반영 >
대상.outerWidth(true);
$(function () {
    let header = $('.page-header');
    // 고정값이라서 밖에 작성
    let headerOST = header.offset().top;
    
    /*
    윈도우에 스크롤이 생기면 할일
     그 양이 header가 상단에서 떨어진 거리 이상이라면
     header를 고정
     아니라면
     header 고정 풀기
    */

     $(window).scroll(function(){
        // 스크롤이 생길 때마다 바껴야 하는 변수는 안에다 작성
        let sct = $(window).scrollTop();

        if(sct >= headerOST){
            header.addClass('sticky');
        } else{
            header.removeClass('sticky');
        }
     })

});

 

▏요소 내용 생성

< A를 B의 기존 내용 뒤에 추가 >
A.appendTo(B)

< B를 A의 내용 뒤에 추가 >
A.append(B)

< A를 B의 기존 내용 앞에 추가 >
A.prependTo(B)

< B를 A의 기존 내용 앞에 추가 >
A.prepend(B)

🙾 기존에 있으면 내용 뒤에 추가

<body>
  <span>I have nothing more to say... </span>
 
  <div id="foo">FOO! </div>

<script>$("span").appendTo("#foo"); </script>
</body>

 

▏요소 내용 추가

// JS
window.innerWidth
window.outerWidth
window.innerHeight
대상.offsetWidth
대상.offsetHeight

 


shrinking-nav-bar

▏changeLogo / attr

let $window = $(window),
header = $('#main-header'),
logo = $('#logo'),
defaultLogo = "images/logo.svg"
smallLogo = "images/logo-shrink.svg";

/*
윈도우에 스크롤이 생기면 할일
그 양이 0보다 크면
header에 클래스명 shrink 추가
아니면
header에 클래스명 shrink 제거
*/
$window.scroll(function(){
    let sct = $(this).scrollTop();
    if(sct > 0){
        header.addClass('shrink');
        // 로고의 경로를 작은 이미지로 변경
        // logo.attr('src',smallLogo);
        changeLogo(smallLogo);
    } else {
        header.removeClass('shrink');
        // 로고의 경로를 큰 이미지로 변경
        // logo.attr('src',defaultLogo);
        changeLogo(defaultLogo);
    }
});

/*
changeLogo
매개변수 newPath로 경로가 들어오면
현재로고는 사라지면 할일
현재 로고의 이미지 경로를 newPath 변경하고
현재 로고 스윽 나타난다.
*/
function changeLogo(newPath){
    logo.fadeOut(400, function(){
        logo.attr('src',newPath).fadeIn();
    });
}

 

 

 

 

 

 

'jQuery' 카테고리의 다른 글

jQuery?  (0) 2023.10.10
Tab / light box / back to top  (0) 2023.10.10
animation 한 번만 작동하게 하기  (0) 2023.10.10
each 함수 / aside menu  (0) 2023.10.10
submenu(서브메뉴) / Loading animation bar  (0) 2023.10.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함