scrollTop 관련 스크립트 작동이 이상해요

scrollTop 관련 스크립트 작동이 이상해요

QA

scrollTop 관련 스크립트 작동이 이상해요

답변 1

본문


<ul class="test_part_tab after">
                    <li><a href="#part_1">기능</a></li>
                    <li><a href="#part_2">로컬</a></li>
                    <li><a href="#part_3">호환성</a></li>
                    <li><a href="#part_4">검수/피처드</a></li>
                    <li><a href="#part_5">로딩시간</a></li>
                    <li><a href="#part_6">발열</a></li>
                </ul>
<div class="project_main_wrap w_50 progress_part">
                    <div id="part_1" class="report_contents_wrap">
                        <h4>기능 테스트 진행 상세내용</h4>
                    </div>
</div>
<script>
    $(function() {
        $(".test_part_tab li a").click(function(event) {
            event.preventDefault();
            $('.progress_part').animate({
                scrollTop: $(this.hash).position().top //position
            }, 500);
        });
    });
</script>

 

스크롤이 브라우저 상단에 붙는게 아니라

html 내의 특정 div(.progress_part)의 상단에 붙도록 하고 싶어요.

.progress_part는 oveflow:auto인 상태라서 내용이 많아질수록 스크롤이 생깁니다.

그래서 서치해보니 .position().top 이렇게 하면 해당 부모요소 기준으로 붙는다는건 알아냈는데

버튼을 클릭해보면 이상하게 움직이네요.

이리저리 왔다갔다 희안하게 움직입니다.

 

스크립트를 잘못 짠 것일까요?

 

 

이 질문에 댓글 쓰기 :

답변 1


<style>
.test_part_tab {
    position: fixed;
    right: 0;
}
.progress_part {
    overflow: auto;
}
.report_contents_wrap {
    height: 20em;
}
.gap {
    height: 1000px;
}
</style>
<ul class="test_part_tab after">
                    <li><a href="#part_1">기능</a></li>
                    <li><a href="#part_2">로컬</a></li>
                    <li><a href="#part_3">호환성</a></li>
                    <li><a href="#part_4">검수/피처드</a></li>
                    <li><a href="#part_5">로딩시간</a></li>
                    <li><a href="#part_6">발열</a></li>
                </ul>
<div class="gap"></div>
<div class="project_main_wrap w_50 progress_part">
                    <div id="part_1" class="report_contents_wrap">
                        <h4>기능 테스트 진행 상세내용</h4>
                    </div>
                    <div id="part_2" class="report_contents_wrap">
                        <h4>로컬</h4>
                    </div>
                    <div id="part_3" class="report_contents_wrap">
                        <h4>호환성</h4>
                    </div>
                    <div id="part_4" class="report_contents_wrap">
                        <h4>검수/피처드</h4>
                    </div>
                    <div id="part_5" class="report_contents_wrap">
                        <h4>로딩시간</h4>
                    </div>
                    <div id="part_6" class="report_contents_wrap">
                        <h4>발열</h4>
                    </div>
</div>
<div class="gap"></div>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
    $(function() {
        $(".test_part_tab li a").click(function(event) {
            event.preventDefault();
            // $('.progress_part').animate({
            //     scrollTop: $(this.hash).position().top //position
            // }, 500);
            $('body').animate({
                scrollTop: $(this.hash).position().top
            });
        });
    });
</script>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 613
© SIRSOFT
현재 페이지 제일 처음으로