cssをTilwind CSSとEmotionを使うことで管理しやすい環境を構築しました。その導入編です。
プレーンのcssってなんであんなに大変なのだろうかもうヤダ、今の時代こんなに煩わしいプログラム?を触ってられるか。
ということで、ワークフレームを導入しようと考えました。
そこでようやく出会ったのが
TilwindとEmotionです。もちろん初めは難しいと感じましたが今は導入して本当に良かったと思っています。これからも使っていきます。
まず、代表的なBooStrap,Sassなど試してみたり、Pure CSS,Foundationを触ってみたりしました。が、この子達と仲良くできなかったです。
とても有名な物で簡単に装飾ができます。
私に合わなかった理由としては結局BooStrapを逸脱したデザインになるとcssを書くしか無く、BooStrapとCSS両方をマスターしないと使えない。
そして一番の原因はBooStrapとcss両方で書いてしまうと管理しきれず、細かい修正に膨大な作業が発生してしまい。これならcssだけの方が楽だったな...となって導入を後悔しました。
その他の物に関しては、私が記述を覚えきれないのも原因でありますが、導入しても記述量が減った感覚がほとんど無いためです。 Sassなどは略して書けるのはいいのですが、結局一から書いている気が...もっと楽したいです。
Tilwindはcssのワークフレームです。初めからclass名が用意されていて利用する時はタグにクラスを入れるだけです。BooStrapと一緒なのでは?と思いますが違います。
BooStrapはデザインされている物を選んでクラスを記述する。Tilwindは用意されているクラスでスタイリングしていきます。
BooStrapとTilwindCSSとプレーンのCSSを一言でたとえるなら、BooStrapは完成された製品を選ぶ、Tilwindは部品を選ぶCSSは設計書から始める。
そのためBooStrapと比べると必然的にTilwindの方が記述は増えます。
特にメディアクエリーがとても助かっています。プレーンcssだとモバイル版、タブレット版、PC版でどこに何を記述すればいいのか悩んだり、時間の無い中修正、修正、修正...となるともう管理できなくなりました。導入後その悩みが無くなりました。 tailwindはテンプレート的にクラスが用意されているだけなのでカスタムも非常に簡単です。
上記1と2はプレーンのHTMLとTailwindを利用する場合に発生します。 そのためCSS-in-JS(Emotion)等を使用しない場合Tailwindはあまりおすすめできません。 CSS-in-JSを使った場合3の不満があります。
導入すると言ってもとても簡単です
npm i @emotion/css @emotion/styled @emotion/react
tailwindcssも必要になった。Tailwindの通常の物は使用しません。twin.macroを使用します。
2.8で問題なかったがtwin.macroが3.0以上になってエラーが発生してしまった。tailwindcssもインストールします。
npm install twin.macro tailwindcss
一応tailwindcssがない場合のエラー内容も記載
error - ./node_modules/twin.macro/macro.js:5:15
Module not found: Can't resolve 'tailwindcss/lib/util/toPath'
npx tailwindcss init
以上終わり。
npx create-react-app my-app
で作成したもので解説します。
import logo from './logo.svg';
import './App.css';
import styled from "@emotion/styled" //<--これ
import { css } from '@emotion/css';//<--これ
import tw from "twin.macro";//<--これ
function App() {
const BaseFontSize =css `${tw`text-sm text-yellow-600 lg:text-4xl`}`//<--これ
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<p className={BaseFontSize}>toretate</p>{/*<--これ*/}
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
文字の色とサイズが変更されました
私はvisualstudioを使用しているのですが、インテリジェンスもあるので助かります。 拡張機能を追加してみてください。
私個人の意見としてはTilwind CSSとEmotionを導入はメリットしか感じられない。メンテナンス性、カスタマイズ性、作業効率、どれにおいても格段に良くなりました。ただ単にTilwind CSSだけ、Emotionだけを導入するのはメリットが薄い気がします。やはり両方を組み合わせることでかなり良くなりました。
しかし、Reactや、Vue、AngularのJavascriptフレームワークを使用しないHTML+Tilwindは逆におすすめできません。導入するとしても本業がデザイナーの方には導入や、独自の記述方法は少し難しいとは感じます。
私は今後ともこのTilwind CSSとEmotionを使い続けて行くと思います。
次回具体的な使用方法です
質問や、間違いがありましたら、お気軽にどうぞ
※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください