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中可以自定义主题。可以设置的样式包括screens 、colors 、borderRadius等等。

在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才会生效。

相关推荐
椒哥10 分钟前
一天被问几十次"允许",我统计了 517 次,然后写了个插件
前端·javascript·github
风骏时光牛马11 分钟前
生成一个AI稳定性治理及疑难问题分析标题,只需要一个标题,不需要其他的任何文本。
前端
莫西干式秃头27 分钟前
用 AI + threejs 写了个浏览器里的 3D 动作游戏《武来》:砍怪、放技能、开 SU7
前端·人工智能·three.js
kyriewen41 分钟前
我测了 6 种防请求竞态的写法:只有 1 种真能打
前端·javascript·程序员
孟健44 分钟前
用 WorkBuddy 做个人名片网页,挂上开源设计技能后效果完全不同了
前端·人工智能·ai编程
IT_陈寒1 小时前
SpringBoot自动配置的坑,这次终于爬出来了
前端·人工智能·后端
LuHang2 小时前
从天地图切换到高德地图:一次真实的底图迁移实战
前端·vue.js·cesium
用户360055579002 小时前
Kestrel_VLLM - 27 · 寄存器常驻与融合发射:两次「少发一次」
前端
前端小万2 小时前
用"道法术器"重构你和 AI 的协作方式
前端·人工智能·程序员
鶴哥只手遮天2 小时前
Angular 22 源码级深度解析-第 06 章 模板指令全解:`ɵɵelementStart`、`ɵɵproperty`、`ɵɵadvance` 与绑定指令
前端·开源·angular.js