Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IntersectionObserverはいいぞ
Search
Leko
September 15, 2017
Programming
3
2.9k
IntersectionObserverはいいぞ
IntersectionObserverを使っていただきたいだけの話
Leko
September 15, 2017
Tweet
Share
More Decks by Leko
See All by Leko
エンジニアと治療アプリ®
leko
0
1k
Node.jsにContributeして一ヶ月でCollaboratorになった
leko
5
6.9k
React NativeアプリでE2Eテストを回してみた
leko
8
2.6k
React Nativeで医療機器作ってます
leko
4
1.6k
趣味では使っているが 仕事には使ってないツール
leko
1
190
レガシーな開発現場にUTを入れてCIを導入した話
leko
0
6.1k
MySQLがゆるふわなのはどう考えてもSQLモードが悪い!
leko
1
260
Other Decks in Programming
See All in Programming
Product Management LT会_クアンド新家
shinshin
0
250
iOSアプリでクリップボードにコピーしたことをユーザーに伝えるちょうど良いフィードバックを探す
ski
0
100
SRE チーム立ち上げ前に考えたこと・取り組んだこと / Considerations and Preparations Before Establishing an SRE Team
mackey0225
3
320
GraphQL はいいぞ! ~Laravel で学ぶ GraphQL 入門~
azuki
1
160
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
Terraformテスト入門
msato
0
540
CSC307 Lecture 09
javiergs
PRO
1
500
最近追加した型の紹介とその振り返り
aki19035vc
0
180
今こそ始める、CDKコンストラクトライブラリ開発 ― 入門から実践まで
tmokmss
1
930
CSC307 Lecture 10
javiergs
PRO
0
310
유연한 Composable 설계
l2hyunwoo
0
380
Namespace on read
tagomoris
2
370
Featured
See All Featured
For a Future-Friendly Web
brad_frost
173
9.2k
How To Stay Up To Date on Web Technology
chriscoyier
784
250k
Typedesign – Prime Four
hannesfritz
37
2.2k
Building Your Own Lightsaber
phodgson
101
5.9k
Speed Design
sergeychernyshev
9
270
Designing for Performance
lara
604
67k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
105
6.8k
GraphQLの誤解/rethinking-graphql
sonatard
59
9.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
229
130k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
17
8.7k
Agile that works and the tools we love
rasmusluckow
325
20k
Transcript
LT: IntersectionObserverはいいぞ @L_e_k_o
しごと 「CureApp禁煙」という治療アプリの開発 しゅみ プログラミング、トレラン、射撃 きになる react-native-web、OpenAPI(v3)、Almin L_e_k_o Leko れこ
Copyright CureApp, Inc. All Rights Reserved.
Scroll event なるべく頑張りたくない
• 画像の遅延ロード • 無限スクロール • スクロールスパイ(例:Googleのブログ) • 一定のスクロール位置からposition: fixed •
Adのインプレッション計測 • 視差効果・パララックス Scroll eventよくある処理
• scrollイベントの負荷を減らす - Qiita • Webフロントエンドに従事するお前らはいい加減高頻度イベン トとレイアウトとスタイリングの付き合い方を考えろ - Qiita •
JavaScriptでの多発するイベントの間引き処理 | 技術コラム | つみきブログ Scroll eventよくあるTips
$(window).on(‘scroll’, throttle(e => …) ) IntersectionObserver
IntersectionObserver The Intersection Observer API provides a way to asynchronously
observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. Intersection Observer API - Web APIs | MDN
Forced Synchronous Layout その時点での DOM の位置を取得するために Layout 計算を行う。 この計算は同期処理であり、つまりブロックが発生する。さらにそれを onscroll
など頻度 の高いイベントの中で行うのは、スムーズなスクロール表示のためのブラウザの最適化を 阻害してしまう。 - Intersection Observer を用いた要素出現検出の最適化 | blog.jxck.io
やや先読み遅延ロード https://codepen.io/L_e_k_o/details/JroVxy
56行でスター1600
threshold + intersectionRatio https://codepen.io/L_e_k_o/details/Ewazyb
消えたらfixed、見えたらstatic https://codepen.io/L_e_k_o/details/OxPYay/
polyfill:w3c/IntersectionObserver
• 見えてる/見えない = entry.isIntersecting • どれくらい先読みするか = options.rootMargin • どれくらい見えてるか
= entry.intersectionRatio • 見えてる間のイベント発生頻度 = options.threshold 正確ではないまとめ
IntersectionObserverはいいぞ More details: Intersection Observer API - Web APIs |
MDN IntersectionObserver/explainer.md at master · w3c/IntersectionObserver Intersection Observer を用いた要素出現検出の最適化 | blog.jxck.io openfresh/viewport-observer (React) 96 line heavyy/vue-intersect (Vue)