回答編集履歴

1

サンプルコード追加

2015/07/22 05:38

投稿

MakotoMiyazaki
MakotoMiyazaki

スコア297

test CHANGED
@@ -17,3 +17,137 @@
17
17
  domのoffsetをkey:y軸 value:id の連想配列に入れておいて
18
18
 
19
19
  scroll位置によって、必要なIDを取得して移動する、というようなやり方です。
20
+
21
+
22
+
23
+ ざっと作ったので、無駄&汚い処理もありますが…
24
+
25
+ サンプルを作ってみたので参考にしてください。
26
+
27
+ ```JavaScript
28
+
29
+ <html>
30
+
31
+ <head>
32
+
33
+ <title>ScrollSample</title>
34
+
35
+ <script type="text/javascript" src="./libs/jquery-2.1.4.min.js" ></script>
36
+
37
+ <script type="text/javascript">
38
+
39
+ var positions = new Array();
40
+
41
+
42
+
43
+ function next() {
44
+
45
+ var current = $(document).scrollTop();
46
+
47
+ for(t in positions) {
48
+
49
+ if(t > current) {
50
+
51
+ $("body").animate({scrollTop : t}, 400, "swing");
52
+
53
+ return;
54
+
55
+ }
56
+
57
+ }
58
+
59
+ }
60
+
61
+ function prev() {
62
+
63
+ var current = $(document).scrollTop();
64
+
65
+ var prev = 0;
66
+
67
+ for(t in positions) {
68
+
69
+ if(t >= current) {
70
+
71
+ $("body").animate({scrollTop : prev}, 400, "swing");
72
+
73
+ return;
74
+
75
+ }
76
+
77
+ prev = t;
78
+
79
+ }
80
+
81
+ }
82
+
83
+
84
+
85
+ function init() {
86
+
87
+ for(var i = 1; i <= 9; i++) {
88
+
89
+ var offset = $("#" + i).offset();
90
+
91
+ positions[offset.top] = i;
92
+
93
+ }
94
+
95
+ }
96
+
97
+
98
+
99
+ $(document).ready(function(){
100
+
101
+ init();
102
+
103
+ $("#prev").click(function() {
104
+
105
+ prev();
106
+
107
+ });
108
+
109
+ $("#next").click(function() {
110
+
111
+ next();
112
+
113
+ });
114
+
115
+ });
116
+
117
+ </script>
118
+
119
+ </head>
120
+
121
+ <body>
122
+
123
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="1">1</div>
124
+
125
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="2">2</div>
126
+
127
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="3">3</div>
128
+
129
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="4">4</div>
130
+
131
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="5">5</div>
132
+
133
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="6">6</div>
134
+
135
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="7">7</div>
136
+
137
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="8">8</div>
138
+
139
+ <div style="border : 1px solid black;height : 200px;width : 200px" id="9">9</div>
140
+
141
+ <div style="position : fixed; top : 0px; left : 300px" id="buttonArea">
142
+
143
+ <input type="button" value="prev" id="prev"/>
144
+
145
+ <input type="button" value="next" id="next"/>
146
+
147
+ </div>
148
+
149
+ </body>
150
+
151
+ </html>
152
+
153
+ ```