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
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
230
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
270
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
130
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
230
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
56
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
100
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
410
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
110
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
140
Other Decks in Programming
See All in Programming
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
320
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
250
Building a Meta Ray-Ban display app
akkeylab
0
130
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
280
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
350
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
560
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
190
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
230
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
350
Test your architecture with Archunit
thirion
1
2.3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
240
How to Talk to Developers About Accessibility
jct
2
510
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Prompt Engineering for Job Search
mfonobong
0
400
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
460
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Mobile First: as difficult as doing things right
swwweet
225
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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