親に向かってなんだそのz-indexは
by
sadnessOjisan
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
親に向かってなんだその z-indexは!! Yuta Ide(@oijsan) 1
Slide 2
Slide 2 text
Yuta Ide(@ojisan) 株式会社リクルートライフスタイル 新卒2年⽬ • React • Redux & redux-saga • NextJS • GatsbyJS Airメイト (PC / iPad / Mobile ) 2
Slide 3
Slide 3 text
3
Slide 4
Slide 4 text
_⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈_ > JSのイベントなのに, CSSのお話 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ 4
Slide 5
Slide 5 text
今⽇、話すこと • 要素の重なり順の扱い⽅ • z-indexにまつわる怪奇現象 5
Slide 6
Slide 6 text
プランナー「管理テーブル作ってほしいな」 6
Slide 7
Slide 7 text
つくったもの 7
Slide 8
Slide 8 text
つくったもの 枠内スクロール スクロール固定(position: sticky) モーダルの開閉 ツールチップ z-indexを⾼く設定(スク ロールの⼀番⼿前に来る) 8
Slide 9
Slide 9 text
つくったもの モーダルを閉じるボタン モーダルを閉じようとすると確認ダイアログ 9
Slide 10
Slide 10 text
案件前のお気持ち (絶対やばい…絶対やばい…絶対崩れる…) (要素の上に要素を重ねすぎだろ、、、 別ページに分けてくれよ・・・) 10
Slide 11
Slide 11 text
z-index + position = 怪奇現象 11
Slide 12
Slide 12 text
怪奇現象 モーダルを突破して来る謎のやつ 12
Slide 13
Slide 13 text
13
Slide 14
Slide 14 text
なんで、こんなことが起きたか 14
Slide 15
Slide 15 text
スクロール固定(position: sticky) z-indexを⾼く設定(スクロールの⼀番⼿前に来る) 疑似コード 15
Slide 16
Slide 16 text
⼀番⼿前にくるのが、 z-index持ちのTable header 16
Slide 17
Slide 17 text
&
「親に向かってなんだそのz-indexは!」 17
Slide 18
Slide 18 text
Solution • modalをopen時に、 z-index=0 • modalをopen時に、 stickyを解除 • modalに⾼いz-indexを設定 18
Slide 19
Slide 19 text
Solution • modalをopen時に、 z-index=0 • modalをopen時に、 stickyを解除 • modalに⾼いz-indexを設定 19
Slide 20
Slide 20 text
⼦供より親が強くなって解決!!! 20
Slide 21
Slide 21 text
おしまい 21
Slide 22
Slide 22 text
22
Slide 23
Slide 23 text
⼤きいz-indexを使うのは、 親の⽴場として⼤⼈げ無い! 23
Slide 24
Slide 24 text
z-indexの管理をそもそも したくない!! 24
Slide 25
Slide 25 text
それ、CSSの標準機能でできます 25
Slide 26
Slide 26 text
Stack Context 26
Slide 27
Slide 27 text
そもそもz-indexの数値の意味は? 27
Slide 28
Slide 28 text
z-indexの数値の意味 要素の重なり順 28
Slide 29
Slide 29 text
z-indexの数値の意味 同じstack context内での要素の重なり順 29
Slide 30
Slide 30 text
Stack context z-indexの効果の影響範囲 30
Slide 31
Slide 31 text
注:どんな要素も要素が作る、 ルートコンテキストに所属する 31
Slide 32
Slide 32 text
header要素とモーダルは同じルートコンテキストに 所属している => z-indexの⾼い⽅が前にくる 疑似コード 32
Slide 33
Slide 33 text
突破していしる要素を、 新しいコンテキストで包み、 z-indexの数値が外に漏れないようにする 33
Slide 34
Slide 34 text
コンテキストの作り⽅ https://developer.mozilla.org/ja/docs/Web/Guide/CS S/Understanding_z_index/The_stacking_context • position: absolute or relative と z-indexを当てる • position: sticky or fixedを当てる • opacity を1以下にする 34
Slide 35
Slide 35 text
opacityを設定する 35
Slide 36
Slide 36 text
36
Slide 37
Slide 37 text
position: relativeを設定する 37
Slide 38
Slide 38 text
疑似コード 38
Slide 39
Slide 39 text
39
Slide 40
Slide 40 text
Stack contextを上⼿に使えば、 ⼦がどんなz-indexを持っていても、 スタイルの崩れを防げる 40
Slide 41
Slide 41 text
⼦供がz-indexを使って、⾔うことを聞かないなら、 Stack contextに閉じ込めてやりましょう。 教訓 今⽇のコード: https://github.com/sadnessOjisan/DialogOnModalOnTooltipOnTable 41