@import './styles/utilities.css';
@import './styles/components.css';
@import './styles/base.css';
@tailwind base;
@tailwind components;
@tailwind utilities;
与scss一起使用时样式会不生效:
官方有说明不推荐,建议使用自带的预处理器(tailwindcss/nesting
)
tailwindcss.com/docs/using-…
@apply
将tailwind类进行封装
@import
这是postcss
的postcss-import插件
vue与tailwind
@layer components {
.input {
@apply p-input p-input-bordered rounded-xl;
.input-info {
@apply p-input p-input-info;
background-color: #cffafe;
.input-error {
@apply p-input p-input-error;
background-color: #fce4e4;
.input-warning {
@apply p-input p-input-warning;
background-color: #fce4e4;
<script setup>
if ( props.dataConfirm !== props.data) {
e.target.classList.remove("input-info")
e.target.classList.add("input-error")
e.target.parentNode.classList.add("tooltip-error")
} else {
e.target.classList.remove("input-error")
e.target.classList.add("input-info")
e.target.parentNode.classList.remove("tooltip-error")
</script>
<style scoped>
@layer components {
.input {
@apply p-input p-input-bordered rounded-xl;
.input-info {
@apply p-input p-input-info;
background-color: #cffafe;
.input-error {
@apply p-input p-input-error;
background-color: #fce4e4;
.input-warning {
@apply p-input p-input-warning;
background-color: #fce4e4;
</style>
这里需要加个@tailwind components,因为在Vue 和 Svelte 等组件框架的是独立的,tailwind 无法知道这里使用到了,需要显示地@tailwind xx,才能识别
<script setup>
if ( props.dataConfirm !== props.data) {
e.target.classList.remove("input-info")
e.target.classList.add("input-error")
} else {
e.target.classList.remove("input-error")
e.target.classList.add("input-info")
</script>
<style scoped>
@layer components {
.input {
@apply p-input p-input-bordered rounded-xl;
.input-info {
@apply p-input p-input-info;
background-color: #cffafe;
.input-error {
@apply p-input p-input-error;
background-color: #fce4e4;
.input-warning {
@apply p-input p-input-warning;
background-color: #fce4e4;
@tailwind components;
</style>
@import是postcss中的一个插件,vite原生支持
xx-[xx]
自定义修饰符,不用非得用在tailwind css
设定的那几个值,单位也更加灵活
.width {
@apply w-[5rem] h-[50px];
前面的范围间隔很固定,当后面就不好猜了,为什么要猜,不是有插件支持IDE的提示吗?因为IDE的提示在内联写样式时不怎么灵敏
当任意值需要包含空格时,请使用下划线 ( _
)
可以与var()
,url()
结合
自定义类无法通过@apply二次封装
.pagination {
@apply btn bg-sky-400 hover:bg-sky-600 text-4xl border-0
正确的做法,使用@layer
来生成
如果使用的是vue
或svelte
的话,@layer
需要额外声明一句@tailwind xx
当使用esm的配置文件时,daisyUi的自定义类可以直接@apply使用,当但使用cjs的配置文件时,不可以,必须使用@layer
指令,且不能写在vue的中,不然还是会报错
@player base
更改默认的html样式
@layer base {
@apply text-2xl;
@apply text-xl;
@player components
二次封装css类,没有使用到的会被tree-sharking
生成的css类支持md:
,lg:
等
@player utilities
@layer utilities {
.content-auto {
content-visibility: auto;
二次封装css类,没有使用到的会被tree-sharking
支持md:
,lg:
等
发现utilities
与components
没有区别,作用纯粹是分类,实际功能一摸一样
全局tailwind css类
直接添加到tailwind.css里,不用使用@player
,
但这样会有优先级问题,由于放在全局上,所以极容易被其他样式覆盖,产生自己所不期望的结果
@media 与 sm, lg...
支持通过sm,lg等关键值来断点
@media screen(sm) {
当大量使用断点查询时
.book-card {
@apply sm:flex-row sm:w-[90vw] sm:h-[50vh];
@media screen(sm) {
@apply flex-row w-[90vw] h-[50vh];
theme配置
自定义tailwind的内联类名,需要在tailwind.config.js
里进行配置
module.exports = {
theme: {
screens: {
sm: '480px',
md: '768px',
lg: '976px',
xl: '1440px',
colors: {
'blue': '#1fb6ff',
'purple': '#7e5bef',
'pink': '#ff49db',
'orange': '#ff7849',
'green': '#13ce66',
'yellow': '#ffc82c',
'gray-dark': '#273444',
'gray': '#8492a6',
'gray-light': '#d3dce6',
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
extend: {
spacing: {
'128': '32rem',
'144': '36rem',
borderRadius: {
'4xl': '2rem',
保留预设的前提下进行扩展:
module.exports = {
theme: {
extend: {
screens: {
'3xl': '1600px',
更改部分预设
要覆盖默认主题中的选项,请直接在 theme
你的部分 tailwind.config.js
:
tailwind.config.js
module.exports = {
theme: {
opacity: {
'0': '0',
'20': '0.2',
'40': '0.4',
'60': '0.6',
'80': '0.8',
'100': '1',
外部预设导入
tailwind.config.js
module.exports = {
presets: [
require('@acmecorp/tailwind-base')
使用theme()访问预设值
.content-area {
height: calc(100vh - theme(spacing.12));
如果需要访问包含点的值(例如 2.5
间距刻度中的值),可以使用方括号表示法:
.content-area {
height: calc(100vh - theme(spacing[2.5]));
hover:
after:
before:
搭配ui框架
添加前缀p-
,防止命名冲突
import daisyui from "daisyui"
export default {
content: ['./*.html', './src/**/*.{vue,js,ts,jsx,tsx,css}'],
theme: {
extend: {},
variants: {
extend: {},
plugins: [daisyui],
daisyui: {
prefix: "p-"
复制代码