fixed 되어있는 aside를 지정된 값의 스크롤에 도착하면 fixed를 없앨 수 있는 방법이 있나요?

fixed 되어있는 aside를 지정된 값의 스크롤에 도착하면 fixed를 없앨 수 있는 방법이 있나요?

QA

fixed 되어있는 aside를 지정된 값의 스크롤에 도착하면 fixed를 없앨 수 있는 방법이 있나요?

본문

제이쿼리 및 자바 스크립트 시작한지 일주일된 코딩 초보입니다.

해당 문제를 어떻게 해결해야할지 모르겠네요

aside에 class 지정해서 position:fixed주고 보이게 하려고 z-index도 줬는데 

지정된 스크롤 값(ex:2000px)에 도착하면 fixed를 풀던가 아니면 위로 올라가도록 하고 싶은데 

어떻게 해야하나요?

 

아니면 아래 바디 처럼 button을 누르면 fixed 되어있는 구역을 멈추게 하고싶은데 어떻게 해야하나요

<aside class="side2">
<button>Stop</button>
</aside>

-body

 

.side2{
width:871px;
height:2330px;
top:130px;
position:fixed;
right:90px;
z-index:998;
background:#fff;
}

button{
float:right;
position:absolute;
top:649px;
right:225px;
width:60px;
height:30px;
}

-css

이 질문에 댓글 쓰기 :

답변 3

예전에 제이쿼리로 직접만든 소스입니다.

스크롤시 헤더와 푸터의 높이를 구하여, 스크롤의 위치가 헤더/바디/푸터 영역에 따라 top or bottom 값이 변경되게 하였습니다.

 

이 소스대로 그대로 하시면 안되고 각각 선택자를 상황에 알맞게 바꿔주셔야 사용하실 수 있습니다.

 


<style>
#aside {
    position: fixed;
    min-width: 100px;
    right: 0;
    z-index: 10000;
    box-sizing: border-box;
    top: 130px;
}
</style>
<div id="aside">
    aside 영역
</div>
<script>
var hd_height = $("#hd").height();    //헤더의 높이를 구합니다.
$(document).scroll(function(){    //페이지내에서 스크롤이 시작되면
    curSc = $(document).scrollTop() + $(window).height(); //현재 스크롤의 위치입니다.
    body_height = $("body").height(); //body의 높이를 구합니다.
    footer_height = $("#footer").height(); // 푸터의 높이를 구합니다.
    bottom_top = body_height - footer_height;    //푸터를 제외한 body의 길이를 구합니다.  
    if(curSc > bottom_top + 20){ // 현재 스크롤의 높이가 body_top 보다 크다면 (하단 영역에 도착했다면)  *20 은 적당히 조절해주시면 됩니다. 
        $("#aside").css('top', 'auto'); //fixed top 성질을 없애고
        $("#aside").css('bottom', curSc - bottom_top + 100); //fixed bottom 을 줍니다.
    }else{
        $("#aside").css('top', hd_height); // 그렇지않으면 상단에 고정되게 합니다.
    }
})
</script>

javascirpt 로 처리해야함

1. 해당 페이지 총 height 변수생성

2. 스크롤 할때마다 화면의 position top 값 변수생성

3. 스크롤시마다 높이체크해가면서 적정 높이에 클래스추가해서 css로 숨김 

 

검색하면 넘치는것들이라 한번 검색해보셔요

 

답변을 작성하시기 전에 로그인 해주세요.
전체 936
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT