質問するログイン新規登録

質問編集履歴

3

使用しているjQueryの名前に誤りがあったため修正

2019/09/02 10:16

投稿

garudaflap
garudaflap

スコア6

title CHANGED
@@ -1,1 +1,1 @@
1
- 【jQuery】OnePageScroll.jsでsection毎にcssアニメーションを実行する方法
1
+ 【jQuery】fullPage.jsでsection毎にcssアニメーションを実行する方法
body CHANGED
@@ -1,11 +1,11 @@
1
1
  ### 発生している問題・前提・実現したいこと
2
2
 
3
3
  仕事でWebサイトを作成しており、この度初めて利用させていただきます。
4
- 行き詰ってしまったため力を貸していただけるととても嬉しいです。
5
4
  (htmlとcssは知識が古めですが自力で打てます。javaScriptは詳しくなく参考サイトを見つけてコピペが多いです)
6
5
 
7
6
  フルスクリーンのコンテンツをスクロール単位で切り替える構造のページを作成し、section毎にcssアニメーションの効果が付いた画像を配置しようとしています。
7
+ 参考サイトのサンプル(http://black-flag.net/jquery/20140527-5155.html)をもとに作成。
8
- 【jQuery】OnePageScroll.jsのサンプルサイトをもとに作成。ほぼ構造はそのまま変えておりません。
8
+ ほぼ構造はそのまま変えておりません。
9
9
  各sessionがスクロールで表示されてからアニメーションが開始されるようにしたいです。
10
10
 
11
11
  ### 発生している問題・エラーメッセージ

2

ソースコードより詳しく記載

2019/09/02 10:16

投稿

garudaflap
garudaflap

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- ### 前提・実現したいこと
1
+ ### 発生している問題・前提・実現したいこと
2
2
 
3
3
  仕事でWebサイトを作成しており、この度初めて利用させていただきます。
4
4
  行き詰ってしまったため力を貸していただけるととても嬉しいです。
@@ -9,14 +9,250 @@
9
9
  各sessionがスクロールで表示されてからアニメーションが開始されるようにしたいです。
10
10
 
11
11
  ### 発生している問題・エラーメッセージ
12
- コンテンツ内の画像にアニメションの効果を画像に付けみたところ、他の表示されていないsession内のアニメーション開始されてしまってるようでした
12
+ スクロルしてsessionが切り替わってもアニメーション開始されい。
13
- ただアニメーションを設定するだけでは駄目なのでしょうか。
14
13
 
15
-
16
14
  ### 該当のソースコード
17
-
15
+ 【HTMLファイル】
18
16
  ```ここに言語名を入力
17
+ <!DOCTYPE html>
18
+ <html xml:lang="ja" lang="ja">
19
+ <head>
20
+ <meta charset="utf-8">
21
+ <meta name="viewport" content="user-scalable=0">
22
+ <title>sample</title>
23
+ <link rel="stylesheet" href="css/common.css">
24
+ <!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
25
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
19
26
  <script>
27
+ $(function(){
28
+ var setWrap = $('#container'),
29
+ setBase = $('.stageBase'),
30
+ scrollSpeed = 1000,
31
+ scrollEasing = 'swing',
32
+ slideSpeed = 500,
33
+ slideEasing = 'linear',
34
+ downBtn = 'show', // 'show' or 'hide'
35
+ urlHash = 'on', // 'on' or 'off'
36
+ setHash = '!page';
37
+
38
+ var url = document.URL,
39
+ stageSlide = $('.stageSlide');
40
+
41
+ setWrap.append('<nav id="pageNav"><ul></ul></nav>');
42
+ setBase.each(function(i){
43
+ $('#pageNav ul').append('<li class="pagePn'+(i+1)+'"><a href="javascript:void(0);"></a></li>');
44
+ });
45
+
46
+ if(downBtn == 'show'){
47
+ setWrap.append('<div id="pageDown"><a href="javascript:void(0);"></a></div>');
48
+ }
49
+
50
+ var coreNav = $('#pageNav'),
51
+ setNav = coreNav.find('ul'),
52
+ navList = setNav.find('li'),
53
+ navLength = navList.length;
54
+ setNav.find('li:first').addClass('activeStage');
55
+ $('body').attr('data-page','1');
56
+
57
+ $(window).load(function(){
58
+ // StageHeight
59
+ $(window).resize(function(){
60
+ var wdHeight = $(window).height();
61
+ setBase.css({height:wdHeight});
62
+
63
+ var resizeContTop = parseInt(setWrap.css('top'));
64
+
65
+ if(resizeContTop === 0){
66
+ setWrap.css({top:'0'});
67
+ } else {
68
+ var activeStagePos = setNav.find('li.activeStage');
69
+ activeStagePos.each(function(){
70
+ var posIndex = navList.index(this);
71
+ setWrap.css({top:-(wdHeight*posIndex)});
72
+ });
73
+ }
74
+
75
+ coreNav.each(function(){
76
+ var navHeight = $(this).height();
77
+ $(this).css({top:((wdHeight)-(navHeight))/2});
78
+ });
79
+ }).resize();
80
+
81
+ // MouseWheelEvent
82
+ var mousewheelevent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
83
+ $(document).on(mousewheelevent,function(e){
84
+ if(!(setWrap.is(':animated'))){
85
+ e.preventDefault();
86
+ var delta = e.originalEvent.deltaY ? -(e.originalEvent.deltaY) : e.originalEvent.wheelDelta ? e.originalEvent.wheelDelta : -(e.originalEvent.detail);
87
+ if (delta < 0){
88
+ motionDown();
89
+ } else {
90
+ motionUp();
91
+ }
92
+ }
93
+ });
94
+
95
+ // FlickEvent
96
+ var isTouch = ('ontouchstart' in window);
97
+ setWrap.on(
98
+ {'touchstart': function(e){
99
+ if(setWrap.is(':animated')){
100
+ e.preventDefault();
101
+ } else {
102
+ this.pageY = (isTouch ? event.changedTouches[0].pageY : e.pageY);
103
+ this.topBegin = parseInt($(this).css('top'));
104
+ this.top = parseInt($(this).css('top'));
105
+ this.touched = true;
106
+ }
107
+ },'touchmove': function(e){
108
+ if(!this.touched){return;}
109
+ e.preventDefault();
110
+ this.top = this.top - (this.pageY - (isTouch ? event.changedTouches[0].pageY : e.pageY));
111
+ this.pageY = (isTouch ? event.changedTouches[0].pageY : e.pageY);
112
+ },'touchend': function(e){
113
+ if (!this.touched) {return;}
114
+ this.touched = false;
115
+
116
+ if(((this.topBegin)-30) > this.top){
117
+ motionDown();
118
+ } else if(((this.topBegin)+30) < this.top){
119
+ motionUp();
120
+ }
121
+ }
122
+ });
123
+
124
+ // ScrollUpEvent
125
+ function motionUp(){
126
+ var stageHeightU = setBase.height(),
127
+ contTopUp = parseInt(setWrap.css('top')),
128
+ moveTopUp = contTopUp + stageHeightU;
129
+ $('input,textarea').blur();
130
+ if(!(contTopUp === 0)){
131
+ setWrap.stop().animate({top:moveTopUp},scrollSpeed,scrollEasing);
132
+ setNav.find('li.activeStage').removeClass('activeStage').prev().addClass('activeStage');
133
+
134
+ var acvStageP = parseInt($('body').attr('data-page')),
135
+ setPrev = acvStageP-1;
136
+ $('body').attr('data-page',setPrev);
137
+ if(downBtn == 'show'){
138
+ pagePos();
139
+ }
140
+ }
141
+ if(urlHash == 'on'){
142
+ replaceHash();
143
+ }
144
+ }
145
+
146
+ // ScrollDownEvent
147
+ function motionDown(){
148
+ var stageHeightD = setBase.height(),
149
+ contTopDown = parseInt(setWrap.css('top')),
150
+ moveTopDown = contTopDown - stageHeightD;
151
+ $('input,textarea').blur();
152
+
153
+ var contHeight = setWrap.height(),
154
+ maxHeightAdj = -(contHeight - stageHeightD);
155
+
156
+ if(!(contTopDown == maxHeightAdj)){
157
+ setWrap.stop().animate({top:moveTopDown},scrollSpeed,scrollEasing);
158
+ setNav.find('li.activeStage').removeClass('activeStage').next().addClass('activeStage');
159
+
160
+ var acvStageN = parseInt($('body').attr('data-page')),
161
+ setNext = acvStageN+1;
162
+ $('body').attr('data-page',setNext);
163
+ if(downBtn == 'show'){
164
+ pagePos();
165
+ }
166
+ }
167
+ if(urlHash == 'on'){
168
+ replaceHash();
169
+ }
170
+ }
171
+
172
+ // SideNaviClick
173
+ navList.click(function(){
174
+ if(!(setWrap.is(':animated'))){
175
+ var crtIndex = navList.index(this),
176
+ crtHeight = $(window).height();
177
+ setWrap.stop().animate({top:-(crtHeight*crtIndex)},scrollSpeed,scrollEasing);
178
+ setNav.find('li.activeStage').removeClass('activeStage');
179
+ $(this).addClass('activeStage');
180
+
181
+ $('body').attr('data-page',crtIndex+1);
182
+
183
+ if(downBtn == 'show'){
184
+ pagePos();
185
+ }
186
+ if(urlHash == 'on'){
187
+ replaceHash();
188
+ }
189
+ }
190
+ });
191
+
192
+ // PageDownBtnClick
193
+ $('#pageDown a').click(function(){
194
+ if(!(setWrap.is(':animated'))){
195
+ var navActive = setNav.find('li.activeStage');
196
+ navActive.each(function(){
197
+ var navIndex = navList.index(this),
198
+ setNav = navIndex+1;
199
+ if(!(setNav == navLength)){
200
+ $(this).next().click();
201
+ }
202
+ });
203
+ if(urlHash == 'on'){
204
+ replaceHash();
205
+ }
206
+ }
207
+ });
208
+ function pagePos(){
209
+ var pnAcv = coreNav.find('li.activeStage');
210
+ pnAcv.each(function(){
211
+ var pnIndexN = navList.index(this),
212
+ pnCountN = pnIndexN+1;
213
+ if(pnCountN == navLength){
214
+ $('#pageDown').css({display:'none'});
215
+ } else {
216
+ $('#pageDown').css({display:'block'});
217
+ }
218
+ });
219
+ }
220
+
221
+ // HashReplace
222
+ function replaceHash(){
223
+ var pnAcv = coreNav.find('li.activeStage');
224
+ pnAcv.each(function(){
225
+ var pnIndexN = navList.index(this),
226
+ pnCountN = pnIndexN+1;
227
+ location.hash = setHash + pnCountN;
228
+ });
229
+ }
230
+ if(urlHash == 'on'){
231
+ replaceHash();
232
+ }
233
+
234
+ // OpeningFade
235
+ $('body').css({visibility:'visible',opacity:'0'}).animate({opacity:'1'},1000);
236
+
237
+ // LoadPageMove
238
+ if(url.indexOf(setHash) !== -1){
239
+ var numSplit = ((url.split(setHash)[1])-1);
240
+ navList.eq(numSplit).click();
241
+ }
242
+ });
243
+
244
+ // HashChangeEvent
245
+ if(urlHash == 'on'){
246
+ $(window).on('hashchange',function(){
247
+ var stateUrl = document.URL,
248
+ hashSplit = ((stateUrl.split(setHash)[1])-1);
249
+ navList.eq(hashSplit).click();
250
+ });
251
+ }
252
+ });
253
+ </script>
254
+
255
+ <script>
20
256
  function scrollChk(){
21
257
  var scroll = $(window).scrollTop();
22
258
  var windowHeight = $(window).height();
@@ -37,15 +273,141 @@
37
273
  });
38
274
  </script>
39
275
 
276
+ </head>
277
+
278
+ <body>
279
+
280
+ <div id="container">
281
+
282
+ <section id="stage1" class="stageBase">
283
+ <div class="fieldWrap">
284
+ <p>ここは1ページ目</p>
285
+ </div><!--/.fieldWrap -->
286
+ </section>
287
+
288
+ <section id="stage2" class="stageBase">
289
+ <div class="fieldWrap">
290
+ <p>ここは2ページ目</p>
291
+ <div class="scroll-animation anime01"><img src="img/img.png"></div>
292
+ </div><!--/.fieldWrap -->
293
+ </section>
294
+
295
+ </div><!--/#container-->
296
+
297
+ </body>
298
+ </html>
40
299
  ```
300
+ 【cssファイル】
301
+ ```ここに言語名を入力
302
+ /* =======================================
303
+ reset
304
+ ======================================= */
41
305
 
306
+ * {
42
- ### 試したこと
307
+ margin: 0;
308
+ padding: 0;
309
+ }
43
310
 
44
- スクロールの位置を取得してクラスを実行するタイプのscriptの記述を足してみましたが、アニメーションが実行されません。
311
+ /* =======================================
312
+ CommonElements
313
+ ======================================= */
314
+ body {
315
+ text-align: center;
45
- (.activeが実行されていない感じです)
316
+ position: relative;
317
+ overflow: hidden;
318
+ visibility: hidden;
319
+ }
46
320
 
321
+ /* #container
47
- 解決策、または参考になるサイトなどご存じでしたら誘導していただけると有難いです。
322
+ --------------------------- */
323
+ #container {
324
+ top: 0;
325
+ left: 0;
326
+ width: 100%;
327
+ position: absolute;
328
+ z-index: 1;
329
+ }
48
330
 
49
- ### 補足情報(FW/ツールのバージョンなど)
331
+ /* .stageBase
332
+ --------------------------- */
333
+ .stageBase {
334
+ width: 100%;
335
+ position: relative;
336
+ overflow: hidden;
337
+ }
338
+ .stageBase .fieldWrap {
339
+ padding: 100px 0 0 0;
340
+ text-align: center;
341
+ }
342
+ #stage1 {background:#fff;}
343
+ #stage2 {background:#eee;}
50
344
 
345
+ /* #pageNav
346
+ --------------------------- */
347
+ #pageNav {
348
+ top: 0;
349
+ right: 25px;
350
+ width: 15px;
351
+ text-align: center;
352
+ position: fixed;
353
+ z-index: 2;
354
+ }
355
+ #pageNav ul {
356
+ width: 15px;
357
+ display: block;
358
+ }
359
+ #pageNav ul li {
360
+ padding-bottom: 5px;
361
+ width: 15px;
362
+ height: 15px;
363
+ display: block;
364
+ overflow: hidden;
365
+ }
366
+ #pageNav ul li a {
367
+ width: 15px;
368
+ height: 15px;
369
+ background: transparent url(../img/nav.png) no-repeat center center;
370
+ display: block;
371
+ }
372
+ #pageNav ul li.activeStage a {
373
+ background: transparent url(../img/nav_acv.png) no-repeat center center;
374
+ }
375
+
376
+ /* #pageDown
377
+ --------------------------- */
378
+ #pageDown {
379
+ bottom: 0;
380
+ left: 0;
381
+ width: 100%;
382
+ height: 40px;
383
+ text-align: center;
384
+ position: fixed;
385
+ overflow: hidden;
386
+ z-index: 3;
387
+ }
388
+ #pageDown a {
389
+ margin: 0 auto;
390
+ width: 30px;
391
+ height: 30px;
392
+ background: transparent url(../img/next_arw.png) no-repeat center center;
393
+ display: block;
394
+ }
395
+
396
+
397
+ /* #animation
398
+ --------------------------- */
399
+ .anime01 {
400
+ transform: scale(2) rotate(0deg);
401
+ opacity: 0;
402
+ transition: 2s cubic-bezier(.4, 0, .2, 1);
403
+ }
404
+
405
+ .anime01.active {
406
+ transform: scale(1) rotate(0deg);
407
+ margin-top: 0;
408
+ opacity: 1;
409
+ }
410
+
411
+ ```
412
+
51
413
  ここにより詳細な情報を記載してください。

1

jQueryの名称が間違っていたため修正しました

2019/09/02 04:05

投稿

garudaflap
garudaflap

スコア6

title CHANGED
@@ -1,1 +1,1 @@
1
- 【jQuery】pagePiling.jsでsection毎にcssアニメーションを実行する方法
1
+ 【jQuery】OnePageScroll.jsでsection毎にcssアニメーションを実行する方法
body CHANGED
@@ -5,17 +5,14 @@
5
5
  (htmlとcssは知識が古めですが自力で打てます。javaScriptは詳しくなく参考サイトを見つけてコピペが多いです)
6
6
 
7
7
  フルスクリーンのコンテンツをスクロール単位で切り替える構造のページを作成し、section毎にcssアニメーションの効果が付いた画像を配置しようとしています。
8
- 【jQuery】pagePiling.jsのサンプルサイトをもとに作成。ほぼ構造はそのまま変えておりません。
8
+ 【jQuery】OnePageScroll.jsのサンプルサイトをもとに作成。ほぼ構造はそのまま変えておりません。
9
9
  各sessionがスクロールで表示されてからアニメーションが開始されるようにしたいです。
10
10
 
11
11
  ### 発生している問題・エラーメッセージ
12
12
  コンテンツ内の画像にアニメーションの効果を画像に付けてみたところ、他の表示されていないsession内のアニメーションも開始されてしまっているようでした。
13
13
  ただアニメーションを設定するだけでは駄目なのでしょうか。
14
14
 
15
- ```
16
15
 
17
- ```
18
-
19
16
  ### 該当のソースコード
20
17
 
21
18
  ```ここに言語名を入力