Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Drupal テーマ開発入門講座 第5回 ブレークポイントとメディアクエリ
Search
アクイアジャパン Acquia Japan
June 01, 2022
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Drupal テーマ開発入門講座 第5回 ブレークポイントとメディアクエリ
https://www.acquia.com/jp/events/webinars/drupal-theming-development-vol5
アクイアジャパン Acquia Japan
June 01, 2022
More Decks by アクイアジャパン Acquia Japan
See All by アクイアジャパン Acquia Japan
Auth0 by OktaとDrupalで実践!認証付きアプリケーションの新しいアプローチ
acquiajp
0
240
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
290
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
140
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
250
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
61
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
120
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
410
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
110
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
150
Other Decks in Programming
See All in Programming
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.9k
Webの地図
yosuke_furukawa
PRO
6
5.1k
APNsからLive Activityを開始する話
yumnumm
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
450
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
180
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
330
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
120
mrbgem 三角測量 開発
ogom
0
200
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
440
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
How to make the Groovebox
asonas
2
2.5k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Exploring anti-patterns in Rails
aemeredith
4
520
Become a Pro
speakerdeck
PRO
31
6.3k
So, you think you're a good person
axbom
PRO
2
2.2k
Everyday Curiosity
cassininazir
0
340
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Discover your Explorer Soul
emna__ayadi
2
1.3k
WENDY [Excerpt]
tessaabrams
14
40k
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
ୈ5ճ ϒϨʔΫϙΠϯτͱϝσΟΞΫΤϦ Drupal ςʔϚ ։ൃೖߨ࠲
Drupal ςʔϚ։ൃೖߨ࠲γϦʔζ – Drupalʹ͓͚ΔʮςʔϚʯͱɺWebαΠτͷݟͨΛ୲͏ػೳͰ͢ɻຊΣϏφʔγϦʔ ζͰɺDrupalͷςʔϚ։ൃʹؔ͢ΔجૅࣝΛղઆ͠·͢ɻ – DrupalͷϑϩϯτΤϯυपΓʹ͍ͭͯମܥతʹֶͼ͍ͨํɺࣗͰΧελϜςʔϚΛ࡞Ε ΔΑ͏ʹͳΓ͍ͨํɺΞΫΠΞೝఆσϕϩούʔࢼݧΛࢦ͢ํʹ͓͢͢ΊͰ͢ɻ – DrupalΛҰ௨Γૢ࡞ͨ͜͠ͱ͕͋ΔํΛରͱ͍ͯ͠·͢ɻ·ͩDrupalΛ৮ͬͨ͜ͱ͕ແ
͍ํɺॳ৺ऀ͚DrupalνϡʔτϦΞϧಈըʢຊޠʣΛઌʹݟ͓ͯ͘ͱΑΓཧղ͕ਂ ·Γ·͢ɻ
1. ϝσΟΞΫΤϦͷ֓ཁ 2. DrupalͷϒϨʔΫϙΠϯτ 3. ࿅श ΞδΣϯμ
ϝσΟΞΫΤϦͷ֓ཁ
– ը໘෯ʹԠͯ͡ҟͳΔϨΠΞτΛ࡞Ͱ ͖ΔɺCSSͷػೳͰ͢ɻ – 1ͭͷϖʔδͰෳͷҟͳΔදࣔڥʹରԠ ͢ΔϨεϙϯγϒWebσβΠϯΛ࣮ݱ͢Δ͜ ͱ͕Ͱ͖·͢ɻ ϝσΟΞΫΤϦ(Media Query)ͱ λϒϨοτ
εϚϗ σεΫτοϓ
ϝσΟΞΫΤϦͷجຊߏจ @media media-type and (media-feature-rule) { /* CSS نଇΛ͜͜ʹ */
} CSSϑΝΠϧʹهड़͠·͢ɻ
ϝσΟΞΫΤϦͷجຊߏจ @media media-type and (media-feature-rule) { /* CSS نଇΛ͜͜ʹ */
} ʮϝσΟΞλΠϓʯ Λࢦఆ ʮϝσΟΞಛੑʯΛ ༻͠ͳ͕Βϧʔϧ Λهड़ { } ʹCSSΛهड़ɻ ϝσΟλΠϓɺϧʔϧʹ߹க͠ ͨ߹ɺCSS͕ద༻͞ΕΔɻ
ϝσΟΞλΠϓͱ – σόΠεͷҰൠతͳΧςΰϦΛදͨ͠ͷͰ͢ɻ – ࣍ͷ͕ར༻ՄೳͰ͢ɻ – allɿશͯͷσόΠεʹదͨ͠ͷ – printɿҹ༻ը໘Λର –
screenɿओʹը໘Λର – ϝσΟΞλΠϓͷࢦఆඞਢͰ͋Γ·ͤΜɻະࢦఆͷ߹ all ͕ ݺͼग़͞Ε·͢ɻ
ϝσΟΞλΠϓΛࢦఆͨ͠ྫ ྫɿϖʔδͷҹը໘ͷΈbodyཁૉͷϑΥϯταΠζΛ12ptʹઃఆ ͢Δ߹ @media print { body { font-size: 12pt;
} }
ϝσΟΞಛੑͱ – ϢʔβʔΤʔδΣϯτɺग़ྗσόΠεɺڥͷಛఆͷಛੑΛهड़͢Δ ͨΊʹ༻͞Ε·͢ɻ – ओͳϝσΟΞಛੑ – orientationɿը໘ͷ͖Λఆ – heightɿը໘ͷߴ͞Λఆ
– widthɿը໘ͷ෯Λఆ – ଞʹͨ͘͞Μʂৄ͘͠MDN Web Docs – ϝσΟΞಛੑʹؔͯ͠ɺࢦఆඞਢͰ͋Γ·ͤΜɻ
ϝσΟΞಛੑΛࢦఆͨ͠ྫ ྫɿϝσΟΞλΠϓ͕εΫϦʔϯɺ͔ͭը໘෯͕600pxʹ߹கͨ͠ ࡍʹbodyཁૉͷςΩετͷ৭Λ৭ʹ͢Δ @media screen and (width: 600px) { body
{ color: red; } }
ϒϨʔΫϙΠϯτͱ – ը໘෯ʹԠͯ͡ϨΠΞτΛΓସ͑ΔϙΠϯτΛҙຯ͠·͢ɻ – ଟ͘ͷ߹ɺϝσΟΞΫΤϦͷwin-widthmax-widthʹΑͬͯهड़͞Ε·͢ɻ @media all and (min-width: 560px)
{ /* ࠷খ෯͕560pxͷ߹ */ } @media all and (min-width: 851px) { /* ࠷খ෯͕851pxͷ߹ */ }
BartikͰ༻͞ΕΔϒϨʔΫϙΠϯτͷྫ /* ԼهͷϝσΟΞΫΤϦҎ֎(0ʙ559px)ͷը໘෯Ͱద༻͞ΕΔ */ @media all and (min-width: 560px) {
/* 560ʙ850pxͷ෯Ͱద༻͞ΕΔ */ } @media all and (min-width: 851px) { /* 851pxҎ্ͷ෯Ͱద༻͞ΕΔ */ } core/themes/bartik/css/components/featured-bottom.css
ࢀߟ) ϞόΠϧϑΝʔετͱσεΫτοϓϑΝʔετ https://joegalley.com/articles/mobile-first-vs-desktop-first-media-queries Qɿmin-width max-width Ͳ͏͍͚Δ͖͔ʁ Aɿ࣮͢ΔαΠτ͕ ɹϞόΠϧϑΝʔετͷ߹
min-width Λ༻͠ɺ ɹσεΫτοϓϑΝʔετͷ߹ max-width Λ༻͢Δɻ ɹͦ͏͢Δ͜ͱͰɺϝσΟΞΫΤϦͷ֎ଆͰෳࡶʹͳΓ͑Δը໘෯ɹ ΛελΠϦϯάͰ͖ΔΑ͏ʹͳΔɻ
ࢀߟ) ϞόΠϧϑΝʔετͱσεΫτοϓϑΝʔετ ϞόΠϧϑΝʔετͷ߹ σεΫτοϓϑΝʔετͷ߹ /* ԼهͷϝσΟΞΫΤϦҎ֎(1201pxҎ্)ͷը໘෯Ͱ ద༻͞ΕΔ */ @media (max-width:
1200px) { /* 993ʙ1200pxͷ෯Ͱద༻͞ΕΔ */ } @media (max-width: 992px) { /* 769ʙ992pxͷ෯Ͱద༻͞ΕΔ */ } @media (max-width: 768px) { /* 0ʙ768pxͷ෯Ͱద༻͞ΕΔ */ } /* ԼهͷϝσΟΞΫΤϦҎ֎(0ʙ767px)ͷը໘෯Ͱ ద༻͞ΕΔ */ @media (min-width: 768px) { /* 768ʙ991pxͷ෯Ͱద༻͞ΕΔ */ } @media (min-width: 992px) { /* 992ʙ1199pxͷ෯Ͱద༻͞ΕΔ */ } @media (min-width: 1200px) { /* 1200pxҎ্ͷ෯Ͱద༻͞ΕΔ */ } https://joegalley.com/articles/mobile-first-vs-desktop-first-media-queries ϝσΟΞΫΤ Ϧͷ֎ଆͰɺ Ұ൪هड़ྔ͕ ଟ͘ͳΔ
࠶ܝ) BartikͰ༻͞ΕΔϒϨʔΫϙΠϯτͷྫ /* ԼهͷϝσΟΞΫΤϦҎ֎(0ʙ559px)ͷը໘෯Ͱద༻͞ΕΔ */ @media all and (min-width: 560px)
{ /* 560ʙ850pxͷ෯Ͱద༻͞ΕΔ */ } @media all and (min-width: 851px) { /* 851pxҎ্ͷ෯Ͱద༻͞ΕΔ */ } BartikͰɺϞόΠϧϑΝʔετɺσεΫτοϓϑΝʔετɺͲͪΒͷΞϓϩʔ νΛऔ͍ͬͯΔͰ͠ΐ͏ʁ
DrupalͷϒϨʔΫϙΠϯτ
BreakpointϞδϡʔϧͱ *.breakpionts.yml – BartikͷྫΛݟ͍͍ͯͨͩͨ௨ΓɺDrupalͰ௨ৗͷϑϩϯτΤϯυ։ ൃͱಉ༷ʹɺCSSϑΝΠϧʹϝσΟΞΫΤϦΛهड़͢Δ͜ͱͰϒϨʔΫ ϙΠϯτΛՃ͠ɺσόΠεʹԠͨ͡ϨΠΞτΛ࡞Ͱ͖·͢ɻ – ςʔϚͰ༻͍ͯ͠ΔϒϨʔΫϙΠϯτΛ *.breakpoints.yml ʹఆٛ͢
Δ͜ͱͰɺίΞͷBreakpointϞδϡʔϧΛհͯ͠ϒϨʔΫϙΠϯτͷ ใΛDrupalαΠτͰར༻Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ – DrupalίΞͰɺResponsive ImageϞδϡʔϧͰϒϨʔΫϙΠϯτ ใΛར༻Ͱ͖·͢ɻ
Responsive ImageϞδϡʔϧͱ – ςʔϚ/ϞδϡʔϧʹΑͬͯఏڙ͞ΕΔϒϨʔΫϙ ΠϯτใΛ༻ͯ͠ɺϖʔδͷը໘෯ʹԠͯ͡ ҟͳΔαΠζͷը૾ΛಡΈࠐΉ͜ͱ͕Ͱ͖·͢ɻ – Responsive ImageϞδϡʔϧͰςʔϚ/Ϟδϡʔ ϧͷϒϨʔΫϙΠϯτใΛಡΈࠐΉඞཁ͕͋Δ
ͨΊɺBreakpointϞδϡʔϧ͕ඞཁͰ͢ɻ – Responsive ImageϞδϡʔϧɺHTML5ͷ pictureλάΛ༻͍ͯը૾ΛαΠτʹදࣔ͠·͢ɻ
Responsive ImageϞδϡʔϧͱ – εϚϗͷΑ͏ͳখ͍͞ը໘Ͱϖʔδ͔ΒΞΫηε͕͋Δ߹ɺσόΠεʹૹ৴͞ ΕΔը૾αΠζΛখ͘͞Ͱ͖ɺϖʔδͷಡΈࠐΈ࣌ؒΛॖͰ͖ΔՄೳੑ͕͋ Γ·͢ɻ – ·ͨɺը໘ͷେ͖͍σΟεϓϨΠɺRetinaσΟεϓϨΠͳͲߴըૉσόΠε͔ ΒΞΫηε͕͋Δ߹ɺେ͖͍αΠζͷը૾Λૹ৴͢Δ͜ͱͰɺը૾͕ߥΕΔ ͜ͱͳ͘៉ྷʹݟͤΔ͜ͱ͕Ͱ͖·͢ɻ
*.breakpionts.yml ͲΜͳ࣌ʹඞཁ͔ QɿΧελϜςʔϚͰ *.breakpoints.yml ͕ඞཁʹͳΔγʔϯͬͯͲΜͳ࣌ʁ AɿResponsive ImageϞδϡʔϧͳͲɺDrupalαΠτͷ ɹଞϞδϡʔϧ/ςʔϚͰϒϨʔΫϙΠϯτใΛར༻͍ͨ࣌͠ʹ
ɹඞཁͰ͢ɻ ɹٯΛݴ͏ͱɺ DrupalαΠτͰϒϨʔΫϙΠϯτใΛ ɹར༻͠ͳ͍ʢResponsive ImageϞδϡʔϧΛར༻͠ͳ͍ͳͲʣ߹ɺ ɹ*.breakpoints.ymlඞཁ͋Γ·ͤΜɻ
*.breakpoints.ymlͷهड़ํ๏ bartik.mobile: label: mobile mediaQuery: '' weight: 0 multipliers: -
1x bartik.narrow: label: narrow mediaQuery: 'all and (min-width: 560px) and (max-width: 850px)' weight: 1 multipliers: - 1x bartik.wide: label: wide mediaQuery: 'all and (min-width: 851px)' weight: 2 multipliers: - 1x ઃఆϑΝΠϧɺओʹϥϕϧͱϝσΟΞΫΤϦͰߏ ͞Ε·͢ɻ – bartik.mobileͳͲ࠷্ҐͷΩʔϒϨʔΫϙΠ ϯτͷϚγϯ໊ɻϑΝΠϧͰҰҙͰ͋Δඞཁ ͋Γɻ – labelɿϒϨʔΫϙΠϯτΛࣔ͢ɺਓ͕ಡΉͨ Ίͷϥϕϧ໊ɻ༁Մೳɻ – mediaQueryɿϒϨʔΫϙΠϯτͰදݱ͍ͨ͠ ϝσΟΞΫΤϦɻۭࢦఆՄೳɻ – weightɿϒϨʔΫϙΠϯτͷॱংɻ – multipliersɿϐΫηϧղ૾ɻ1xɺ1.5xɺ2xͰ ࢦఆɻ
ԋश ΧελϜςʔϚͰϒϨʔΫϙΠϯτઃఆϑΝΠϧΛ࡞͠Α͏ – *.breakpoints.yml ϑΝΠϧͷ࡞ – ͲΜͳϒϨʔΫϙΠϯτΛఆٛ͢Δ͔ – ϨεϙϯγϒΠϝʔδϞδϡʔϧͰϒϨʔΫϙΠϯτใΛ׆ ༻ͯ͠ΈΑ͏
࿅श
*.breakpoints.yml ɺԿΛߦ͏ͨΊͷϑΝΠϧͰ͔͢ʁ 1. ςʔϚͰ༻͢ΔϒϨʔΫϙΠϯτΛఆٛ͠ɺը໘෯ʹԠͯ͡༻͢Δ CSSΛΓସ͑ΔͨΊʹ༻͞ΕΔɻ 2. ςʔϚͰ͋Β͔͡Ίఆٛ͞Ε͍ͯΔϒϨʔΫϙΠϯτΛ্ॻ͖͢ΔͨΊʹ ༻͞ΕΔɻ 3. ςʔϚ։ൃͰσόοά࡞ۀΛߦ͏ͨΊʹ༻͞ΕΔɻ
4. ίΞͷResponsive ImageϞδϡʔϧʹϒϨʔΫϙΠϯτใΛఏڙ͢Δͨ Ίʹ༻͞ΕΔɻ ࿅श1
*.breakpoints.yml ɺԿΛߦ͏ͨΊͷϑΝΠϧͰ͔͢ʁ 1. ςʔϚͰ༻͢ΔϒϨʔΫϙΠϯτΛఆٛ͠ɺը໘෯ʹԠͯ͡༻͢Δ CSSΛΓସ͑ΔͨΊʹ༻͞ΕΔɻ 2. ςʔϚͰ͋Β͔͡Ίఆٛ͞Ε͍ͯΔϒϨʔΫϙΠϯτΛ্ॻ͖͢ΔͨΊʹ ༻͞ΕΔɻ 3. ςʔϚ։ൃͰσόοά࡞ۀΛߦ͏ͨΊʹ༻͞ΕΔɻ
4. ίΞͷResponsive ImageϞδϡʔϧʹϒϨʔΫϙΠϯτใΛఏڙ͢Δͨ Ίʹ༻͞ΕΔɻ ࿅श1 4
ςʔϚʹ͓͚Δ *.breakpoints.yml ϑΝΠϧʹ͍ͭͯͷਖ਼͍͠هड़ͲΕͰ ͔͢ʁ 1. ϑΝΠϧͷ༰Drupalͷཧը໘͔Βฤू͕ߦ͑Δɻ 2. ϑΝΠϧͷ༰ΛDrupalαΠτͰ׆༻͢ΔʹɺBreakpointϞδϡʔ ϧΛ༗ޮʹ͠ͳ͚ΕͳΒͳ͍ɻ 3.
ϑΝΠϧʹهड़͢ΔϝσΟΞΫΤϦɺςʔϚͷCSSͰར༻͢ΔϒϨʔ ΫϙΠϯτͷϝσΟΞΫΤϦͱશҰகͤ͞ͳ͍ͱػೳ͠ͳ͍ɻ ࿅श2
ςʔϚʹ͓͚Δ *.breakpoints.yml ϑΝΠϧʹ͍ͭͯͷਖ਼͍͠هड़ͲΕͰ ͔͢ʁ 1. ϑΝΠϧͷ༰Drupalͷཧը໘͔Βฤू͕ߦ͑Δɻ 2. ϑΝΠϧͷ༰ΛDrupalαΠτͰ׆༻͢ΔʹɺBreakpointϞδϡʔ ϧΛ༗ޮʹ͠ͳ͚ΕͳΒͳ͍ɻ 3.
ϑΝΠϧʹهड़͢ΔϝσΟΞΫΤϦɺςʔϚͷCSSͰར༻͢ΔϒϨʔ ΫϙΠϯτͷϝσΟΞΫΤϦͱશҰகͤ͞ͳ͍ͱػೳ͠ͳ͍ɻ ࿅श2 2
ຊͷΞδΣϯμऴྃ
1. ϝσΟΞΫΤϦͷ֓ཁ 2. DrupalͷϒϨʔΫϙΠϯτ 3. ࿅श ΞδΣϯμ
None