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

回答編集履歴

2

コメントを受けて追記

2020/08/08 03:53

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -42,4 +42,49 @@
42
42
  document.querySelectorAll('section').forEach(e => {
43
43
  observer.observe(e);
44
44
  });
45
- ```
45
+ ```
46
+
47
+
48
+ # コメントを受けて追記
49
+
50
+ [サンプル](https://jsfiddle.net/Lhankor_Mhy/8d5nhLau/)
51
+
52
+ ```css
53
+ section {
54
+ width: 100%;
55
+ height: 100vh;
56
+ box-sizing: border-box;
57
+ opacity: 0;
58
+ transition: 1s;
59
+ position: fixed;
60
+ }
61
+
62
+ section.active {
63
+ opacity: 1;
64
+ z-index: 2;
65
+ }
66
+ ```
67
+
68
+ ```js
69
+ let f = true;
70
+ document.addEventListener('wheel', e => {
71
+ if (f) {
72
+ const target = document.querySelector('section.active');
73
+ const shown = (e.deltaY > 0) ?
74
+ target.nextElementSibling :
75
+ target.previousElementSibling;
76
+ shown?.classList.add('active');
77
+ target.classList.remove('active');
78
+ f = false;
79
+ }
80
+ });
81
+ document.querySelectorAll('section').forEach(el => el.addEventListener('transitionend', e => {
82
+ f = true;
83
+ }));
84
+ ```
85
+
86
+ 境界の処理とかはしてないので、上手くやってください。
87
+
88
+ ---
89
+
90
+ ただ、これ、自前で実装するよりも、パララックスやスクロールのプラグインを使った方が上手くいくかもしれませんよ。

1

余分なコードを削除

2020/08/08 03:53

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -21,10 +21,7 @@
21
21
  section {
22
22
  width: 100%;
23
23
  height: 100vh;
24
- background-color: silver;
25
- border: solid snow;
26
24
  scroll-snap-align: start;
27
- box-sizing: border-box;
28
25
  opacity: 0;
29
26
  transition: 1s;
30
27
  }