tailwind使用指南

前言

tailwind学习曲线比较陡峭,熟悉之后会方便开发,但熟悉之前需要频繁查文档。下面讲一下如何使用tailwind及常用样式,帮助快速上手。我使用的技术栈是vite+vue

安装

安装

bash 复制代码
npm install -D tailwindcss postcss autoprefixer 
npx tailwindcss init -p

添加配置

js 复制代码
// tailwind.config.js 
export default { 
    content: [ "./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}", ], 
    theme: { extend: {}, }, 
    plugins: [], 
}

引入tailwind样式

css 复制代码
// style.css 
@tailwind base; 
@tailwind components; 
@tailwind utilities;

在main.ts中导入该文件。

使用

html 复制代码
<h1 class="text-3xl font-bold underline"> Hello world! </h1>

常用样式

tailwind预设了一部分属性值,比如 w-1 表示 width: 0.25rem; /* 4px */。但新手可以不使用预设值,直接用 \[\] 设置自定义的值。

宽高

class 属性
w-10px width: 10px;
h-10px height: 10px;
min-w-10px min-width: 10px;
max-w-10px max-width: 10px;
size-10px width: 10px;height: 10px;

布局

class 属性
block display: block;
flex display: flex;
hidden display: none;
box-border box-sizing: border-box;
float-left float: left;
overflow-hidden overflow: hidden;
overflow-x-auto overflow-x: auto;
absolute position: absolute;
top-10px top: 10px;

flex

class 属性
flex-col flex-direction: column;
flex-nowrap flex-wrap: nowrap;
justify-center justify-content: center;
items-center align-items: center;

margin & padding

class 属性
m-10px margin: 10px;
mx-10px margin-left: 10px;margin-right: 10px;
ml-10px margin-left: 10px;

padding就是把m换成p。x 代表left和right。y代表top和bottom。

font

class 属性
text-16px font-size: 16px;
font-bold font-weight: 700;
text-center text-align: center;
tracking-2px letter-spacing: 2px;
text-#000 color: #000;
line-clamp-2 超出2行省略
leading-30px line-height: 30px;

背景

class 属性
bg-#000 background-color: #000;
bg-url(/src/assets/xx.png) background-image: url(/src/assets/xx.png);
bg-no-repeat background-repeat: no-repeat;
bg-cover background-size: cover;
bg-center background-position: center;

border

class 属性
border-2px border-width: 2px;
border-#000 border-color: #000;
border-solid border-style: solid;
rounded-4px border-radius: 4px;
divide-#000 颜色为#000的分割线

动画

class 属性
translate-x-10px transform: translateX(10px);
scale-1.1 transform: scale(1.1);
rotate-60deg transform: rotate(60deg);
origin-center transform-origin: center;
transition-height transition-property: height;
duration-2000ms transition-duration: 2000ms;
ease-linear transition-timing-function: linear;
delay-2000ms transition-delay: 2000ms;

animation推荐theme.extend中设置。

交互

class 属性
cursor-pointer cursor: pointer;
pointer-events-none pointer-events: none;

自定义主题

在tailwind.config.js中可以自定义主题。可以设置的样式包括screenscolorsborderRadius等等。

在theme中设置表示覆盖某属性原来的所有选项。但,如果想保留某属性默认的选项,但又想添加新的选项,可以在theme.extend中配置。

比如,很多地方都需要设置border-radius: 6px,那可以进行如下配置:

js 复制代码
module.exports = { 
    theme: { 
        borderRadius: { 
            DEFAULT: '6px', 
            'lg': '12px', 
        }, 
    } 
}

使用如下:

html 复制代码
<div class="rounded"></div>
<div class="rounded-lg"></div>

第一个div的border-radius为6px,第二个div的border-radius为12px。

可能遇到的问题

动态设置class

利用 data-* 属性

html 复制代码
<div data-x="a" class="bg-red data-[x=a]:bg-green"></div>

特殊属性不支持

如果某些属性,tailwind不支持,可以用 @layer utilities {} 设置

css 复制代码
@layer utilities { 
    .stroke-progress { 
        -webkit-text-stroke: 0.4rem #010507; 
    } 
}

使用tailwind同时使用UI组件库

如果舍不得UI组件的某些功能,想和组件库搭配使用

可以用 @layer components{} 修改UI库组件的样式

css 复制代码
@layer components { 
    .el-dialog {} 
}

elementplus下拉框样式

tailwind+elementplus,给组件的下拉框设置样式时,需要设置 :teleported="false" ,@layer才会生效。

相关推荐
weixin_382395235 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__5 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.6 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~7 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华7 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子10 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅10 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni10 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学11 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端