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
window.matchMediaの話
Search
kokushin
February 26, 2018
Programming
1
160
window.matchMediaの話
Nagoya js @20180225
kokushin
February 26, 2018
Tweet
Share
More Decks by kokushin
See All by kokushin
AI彼女とペアプロする話
kokushin
2
450
AI彼女の感情制御を頑張る話
kokushin
3
810
サイト制作における、より効果的な演出テクニックとは?
kokushin
1
100
Other Decks in Programming
See All in Programming
オレを救った Cline を紹介する
codehex
15
14k
iOSでQRコード生成奮闘記
ktcryomm
2
130
PEPCは何を変えようとしていたのか
ken7253
3
310
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
950
LINE messaging APIを使ってGoogleカレンダーと連携した予約ツールを作ってみた
takumakoike
0
130
CSS Linter による Baseline サポートの仕組み
ryo_manba
1
160
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.6k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
21
4.4k
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
14
4.8k
Go 1.24でジェネリックになった型エイリアスの紹介
syumai
2
300
React 19アップデートのために必要なこと
uhyo
8
1.6k
変化の激しい時代における、こだわりのないエンジニアの強さ
satoshi256kbyte
0
120
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
11
1.3k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Done Done
chrislema
182
16k
Building Your Own Lightsaber
phodgson
104
6.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Automating Front-end Workflow
addyosmani
1369
200k
Side Projects
sachag
452
42k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Building Applications with DynamoDB
mza
93
6.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Transcript
window.matchMediaͷ ɹ@kokushing
window.matchMedia ͬͯ·͔͢ʁ
ͳʹͦΕ • CSSͷϝσΟΞΫΤϦʢͱಉ͡هड़ʣΛJSͰ͑Δ windowΦϒδΣΫτͷϝιου • Οϯυͷ෯ɾߴ͕͞ΫΤϦͷ݅จͱҰக͢Ε matchesϓϩύςΟ͕tureΛฦ͢ • addListenerϝιουΛݺͼग़͢͜ͱͰϦεφΛొ͠ɺɹ resizeΠϕϯτͷΑ͏ʹαΠζมߋΛݕ͢Δ͜ͱՄೳ
• IE10Ҏ্Ͱಈ͘
None
࣮ࡍͷσϞ https://kokushin.github.io/matchMedia/
// メディアクエリリストの作成 const mql = window.matchMedia('(max-width: 767px)'); // クエリの条件分に従って処理させる const
handleScaleChange = (mql) => { if (mql.matches) { /* ウィンドウの横幅が767px以下の場合 */ } else { /* ウィンドウの横幅が768px以上の場合 */ } } // メディアクエリリストをリスナに登録 mql.addListener(handleScaleChange); // 初回実⾏ handleScaleChange(mql);
ϝϦοτ • CSSͷϝσΟΞΫΤϦͱಉ͡هड़ͳͷͰ݅จ͕ཧղ͠ ͍͢ = ಋೖίετΊ • ݅จͱҰகͨ͠ͱ͖ʹҰ͚ͩॲཧ͞ΕΔͷͰonresize ΠϕϯτൃՐ࣌ͷແବͳϑϥάཧΛ͢Δඞཁͳ͍ let
changeFlag = false; if (!changeFlag) { /* ウィンドウサイズが変わったときの処理 */ changeFlag = true; }
ϝσΟΞΫΤϦͱಉ͡ͳͷͰ… • (min-width: 1000px) and (max-width: 1200px) ͳͲෳࡶͳ ݅จॻ͖͍͢ •
(orientation: portrait) (orientation: landscape) ͳͲ ͑ΔͷͰॎԣൺͷผʹ༗ޮ
YES! matchMedia
window.matchMedia - Web API ΠϯλʔϑΣΠε | MDN https://developer.mozilla.org/ja/docs/Web/API/Window/matchMedia
εΫϦϓτ͔ΒͷϝσΟΞΫΤϦͷ༻ | MDN https://developer.mozilla.org/ja/docs/Web/Guide/CSS/Testing_media_queries
એ https://www.makepost.net/