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
vanilla-extractを使ってみた!with React
Search
Azusa Okamoto
April 24, 2022
Programming
870
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
vanilla-extractを使ってみた!with React
Azusa Okamoto
April 24, 2022
More Decks by Azusa Okamoto
See All by Azusa Okamoto
GraphQLでAPI開発 やってみよう!
azunyan
0
40
「わたし色」の見方で拓く世界
azunyan
0
29
ちゃんとSvelte, Hello Worldした!
azunyan
0
77
最近取り組んでいることについて喋ってみる
azunyan
0
22
フロントエンドエンジニアが関数型プログラミングに出会った話
azunyan
0
120
TECH WOMAN KANSAIの 取り組みと今後~2024年の振り返りと2025年へ~
azunyan
0
100
Go初心者が開発やってみた!
azunyan
1
580
デブサミウーマン2023 アウトプットって何が良いの?
azunyan
0
1.3k
個人的に楽しかった実装2022
azunyan
0
150
Other Decks in Programming
See All in Programming
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
150
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
130
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
110
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
540
関数型プログラミングのメリットって何だろう?
wanko_it
0
180
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
230
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
yield再入門 #phpcon
o0h
PRO
0
380
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.6k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
The agentic SEO stack - context over prompts
schlessera
0
840
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
270
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
240
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Building an army of robots
kneath
306
46k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
Transcript
vanilla-extractを使ってみた! with React 2022/04/24_とにかくほめる!マウントなしのLT会 あずにゃん
自己紹介 フロントエンドエンジニア。 言語: JavaScript・TypeScript FW/ライブラリ: Vue.js・React・jQuery @azunyan_eng
今日お話しすること 1 vanilla-extractとは 2 主な使い方 3 つまづいたこと 4 感想 5
参考資料
今日お話しすること 先月、microCMSさんのLT会で vanilla-extractを知った! 見やすそうだし、CSS Modulesだし... なんか、良さそう!
今日お話しすること styled-componentsやSassを使った業務経験が 過去にあり。
1 vanilla-extractとは 2 主な使い方 3 つまづいたこと 4 感想 5 参考資料
vanilla-extractとは 2021年5月リリース。 CSS Modulesの考え方がベース。 オブジェクト形式で記述。
1 vanilla-extractとは 3 つまづいたこと 4 感想 5 参考資料 2 主な使い方
主な使い方 提供されているAPIと関数を 組み合わせて利用!
Styling API〜style~ export = ({ : , : }); const
toDoStyle style display justifyContent 'flex' 'space-between'
Styling API~globalStyle~ 全体を通して共通化したいスタイルを記述。
Styling API~globalStyle~ globalStyle( , { : , : , :
, : , : , : }); 'body, #root' '#FFFFFF' '#1A1A1A' '0' 'flex' 'column' '100vh' backgroundColor color margin display flexDirection minHeight
Styling API~globalStyle~ import ; "./styles/global.css"
Styling API~createTheme~ 同じcss.tsファイル内でのみ使える変数を 作成!
Styling API~createTheme~ export export , = ({ : { :
} }); = ({ : . . }); const const [themeClass vars] alertBtn vars createTheme style background alert backgroundColor background alert 'red'
Styling API~createTheme~ < = > = > 全て削除する div button
=> button div className onClick className { } { } { } themeClass alertBtn < = </ > </ > () () handleDeleteAll
Styling API~createGlobalTheme~ 共通で使える変数を作成!
Styling API~createGlobalTheme~ export = ( , { : { :
, : }, : { : }, : { : }, : { : , : , : } }); const globalTheme createGlobalTheme ':root' '#1A1A1A' '#7FFF7F' '#FFFFFF' '#7FFF7F' '0.5rem' '1.5rem' '2.5rem' background main success font color color success size xs s m
Styling API~createGlobalTheme~ export = ({ : , : . .
, : . . }); const footerStyle globalTheme globalTheme style marginTop backgroundColor background main color font color 'auto'
Sprinkles API ユーティリティクラスを作成! conditionsを使ってレスポンシブ対応も!
Sprinkles API const = ({ : { : { :
}, : { : } }, : , : { : [ , ], : [ ], : [ , ], : [ , ], : . , : . } }); responsiveStyle globalTheme globalTheme defineProperties conditions desktop mobile defaultCondition properties display justifyContent textAlign width paddingLeft size paddingRight size '@media' 'screen and (min-width: 1024px)' '@media' 'screen and (max-width: 1023px)' 'desktop' 'flex' 'block' 'center' 'center' 'left' '50%' '100%'
Sprinkles API export = ( ); const sprinkles responsiveStyle createSprinkles
Sprinkles API < > < /> < /> < =
, > < /> < /> </ > </ > div div div div Form DeleteAllBtn ToDos DoneToDos className display: justifyContent: { 'flex' 'center' } sprinkles( ) { }
1 vanilla-extractとは 2 主な使い方 4 感想 5 参考資料 3 つまづいたこと
つまづいたこと そもそも、vanilla-extract自体を 適用するのに手間取った!
つまづいたこと〜原因〜 create-react-appをサポートしていなかった...。 ※公式からのサポート状況に関する言及は特になし。 ※公式のGitHub Issueでは、サポートしていないとの回答が。 ※Cracoを一緒に使うことで利用できるようになるとの回答も。
つまづいたこと〜原因〜 Craco導入したらいけるかな〜?? Webpack等の構成を 上書きできる! eject不要!
つまづいたこと〜原因〜 ダメだった...。
つまづいたこと〜解決〜 create-react-appに頼らない! 面倒くさがらずに、Webpackのinstall、 webpack.config.jsの作成もやりましょう!
1 vanilla-extractとは 2 主な使い方 3 つまづいたこと 5 参考資料 4 感想
感想 CSS Modulesの方が好みなので、使い勝手が良いと感 じた! styled-componentsとは異なり、オブジェクト形式だ と書きやすい!見やすい! 定義元に簡単に移動できるのは助かる!
1 vanilla-extractとは 2 主な使い方 3 つまづいたこと 4 感想 5 参考資料
参考資料 vanilla-extract公式ドキュメント CSS in JSとしてVanilla-Extractを選んだ話と技術選定 の記録の残し方 vanilla-extract を試す vanilla-extractを使ってみた感想
参考資料 create-react-app公式ドキュメント Craco公式GitHubリポジトリ styled-components公式ドキュメント
ご清聴ありがとうございました!