Руководство по настройке и кастомизации Вашей установки Tailwind.
Поскольку Tailwind - это фреймворк для создания индивидуальных пользовательских интерфейсов, он был разработан с нуля с учетом индивидуальных особенностей.
По умолчанию Tailwind будет искать необязательный файл tailwind.config.js
в корне Вашего проекта, где вы можете определить любые настройки.
// Пример файла `tailwind.config.js`
const colors = require('tailwindcss/colors')
module.exports = {
theme: {
colors: {
gray: colors.coolGray,
blue: colors.lightBlue,
red: colors.rose,
pink: colors.fuchsia,
},
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
},
extend: {
spacing: {
'128': '32rem',
'144': '36rem',
},
borderRadius: {
'4xl': '2rem',
}
}
},
variants: {
extend: {
borderColor: ['focus-visible'],
opacity: ['disabled'],
}
}
}
Каждый раздел файла конфигурации является необязательным, поэтому вам нужно только указать, что вы хотите изменить. Любые недостающие разделы будут возвращены к конфигурации по умолчанию.
Создайте файл конфигурации Tailwind для своего проекта с помощью утилиты Tailwind CLI, включенной после установки пакета npm tailwindcss
:
npx tailwindcss init
Это создаст минимальный файл tailwind.config.js
в корне Вашего проекта:
// tailwind.config.js
module.exports = {
purge: [],
darkMode: false, // или 'media' или 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
Чтобы использовать имя, отличное от tailwind.config.js
, передайте его в качестве аргумента в командной строке:
npx tailwindcss init tailwindcss-config.js
Если вы используете собственное имя файла, вам нужно будет указать его при включении Tailwind в качестве плагина в Вашу конфигурацию PostCSS:
// postcss.config.js
module.exports = {
plugins: {
tailwindcss: { config: './tailwindcss-config.js' },
},
}
Используйте флаг -p
, если вы хотите также сгенерировать базовый файл postcss.config.js
вместе с файлом tailwind.config.js
:
npx tailwindcss init -p
Это сгенерирует в Вашем проекте файл postcss.config.js
, который выглядит следующим образом:
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
Для большинства пользователей мы рекомендуем, чтобы ваш файл конфигурации был как можно более минимальным и указывал только то, что вы хотите настроить.
Если вы предпочитаете создать полный файл конфигурации, включающий всю конфигурацию Tailwind по умолчанию, используйте параметр --full
:
npx tailwindcss init --full
Вы получите файл, соответствующий файлу конфигурации по умолчанию, который Tailwind использует для внутренних целей.
В разделе theme
вы определяете свою цветовую палитру, шрифты, масштаб шрифта, размеры границ, контрольные точки - все, что связано с визуальным дизайном Вашего сайта.
// tailwind.config.js
module.exports = {
theme: {
colors: {
gray: colors.coolGray,
blue: colors.lightBlue,
red: colors.rose,
pink: colors.fuchsia,
},
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
},
extend: {
spacing: {
'128': '32rem',
'144': '36rem',
},
borderRadius: {
'4xl': '2rem',
}
}
}
}
Узнайте больше о теме по умолчанию и о том, как ее настроить, в руководстве по настройке темы.
Раздел variants
позволяет вам контролировать, какие варианты генерируются для каждого основного подключаемого модуля.
// tailwind.config.js
module.exports = {
variants: {
fill: [],
extend: {
borderColor: ['focus-visible'],
opacity: ['disabled'],
}
},
}
Дополнительные сведения смотрите в руководстве по настройке вариантов.
Раздел plugins
позволяет вам регистрировать плагины в Tailwind, которые можно использовать для создания дополнительных утилит, компонентов, базовых стилей или пользовательских вариантов.
// tailwind.config.js
module.exports = {
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/aspect-ratio'),
require('@tailwindcss/typography'),
require('tailwindcss-children'),
],
}
Узнайте больше о написании собственных плагинов в руководстве по созданию плагинов.
Раздел presets
позволяет вам указать Вашу собственную базовую конфигурацию вместо использования базовой конфигурации Tailwind по умолчанию.
// tailwind.config.js
module.exports = {
presets: [
require('@acmecorp/base-tailwind-config')
],
// Индивидуальные настройки проекта
theme: {
//...
},
// ...
}
Узнайте больше о предустановках в документации о пресетах.
Опция prefix
позволяет вам добавить собственный префикс ко всем сгенерированным Tailwind служебным классам. Это может быть действительно полезно при наложении Tailwind поверх существующего CSS, где могут возникнуть конфликты имен.
Например, вы можете добавить префикс tw-
, установив опцию prefix
следующим образом:
// tailwind.config.js
module.exports = {
prefix: 'tw-',
}
Теперь каждый класс будет сгенерирован с настроенным префиксом:
.tw-text-left {
text-align: left;
}
.tw-text-center {
text-align: center;
}
.tw-text-right {
text-align: right;
}
/* и так далее */
Важно понимать, что этот префикс добавляется после любых вариантных префиксов. Это означает, что классы с адаптивным префиксом или префиксом состояния, например sm:
или hover:
, по-прежнему будут иметь префикс ответа или состояния first , а ваш настраиваемый префикс появится после двоеточия:
<div class="tw-text-lg md:tw-text-xl tw-bg-red-500 hover:tw-bg-blue-500">
<!-- -->
</div>
Префиксы добавляются только к классам, созданным Tailwind; никакие префиксы не будут добавлены к Вашим собственным классам.
Это означает, что если вы добавите собственную адаптивную утилиту, например:
@variants hover {
.bg-brand-gradient { /* ... */ }
}
…у сгенерированных отзывчивых классов не будет Вашего настроенного префикса:
.bg-brand-gradient { /* ... */ }
.hover\:bg-brand-gradient:hover { /* ... */ }
Если вы хотите добавить префикс к своим собственным утилитам, просто добавьте префикс в определение класса:
@variants hover {
.tw-bg-brand-gradient { /* ... */ }
}
Опция important
позволяет вам контролировать, должны ли утилиты Tailwind помечаться !important
. Это может быть действительно полезно при использовании Tailwind с существующим CSS, который имеет селекторы высокой специфичности.
Чтобы сгенерировать утилиты как !important
, установите ключ important
в параметрах конфигурации на true
:
// tailwind.config.js
module.exports = {
important: true,
}
Теперь все служебные классы Tailwind будут сгенерированы как !important
:
.leading-none {
line-height: 1 !important;
}
.leading-tight {
line-height: 1.25 !important;
}
.leading-snug {
line-height: 1.375 !important;
}
/* и так далее */
Обратите внимание, что любая из Ваших собственных утилит не будет автоматически помечена как !important
при включении этой опции.
Если вы хотите создать свои собственные утилиты !important
, просто добавьте !important
в конец каждого объявления самостоятельно:
@responsive {
.bg-brand-gradient {
background-image: linear-gradient(#3490dc, #6574cd) !important;
}
}
Установка для important
значения true
может вызвать некоторые проблемы при включении сторонних JS-библиотек, которые добавляют встроенные стили к Вашим элементам. В таких случаях утилиты Tailwind !important
побеждают встроенные стили, которые могут нарушить ваш намеченный дизайн.
Чтобы обойти это, вы можете вместо этого установить important
в селектор идентификаторов, например #app
:
// tailwind.config.js
module.exports = {
important: '#app',
}
Эта конфигурация будет префикс всех Ваших утилит с данным селектором, эффективно увеличивая их специфичность, не делая их на самом деле !important
.
После того, как вы укажете селектор important
, вам нужно будет убедиться, что корневой элемент Вашего сайта соответствует ему. Используя приведенный выше пример, нам нужно установить для атрибута id
нашего корневого элемента значение app
, чтобы стили работали правильно.
После того, как Ваша конфигурация полностью настроена и ваш корневой элемент соответствует селектору в Вашей конфигурации Tailwind, все утилиты Tailwind будут иметь достаточно высокую специфичность, чтобы победить другие классы, используемые в Вашем проекте, без вмешательства во встроенные стили:
<html>
<!-- ... -->
<style>
.high-specificity .nested .selector {
color: blue;
}
</style>
<body id="app">
<div class="high-specificity">
<div class="nested">
<!-- Будет red-500 -->
<div class="selector text-red-500"><!-- ... --></div>
</div>
</div>
<!-- Будет #bada55 -->
<div class="text-red-500" style="color: #bada55;"><!-- ... --></div>
</body>
</html>
При использовании стратегии выбора убедитесь, что файл шаблона, который включает ваш корневой селектор, включен в вашу конфигурацию очистки, в противном случае весь ваш CSS будет удален при сборке для производства.
Опция separator
позволяет вам настроить, какой символ или строку следует использовать для разделения префиксов вариантов (размеры экрана, hover
, focus
, и т.д.) от имен утилит (text-center
, items-end
, и т.д.).
По умолчанию мы используем двоеточие (:
), но это может быть полезно изменить, если вы используете язык шаблонов, например Pug, который не поддерживает специальные символы в имени класса.
// tailwind.config.js
module.exports = {
separator: '_',
}
Если вы используете функцию extend
для включения дополнительных вариантов, эти варианты автоматически сортируются в соответствии с разумным порядком вариантов по умолчанию.
При необходимости вы можете настроить это с помощью ключа variantOrder
:
// tailwind.config.js
module.exports = {
// ...
variantOrder: [
'first',
'last',
'odd',
'even',
'visited',
'checked',
'group-hover',
'group-focus',
'focus-within',
'hover',
'focus',
'focus-visible',
'active',
'disabled',
]
}
Раздел corePlugins
позволяет полностью отключить классы, которые Tailwind обычно генерирует по умолчанию, если они вам не нужны для Вашего проекта.
Если вы не укажете конфигурацию corePlugins
, все основные плагины будут включены по умолчанию:
// tailwind.config.js
module.exports = {
// ...
}
Если вы хотите отключить определенные плагины ядра, укажите объект для corePlugins
, который устанавливает для этих плагинов значение false
:
// tailwind.config.js
module.exports = {
corePlugins: {
float: false,
objectFit: false,
objectPosition: false,
}
}
Если вы хотите внести в список надежных отправителей, какие основные плагины должны быть включены, предоставьте массив, который включает список основных плагинов, которые вы хотите использовать:
// tailwind.config.js
module.exports = {
corePlugins: [
'margin',
'padding',
'backgroundColor',
// ...
]
}
Если вы хотите отключить все основные плагины Tailwind и просто использовать Tailwind как инструмент для обработки Ваших собственных плагинов, предоставьте пустой массив:
// tailwind.config.js
module.exports = {
corePlugins: []
}
Вот список всех основных плагинов для справки:
Плагин Ядра | Описание |
---|---|
preflight | Tailwind стили base/reset |
container | Компонент container |
accessibility | Утилиты sr-only и not-sr-only |
alignContent | Утилиты align-content , такие как content-end |
alignItems | Утилиты align-items , такие как items-center |
alignSelf | Утилиты align-self , такие как self-end |
animation | Утилиты animation , такие как
|
appearance | Утилиты appearance , такие как appearance-none |
backdropBlur | Утилиты backdrop-blur , такие как
|
backdropBrightness | Утилиты backdrop-brightness , такие как
|
backdropContrast | Утилиты backdrop-contrast , такие как
|
backdropFilter | Утилиты backdrop-filter , такие как backdrop-filter |
backdropGrayscale | Утилиты backdrop-grayscale , такие как
|
backdropHueRotate | Утилиты backdrop-hue-rotate , такие как
|
backdropInvert | Утилиты backdrop-invert , такие как
|
backdropOpacity | Утилиты backdrop-opacity , такие как
|
backdropSaturate | Утилиты backdrop-saturate , такие как
|
backdropSepia | Утилиты backdrop-sepia , такие как
|
backgroundAttachment | Утилиты background-attachment , такие как bg-local |
backgroundBlendMode | Утилиты background-blend-mode , такие как bg-blend-color-burn |
backgroundClip | Утилиты background-clip , такие как bg-clip-padding |
backgroundColor | Утилиты background-color , такие как
|
backgroundImage | Утилиты background-image , такие как
|
backgroundOpacity | Утилиты opacity background-color , такие как bg-opacity-25 |
backgroundOrigin | Утилиты background-origin , такие как bg-origin-padding |
backgroundPosition | Утилиты background-position , такие как
|
backgroundRepeat | Утилиты background-repeat , такие как bg-repeat-x |
backgroundSize | Утилиты background-size , такие как
|
blur | Утилиты blur , такие как
|
borderCollapse | Утилиты border-collapse , такие как border-collapse |
borderColor | Утилиты border-color , такие как
|
borderOpacity | Утилиты opacity border-color , такие как border-opacity-25 |
borderRadius | Утилиты border-radius , такие как
|
borderStyle | Утилиты border-style , такие как border-dotted |
borderWidth | Утилиты border-width , такие как
|
boxDecorationBreak | Утилиты box-decoration-break , такие как decoration-slice |
boxShadow | Утилиты box-shadow , такие как , |
boxSizing | Утилиты box-sizing , такие как box-border |
brightness | Утилиты brightness , такие как
|
caretColor | Утилиты caret-color , такие как
|
clear | Утилиты clear , такие как clear-right |
content | Утилиты content , такие как
|
contrast | Утилиты contrast , такие как
|
cursor | Утилиты cursor , такие как
|
display | Утилиты display , такие как table-column-group |
divideColor | Утилиты между элементами border-color , например, divide-gray-500 |
divideOpacity | Утилиты divide-opacity , такие как
|
divideStyle | Утилиты divide-style , такие как divide-dotted |
divideWidth | Утилиты между элементами border-width , например, divide-x-2 |
dropShadow | Утилиты drop-shadow , такие как drop-shadow-lg |
fill | Утилиты fill , такие как
|
filter | Утилиты filter , такие как filter |
flex | Утилиты flex , такие как
|
flexDirection | Утилиты flex-direction , такие как flex-row-reverse |
flexGrow | Утилиты flex-grow , такие как
|
flexShrink | Утилиты flex-shrink , такие как
|
flexWrap | Утилиты flex-wrap , такие как flex-wrap-reverse |
float | Утилиты float , такие как float-left |
fontFamily | Утилиты font-family , такие как
|
fontSize | Утилиты font-size , такие как
|
fontSmoothing | Утилиты font-smoothing , такие как antialiased |
fontStyle | Утилиты font-style , такие как italic |
fontVariantNumeric | Утилиты font-variant-numeric , такие как lining-nums |
fontWeight | Утилиты font-weight , такие как
|
gap | Утилиты gap , такие как
|
gradientColorStops | Утилиты gradient-color-stops , такие как
|
grayscale | Утилиты grayscale , такие как
|
gridAutoColumns | Утилиты grid-auto-columns , такие как
|
gridAutoFlow | Утилиты grid-auto-flow , такие как grid-flow-col |
gridAutoRows | Утилиты grid-auto-rows , такие как
|
gridColumn | Утилиты grid-column , такие как
|
gridColumnEnd | Утилиты grid-column-end , такие как
|
gridColumnStart | Утилиты grid-column-start , такие как
|
gridRow | Утилиты grid-row , такие как
|
gridRowEnd | Утилиты grid-row-end , такие как
|
gridRowStart | Утилиты grid-row-start , такие как
|
gridTemplateColumns | Утилиты grid-template-columns , такие как
|
gridTemplateRows | Утилиты grid-template-rows , такие как
|
height | Утилиты height , такие как
|
hueRotate | Утилиты hue-rotate , такие как
|
inset | Утилиты inset , такие как
|
invert | Утилиты invert , такие как
|
isolation | Утилиты isolation , такие как isolate |
justifyContent | Утилиты justify-content , такие как justify-center |
justifyItems | Утилиты justify-items , такие как justify-items-end |
justifySelf | Утилиты justify-self , такие как justify-self-end |
letterSpacing | Утилиты letter-spacing , такие как
|
lineHeight | Утилиты line-height , такие как
|
listStylePosition | Утилиты list-style-position , такие как list-inside |
listStyleType | Утилиты list-style-type , такие как
|
margin | Утилиты margin , такие как
|
maxHeight | Утилиты max-height , такие как
|
maxWidth | Утилиты max-width , такие как
|
minHeight | Утилиты min-height , такие как
|
minWidth | Утилиты min-width , такие как
|
mixBlendMode | Утилиты mix-blend-mode , такие как mix-blend-color-burn |
objectFit | Утилиты object-fit , такие как object-fill |
objectPosition | Утилиты object-position , такие как
|
opacity | Утилиты opacity , такие как
|
order | Утилиты order , такие как
|
outline | Утилиты outline , такие как
|
overflow | Утилиты overflow , такие как overflow-y-auto |
overscrollBehavior | Утилиты overscroll-behavior , такие как overscroll-y-contain |
padding | Утилиты padding , такие как
|
placeContent | Утилиты place-content , такие как place-content-between |
placeholderColor | Утилиты placeholder color , такие как placeholder-red-600 |
placeholderOpacity | Утилиты placeholder color , такие как placeholder-opacity-25 |
placeItems | Утилиты place-items , такие как place-items-end |
placeSelf | Утилиты place-self , такие как place-self-end |
pointerEvents | Утилиты pointer-events , такие как pointer-events-none |
position | Утилиты position , такие как absolute |
resize | Утилиты resize , такие как resize-y |
ringColor | Утилиты ring-color , такие как
|
ringOffsetColor | Утилиты ring-offset-color , такие как
|
ringOffsetWidth | Утилиты ring-offset-width , такие как
|
ringOpacity | Утилиты ring-opacity , такие как
|
ringWidth | Утилиты ring-width , такие как , |
rotate | Утилиты rotate , такие как
|
saturate | Утилиты saturate , такие как
|
scale | Утилиты scale , такие как
|
sepia | Утилиты sepia , такие как
|
skew | Утилиты skew , такие как
|
space | Утилиты "space-between", например, space-x-4 |
stroke | Утилиты stroke , такие как
|
strokeWidth | Утилиты stroke-width , такие как
|
tableLayout | Утилиты table-layout , такие как table-auto |
textAlign | Утилиты text-align , такие как text-center |
textColor | Утилиты text-color , такие как
|
textDecoration | Утилиты text-decoration , такие как line-through |
textOpacity | Утилиты text-opacity , такие как
|
textOverflow | Утилиты text-overflow , такие как overflow-ellipsis |
textTransform | Утилиты text-transform , такие как lowercase |
transform | Утилиты transform (для включения функций преобразования) |
transformOrigin | Утилиты transform-origin , такие как
|
transitionDelay | Утилиты transition-delay , такие как
|
transitionDuration | Утилиты transition-duration , такие как
|
transitionProperty | Утилиты transition-property , такие как
|
transitionTimingFunction | Утилиты transition-timing-function , такие как
|
translate | Утилиты translate , такие как
|
userSelect | Утилиты user-select , такие как select-text |
verticalAlign | Утилиты vertical-align , такие как align-middle |
visibility | Утилиты visibility , такие как visible |
whitespace | Утилиты whitespace , такие как whitespace-pre |
width | Утилиты width , такие как
|
wordBreak | Утилиты word-break , такие как break-words |
zIndex | Утилиты z-index , такие как
|
Часто бывает полезно ссылаться на значения Вашей конфигурации в Вашем собственном клиентском JavaScript - например, для доступа к некоторым из значений Вашей темы при динамическом применении встроенных стилей в компоненте React или Vue.
Чтобы упростить эту задачу, Tailwind предоставляет помощник resolveConfig
, который вы можете использовать для генерации полностью объединенной версии Вашего объекта конфигурации:
import resolveConfig from 'tailwindcss/resolveConfig'
import tailwindConfig from './tailwind.config.js'
const fullConfig = resolveConfig(tailwindConfig)
fullConfig.theme.width[4]
// => '1rem'
fullConfig.theme.screens.md
// => '768px'
fullConfig.theme.boxShadow['2xl']
// => '0 25px 50px -12px rgba(0, 0, 0, 0.25)'
Обратите внимание, что это транзитивно влечет за собой множество наших зависимостей во время сборки, что приведет к увеличению размера пакета на стороне клиента. Чтобы избежать этого, мы рекомендуем использовать такой инструмент, как babel-plugin-preval для создания статической версии Вашей конфигурации во время сборки.