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

回答編集履歴

1

解説を追記

2019/08/31 18:11

投稿

frodo821
frodo821

スコア322

answer CHANGED
@@ -1,7 +1,9 @@
1
- 質問3の答え: 行ごとのアニメーションは、spanで行を囲っちゃうのが手だと思います。
2
- 質問1の答え: 縦スクロールとの連動は、onscrollイベントをlistenして、event.target.scrollTopを読むとスクロールの絶対量がpxで取得できます。
3
- 質問2の答え: 「特定のメッセジが画面に表れたとき」に何か起こしたいなら、色々な方法考えられますが、そのメッセージのspanに対して「現た」ことを示すカスタムイベントを発火させるのが一番拡張性が高気がします。
1
+ 質問3の答え: 行ごとアニメーションは、spanで行囲っちゃうのが手だと思います。それ難しければ、それこそ文字ごにspanで区切っちゃっても問題はなょう。同じ行内にあるかは横の位置を比較すれば判定できます
4
2
 
5
- ちょっとTeratailで回答できる範囲を越ているような気がするgithubか何かにproject上げいただければforkなりなんなりでアイデア出しはできます
3
+ 1: 縦スクロールと連動はonscrollイベントlistenして、event.target.scrollTop読むとスクロールの絶対量がpxで取得できます。ま、横スクロールelement.scrollTo()メソッド実現できます。scrollOptions.behavior = 'smooth'にEdgeやSafariは対応していませんが、こちらは適切なpolyfillが存在します。
6
4
 
5
+ 質問2の答え: 「特定のメッセージが画面に表れたとき」に何かを起こしたいのなら、色々な方法が考えられますが、そのメッセージのspanに対して「現れた」ことを示すカスタムイベントを発火させるのが一番拡張性が高い気がします。spanが画面内に入ったことの判定はIntersectionObserver APIを使うか、scrollイベントの度に横の位置で判定すればいいでしょう。
6
+
7
+ この質問は範囲が広すぎて、ちょっとTeratailで回答できる問題の範囲を越えているような気がするので、githubか何かにprojectを上げていただければ、forkなりなんなりでアイデアを出したりはできますよ。
8
+
7
9
  難しければ回答に追記という形で幾つかサンプルコードをあげてみます。