앙큼한 개발기록

직접 만든 spy scroll 본문

카테고리 없음

직접 만든 spy scroll

angkeum 2018. 2. 2. 19:54

jquery 로 직접 스파이 스크롤 만들었습니다. 


다른 스파이 스크롤이랑 다르게 해당 컨텐츠가 윈도우 밑에 올라올 경우 


네비게이션 리스트 해당 항목의 class에 action을 붙여 줍니다. (bootstrap)


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
    <script>
        //spy scroll
 
        //ナビゲーションバーに色を付ける
        function spyScroll(top, bottom) {
 
            //ナビゲーションバー(ul)
            var nav = $(".nav.linked_list");
 
            //ナビゲーションリスト(li)
            var list = nav.children(":not(:first-child)");
 
            //画面範囲以内の項目に色を付ける。
            list.each(function () {
 
                //ナビゲーション項目
                var toc = $(this).children().attr("href").slice(1);
 
                //見える画面の上段
                var top_position = $("#" + toc).offset().top;
 
                //見える画面の下段
                var bottom_position = top_position + $("#" + toc).innerHeight();
 
                //取得したウィンドウズ画面(top, bottom)と見える画面の上段と下段を比較してナビゲーションバーに色を付ける。
                if (bottom_position > top && top_position < bottom) {
                    $(this).addClass("active");
                } else {
                    $(this).removeClass("active");
                }
 
            });
        }
 
        $(document).ready(function () {
 
            //画面の高さ(window size)
            var windowHeight = $(window).innerHeight();
 
            //呼び出した時のウィンドウズの上
            var window_top = $(window).scrollTop();
            //呼び出した時のウィンドウズの下
            var window_bottom = window_top + windowHeight;
 
            //ナビゲーションバーに色を付ける。
            spyScroll(window_top, window_bottom);
 
            //スクロールする時にイベントを発生してナビゲーションバーに色を変更する。
            $(window).scroll(function () {
                //現在の上
                var scroll_top = $(this).scrollTop();
                //現在の下
                var scroll_bottom = scroll_top + windowHeight;
                //ナビゲーションバーに色付け。
                spyScroll(scroll_top, scroll_bottom);
            });
 
        });
 
    </script>
 
cs


일본에서 개발하니 일본어 설명 ..


네비게이션 리스트를 불러와서 첫번째 꺼는 빼는데 타이틀이라 필요 없어서 뺐음.

Comments