ãã¬ãŒã ã¯ãŒã¯ã®æ©èœãæ¡åŒµããåå©çšæ§ãé«ããã¯ãŒã¯ãããŒãå¹çåããããã®ã«ã¹ã¿ã Tailwind CSSãã©ã°ã€ã³éçºã«é¢ããå æ¬çãªã¬ã€ãã
Tailwind CSSãã©ã°ã€ã³éçºïŒã«ã¹ã¿ã ãã©ã°ã€ã³ã«ããæ©èœæ¡åŒµ
Tailwind CSSã¯ãéçºè ãã«ã¹ã¿ã ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãè¿ éã«æ§ç¯ã§ãããŠãŒãã£ãªãã£ãã¡ãŒã¹ãã®CSSãã¬ãŒã ã¯ãŒã¯ã§ããTailwindã®ã³ã¢ãŠãŒãã£ãªãã£ã¯åºç¯ã§ãããã«ã¹ã¿ã ãã©ã°ã€ã³ã§ãã®æ©èœãæ¡åŒµããå¿ èŠãããã·ããªãªããããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãTailwind CSSãã©ã°ã€ã³éçºã®äžçãæ¢æ±ããåå©çšå¯èœã§ãä¿å®å¯èœã§ãå¹ççãªæ¡åŒµæ©èœãäœæããããã®ç¥èãæäŸããŸãã
Tailwind CSSãã©ã°ã€ã³ãéçºããçç±
ã«ã¹ã¿ã Tailwind CSSãã©ã°ã€ã³ãéçºãããšãããã€ãã®éèŠãªå©ç¹ããããŸãã
- åå©çšæ§: ç¹å®ã®ã¹ã¿ã€ãªã³ã°ãã¿ãŒã³ãŸãã¯ã³ã³ããŒãã³ããåå©çšå¯èœãªãã©ã°ã€ã³ã«ã«ãã»ã«åãããããžã§ã¯ãå šäœã®ã³ãŒãã®éè€ãæžãããŸãã
- ä¿å®æ§: ã¹ã¿ã€ãªã³ã°ããžãã¯ããã©ã°ã€ã³å ã«éäžãããæŽæ°ãšå€æŽãç°¡åã«ç®¡çã§ããããã«ããŸãã
- ããŒãã®ã«ã¹ã¿ãã€ãº: ã«ã¹ã¿ã ã«ã©ãŒããã©ã³ããã¹ããŒã·ã³ã°ã¹ã±ãŒã«ãªã©ã§Tailwindã®ããŒããæ¡åŒµããŸãã
- ã³ã³ããŒãã³ãã®æœè±¡å: å®çŸ©æžã¿ã®ã¹ã¿ã€ã«ãšæ©èœãæã€åå©çšå¯èœãªã³ã³ããŒãã³ãã©ã€ãã©ãªãäœæããŸãã
- ã¯ãŒã¯ãããŒã®åŒ·å: ç¹å®ã®ããŒãºã«åãããŠèª¿æŽããããŠãŒãã£ãªãã£ãäœæããŠãéçºããã»ã¹ãå¹çåããŸãã
Tailwind CSSãã©ã°ã€ã³ã®æ§é ãçè§£ãã
Tailwind CSSãã©ã°ã€ã³ã¯ãæ¬è³ªçã«ã¯ãaddBase
ãaddComponents
ãaddUtilities
ãããã³theme
ãã«ããŒãåŒæ°ãšããŠåãåãJavaScript颿°ã§ãããããã®ãã«ããŒã䜿çšãããšãã«ã¹ã¿ã CSSã«ãŒã«ãTailwindã®ã¹ã¿ã€ã«ã·ãŒãã«æ¿å
¥ã§ããŸãã
åºæ¬çãªãã©ã°ã€ã³ã®æ§é ãæ¬¡ã«ç€ºããŸãã
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addBase, addComponents, addUtilities, theme }) {
// Add base styles
// Add component styles
// Add utility classes
});
addBase
ãã«ããŒ
addBase
ãã«ããŒã¯ãCSSã®æ£èŠåãããã©ã«ãã®ãã©ã³ããã¡ããªãŒã®èšå®ããŸãã¯HTMLèŠçŽ ãžã®ã°ããŒãã«ã¹ã¿ã€ã«ã®é©çšãªã©ãåºæ¬ã¹ã¿ã€ã«ãæ¿å
¥ããããã«äœ¿çšãããŸããããã¯éåžžããããžã§ã¯ãå
šäœã«åºãé©çšãããåºæ¬çãªã¹ã¿ã€ã«ã«äœ¿çšãããŸãã
äŸ: ããã©ã«ãã®ãã©ã³ããã¡ããªãŒã®èšå®:
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addBase, theme }) {
addBase({
body: {
fontFamily: theme('fontFamily.sans').join(', '),
},
})
});
addComponents
ãã«ããŒ
addComponents
ãã«ããŒã¯ãã³ã³ããŒãã³ãã¹ã¿ã€ã«ã远å ããããã«äœ¿çšãããŸããã³ã³ããŒãã³ãã¯ããã¿ã³ãã«ãŒãããŸãã¯ããã²ãŒã·ã§ã³ã¡ãã¥ãŒãªã©ã®åå©çšå¯èœãªUIèŠçŽ ã§ãããã®ãã«ããŒã䜿çšãããšããããã®ã³ã³ããŒãã³ãã®CSSã«ãŒã«ãå®çŸ©ããTailwindã®@apply
ãã£ã¬ã¯ãã£ãã䜿çšããŠé©çšã§ããŸãã
äŸ: ã«ã¹ã¿ã ãã¿ã³ã³ã³ããŒãã³ãã®äœæ:
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addComponents, theme }) {
const buttons = {
'.btn': {
padding: `${theme('spacing.2')} ${theme('spacing.4')}`,
borderRadius: theme('borderRadius.md'),
fontWeight: theme('fontWeight.semibold'),
backgroundColor: theme('colors.blue.500'),
color: theme('colors.white'),
'&:hover': {
backgroundColor: theme('colors.blue.700'),
},
},
}
addComponents(buttons)
});
HTMLã§ã®äœ¿çš:
<button class="btn">Click me</button>
addUtilities
ãã«ããŒ
addUtilities
ãã«ããŒã¯ããŠãŒãã£ãªãã£ã¯ã©ã¹ã远å ããããã«äœ¿çšãããŸãããŠãŒãã£ãªãã£ã¯ã©ã¹ã¯ãHTMLã§èŠçŽ ãçŽæ¥ã¹ã¿ã€ã«ããããã«äœ¿çšã§ãããå°ãããŠåäžç®çã®CSSã¯ã©ã¹ã§ãããã®ãã«ããŒã䜿çšãããšãTailwindã®çµã¿èŸŒã¿ãŠãŒãã£ãªãã£ãæ¡åŒµããã«ã¹ã¿ã ãŠãŒãã£ãªãã£ã¯ã©ã¹ãäœæã§ããŸãã
äŸ: ããã¹ãåãæšãŠã®ãŠãŒãã£ãªãã£ã¯ã©ã¹ã®äœæ:
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addUtilities }) {
const utilities = {
'.truncate-text': {
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
},
}
addUtilities(utilities)
});
HTMLã§ã®äœ¿çš:
<p class="truncate-text">This is a long text that will be truncated if it exceeds the container width.</p>
theme
ãã«ããŒ
theme
ãã«ããŒã䜿çšãããšãè²ããã©ã³ããã¹ããŒã·ã³ã°ã¹ã±ãŒã«ããã¬ãŒã¯ãã€ã³ããªã©ãTailwindã®æ§æå€ã«ã¢ã¯ã»ã¹ã§ããŸããããã«ãããTailwindããŒããšäžè²«æ§ã®ãããã©ã°ã€ã³ãäœæã§ããŸãã
äŸ: ã³ã³ããŒãã³ãã§ããŒãã«ã©ãŒã䜿çšãã:
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addComponents, theme }) {
const alert = {
'.alert': {
padding: theme('spacing.4'),
borderRadius: theme('borderRadius.md'),
backgroundColor: theme('colors.yellow.100'),
color: theme('colors.yellow.800'),
},
}
addComponents(alert)
});
ãã©ã°ã€ã³ã®äœæïŒã¹ããããã€ã¹ãããã¬ã€ã
ã«ã¹ã¿ã ã°ã©ããŒã·ã§ã³èæ¯ãŠãŒãã£ãªãã£ã远å ããåçŽãªTailwind CSSãã©ã°ã€ã³ãäœæããããã»ã¹ãèŠãŠã¿ãŸãããã
- JavaScriptãã¡ã€ã«ãäœæãã: ããšãã°ã
tailwind-gradient-plugin.js
ãšããæ°ããJavaScriptãã¡ã€ã«ãäœæããŸãã - ãã©ã°ã€ã³ãå®çŸ©ãã: 次ã®ã³ãŒãããã¡ã€ã«ã«è¿œå ããŸãã
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addUtilities, theme }) {
const utilities = {
'.bg-gradient-to-r': {
backgroundImage: `linear-gradient(to right, ${theme('colors.blue.500')}, ${theme('colors.purple.500')})`,
},
}
addUtilities(utilities)
});
- Tailwind CSSãæ§æãã:
tailwind.config.js
ãã¡ã€ã«ãéããplugins
é åã«ãã©ã°ã€ã³ã远å ããŸãã
module.exports = {
theme: {
extend: {},
},
plugins: [
require('./tailwind-gradient-plugin'),
],
}
- ãŠãŒãã£ãªãã£ã¯ã©ã¹ã䜿çšãã: HTMLã§
bg-gradient-to-r
ã¯ã©ã¹ã䜿çšã§ããããã«ãªããŸããã
<div class="bg-gradient-to-r p-4 text-white">
This element has a gradient background.
</div>
é«åºŠãªãã©ã°ã€ã³éçºãã¯ããã¯
ãªãã·ã§ã³ã®äœ¿çš
ãªãã·ã§ã³ããã©ã°ã€ã³ã«æž¡ããŠããã®åäœãã«ã¹ã¿ãã€ãºã§ããŸããããã«ãããããæè»ã§æ§æå¯èœãªãã©ã°ã€ã³ãäœæã§ããŸãã
äŸ: ã«ã¹ã¿ã ã«ã©ãŒãªãã·ã§ã³ã䜿çšãããã©ã°ã€ã³ã®äœæ:
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addUtilities, theme }, options) {
const defaultOptions = {
color: 'blue',
}
const settings = { ...defaultOptions, ...options }
const utilities = {
[`.bg-${settings.color}-gradient-to-r`]: {
backgroundImage: `linear-gradient(to right, ${theme(`colors.${settings.color}.500`)}, ${theme('colors.purple.500')})`,
},
}
addUtilities(utilities)
}, {
theme: {
extend: {
// extend the theme here
}
}
});
tailwind.config.js
ã§ã®ãã©ã°ã€ã³ã®æ§æ:
module.exports = {
theme: {
extend: {},
},
plugins: [
require('./tailwind-gradient-plugin')({
color: 'green',
}),
],
}
ããŒãã®æ¡åŒµ
ãã©ã°ã€ã³ã¯ãæ°ããè²ããã©ã³ããã¹ããŒã·ã³ã°ã¹ã±ãŒã«ããŸãã¯ãã¬ãŒã¯ãã€ã³ãã远å ããŠãTailwindããŒããæ¡åŒµããããšãã§ããŸããããã«ãããèšèšã·ã¹ãã ã«åãããŠTailwindã®ããã©ã«ãæ§æãã«ã¹ã¿ãã€ãºã§ããŸãã
äŸ: ã«ã¹ã¿ã ã«ã©ãŒãããŒãã«è¿œå ãã:
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addUtilities, theme }) {
// ...
}, {
theme: {
extend: {
colors: {
'brand-primary': '#007bff',
},
},
},
});
次ã«ããã®è²ãTailwindã¯ã©ã¹ã§äœ¿çšã§ããŸãã
<div class="bg-brand-primary text-white p-4">
This element uses the custom color.
</div>
ããªã¢ã³ãã®äœ¿çš
ããªã¢ã³ãã䜿çšãããšãhover
ãfocus
ãactive
ããŸãã¯responsive
ãã¬ãŒã¯ãã€ã³ããªã©ãããŸããŸãªç¶æ
ãŸãã¯æ¡ä»¶ã«åºã¥ããŠã¹ã¿ã€ã«ãé©çšã§ããŸããã«ã¹ã¿ã ããªã¢ã³ãããã©ã°ã€ã³ã«è¿œå ããŠãTailwindã®çµã¿èŸŒã¿ããªã¢ã³ããæ¡åŒµã§ããŸãã
äŸ: ã«ã¹ã¿ã important
ããªã¢ã³ãã®äœæ:
const plugin = require('tailwindcss/plugin')
module.exports = plugin(function({ addVariant }) {
addVariant('important', '& !important')
})
HTMLã§ã®äœ¿çš:
<p class="text-red-500 important:text-blue-500">
This text will be red by default, but blue when the important variant is applied.
</p>
ãµãŒãããŒãã£ã©ã€ãã©ãªã®æäœ
ãµãŒãããŒãã£ã©ã€ãã©ãªãTailwind CSSãã©ã°ã€ã³ã«çµ±åã§ããŸããããã«ãããTailwindã¯ãŒã¯ãããŒå ã§ãããã®ã©ã€ãã©ãªã®æ©èœã掻çšã§ããŸãã
äŸ: ã«ã©ãŒæäœã©ã€ãã©ãª (äŸ: chromajs
) ãšã®çµ±å:
const plugin = require('tailwindcss/plugin')
const chroma = require('chroma-js');
module.exports = plugin(function({ addUtilities, theme }) {
const utilities = {
'.bg-tint-50': {
backgroundColor: chroma(theme('colors.blue.500')).brighten(0.5).hex(),
},
'.bg-shade-50': {
backgroundColor: chroma(theme('colors.blue.500')).darken(0.5).hex(),
},
}
addUtilities(utilities)
});
Tailwind CSSãã©ã°ã€ã³éçºã®ãã¹ããã©ã¯ãã£ã¹
- ãã©ã°ã€ã³ã®çŠç¹ãçµã: åãã©ã°ã€ã³ã¯ãç¹å®ã®æžå¿µäºé ãŸãã¯æ©èœã«å¯Ÿå¿ããå¿ èŠããããŸãã
- 説æçãªååã䜿çšãã: ãã©ã°ã€ã³ãšãŠãŒãã£ãªãã£ã¯ã©ã¹ã«ã¯ãæç¢ºã§æå³ã®ããååãéžæããŠãã ããã
- ãã©ã°ã€ã³ãææžåãã: ãã©ã°ã€ã³ã®äœ¿ç𿹿³ãšæ§ææ¹æ³ã«é¢ããæç¢ºãªããã¥ã¡ã³ããæäŸããŸãã
- ãã©ã°ã€ã³ããã¹ããã: ãã©ã°ã€ã³ãæåŸ ã©ããã«æ©èœããååž°ãçºçããªãããšã確èªããŸãã
- ã¢ã¯ã»ã·ããªãã£ãèæ ®ãã: ã¢ã¯ã»ã·ããªãã£ãèæ ®ããŠãã©ã°ã€ã³ãèšèšããŸãã
- themeãã«ããŒã䜿çšãã: `theme`ãã«ããŒãå©çšããŠãTailwindããŒããšã®äžè²«æ§ã確ä¿ããŸãã
- Tailwind CSSã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã«åŸã: äžè²«æ§ãç¶æããããã«ãTailwindã®ã³ãŒãã£ã³ã°èŠåã«åŸã£ãŠãã ããã
- ãšã©ãŒãé©åã«åŠçãã: äºæããªãåäœãé²ãããã«ããšã©ãŒåŠçãå®è£ ããŸãã
- ããã©ãŒãã³ã¹ã®ããã«æé©åãã: ãã©ã°ã€ã³ã«ãã£ãŠçæãããCSSã®éãæå°éã«æããŸãã
- ãã©ã°ã€ã³ãããŒãžã§ã³ç®¡çãã: ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ã䜿çšããŠã倿Žã远跡ããäºææ§ã確ä¿ããŸãã
Tailwind CSSãã©ã°ã€ã³ã®å®äŸ
ãããžã§ã¯ãã§äœ¿çšã§ããTailwind CSSãã©ã°ã€ã³ã®å®äŸãããã€ã瀺ããŸãã
- @tailwindcss/typography: èªã¿ãããã³ã³ãã³ããã¹ã¿ã€ã«ããããã®æ£æã¯ã©ã¹ã®ã»ããã远å ããŸãã
- @tailwindcss/forms: Tailwind CSSã®çŸåŠã«äžèŽãããã©ãŒã èŠçŽ ã®åºæ¬çãªã¹ã¿ã€ã«ãæäŸããŸãã
- @tailwindcss/aspect-ratio: èŠçŽ ã®ã¢ã¹ãã¯ãæ¯ãå¶åŸ¡ããããã®ãŠãŒãã£ãªãã£ã远å ããŸãã
- tailwindcss-textshadow: ããã¹ãã·ã£ããŠãŠãŒãã£ãªãã£ã远å ããŸãã
- tailwindcss-elevation: Googleã®ãããªã¢ã«ãã¶ã€ã³ã«åºã¥ããŠãelevationïŒã·ã£ããŠïŒãŠãŒãã£ãªãã£ã远å ããŸãã
çµè«
ã«ã¹ã¿ã Tailwind CSSãã©ã°ã€ã³ãéçºããããšã¯ããã¬ãŒã ã¯ãŒã¯ã®æ©èœãæ¡åŒµããç¹å®ã®ããŒãºã«åãããŠèª¿æŽããããã®åŒ·åãªæ¹æ³ã§ãããã©ã°ã€ã³ã®æ§é ãçè§£ããå©çšå¯èœãªãã«ããŒãå©çšãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãéçºã¯ãŒã¯ãããŒãå¹çåããåå©çšå¯èœã§ãä¿å®å¯èœã§ãå¹ççãªãã©ã°ã€ã³ãäœæã§ããŸããã³ã³ããŒãã³ãã©ã€ãã©ãªã®æ§ç¯ãããŒãã®ã«ã¹ã¿ãã€ãºããŸãã¯æ°ãããŠãŒãã£ãªãã£ã¯ã©ã¹ã®è¿œå ãªã©ãTailwind CSSãã©ã°ã€ã³éçºã䜿çšãããšãçã«ãŠããŒã¯ã§åŒ·åãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæã§ããŸãã
ãã®ã¬ã€ãã§ã¯ãTailwind CSSãã©ã°ã€ã³éçºã®æ ã«ä¹ãåºãããã®ç¢ºåºããåºç€ãæäŸããŸãããå®éšããæ¢æ±ããããªãã®äœåãã³ãã¥ããã£ãšå ±æããããšãå¿ããªãã§ãã ãããããããŒã³ãŒãã£ã³ã°ïŒ