一起学习TailWind Css

TailWind Css

Tailwind是一个能让你快速构建响应式布局,现代化页面的css框架,他能够改变目前前端页面编写css的方式,他是完全由你掌握,性能高效的css框架,通过直接使用框架内置的class来快速的调整页面的样式,打包时,框架通过对你的html,script,组件等class的扫码,生成相应的的静态css文件。

直接开始

我们先跳过安装,直接来看效果直接上手来体验一下,点击跳转在线体验

清空左侧编辑栏,我们就可以直接写div了,写完的样式会实时展示在右侧的预览框内。

基础样式

敲击class名会自动提示所有相近类名,下拉列表可以选择你想用的类名:

css 复制代码
<div class="flex justify-center  bg-sky-300 text-6xl m-4 p-4 rounded-md shadow-lg  text-white font-medium  ">
  hello tailwind
</div>

其中:

  • 类名flex代表着display:flex
  • justify-center代表着justify-content:center
  • bg-sky-300代表着background-color: var(--color-sky-300)
  • text-6xl代表着font-size: var(--text-6xl);line-height: var(--tw-leading, var(--text-6xl--line-height));
  • m-4代表着 margin: calc(var(--spacing) * 4) 他的值并不是固定的4px,而是4rem
  • p-4代表着padding: calc(var(--spacing) * 4),m和p搭配l、r、t、b、x、y分别代表着left、right、top、bottom,水平方向,垂直方向,如mx-4代表margin-left和margin-right距离是4rem,py-4就代拜着padding-top和padding-bottom距离是4rem
  • rounded-md代表着border-radius: var(--radius-md);
  • shadow-lg代表着--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);shadow让我们的元素看起来更立体,经常用到,在tailwind中简单的shadow-* 立马就展示出效果
  • text-white代表着color: var(--color-white);
  • font-medium代表着--tw-font-weight: var(--font-weight-medium);font-weight: var(--font-weight-medium); 其他所有的类名,我们可以在tialwind官网页面ctrl+K键进行搜索。

动态伪类

包括:hover:focus:active:first:last:odd:even:required:disabled:has:not:before:after等等,对于平常的css来说,要写这些伪类就有些费事了,但是用windtail就会变得方便快捷的多了。

css 复制代码
<div class="flex justify-between  bg-gray-100 w-auto rounded-md m-6 p-6   ">
  <div class=" bg-white  shadow rounded-md p-2 h-full ">
    <span>学习伪类的用法</span>
    <span>hover,focus,active</span>
  </div>
  <div class="h-full p-2 mr-10  ">
    <button class="p-2 text-white rounded-lg  bg-violet-400 hover:bg-violet-600 focus:outline-2 focus:outline-offset-2 focus:outline-violet-500 active:bg-cyan-300">点击确认</button>
  </div>
</div>

来看效果 正常状态bg-violet-400,背景颜色:

hover状态,只需要增加hover:bg-violet-600:

focus状态,只需要增加focus:outline-2 focus:outline-offset-2 focus:outline-violet-500:

active状态,只需要增加active:bg-cyan-300:

这样看来的话确实比直接写css样式要简单了许多。

用before实习,只需要添加before:absolute before:-inset-1 before:block before:-skew-y-3 before:bg-pink-500这些类即可,他们对应的css是(这些伪类具体意义没有深究):

css 复制代码
.before\:absolute {
  &::before {
    content: var(--tw-content);
    position: absolute;
  }
}
.before\:-inset-1 {
  &::before {
    content: var(--tw-content);
    inset: calc(var(--spacing) * -1);
  }
}
.before\:block {
  &::before {
    content: var(--tw-content);
    display: block;
  }
}
.before\:-skew-y-3 {
  &::before {
    content: var(--tw-content);
    --tw-skew-y: skewY(calc(3deg * -1));
    transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
  }
}
.before\:bg-pink-500 {
  &::before {
    content: var(--tw-content);
    background-color: var(--color-pink-500);
  }
}

对应的tailwind类名:

css 复制代码
<span class="relative inline-block before:absolute before:-inset-1 before:block before:-skew-y-3 before:bg-pink-500">
    <span class="relative text-white ">独一无二</span>
  </span>

文件选择input框

对应的css代码:

css 复制代码
<input
  type="file"
  class="bg-white rounded-full file:mr-4 file:rounded-full file:border-1  file:bg-violet-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-violet-700 hover:file:bg-violet-100 "
/>

选中文字效果,selection:

只需要增加类selection:bg-fuchsia-300 selection:text-white即可。 整体来说稍微对tailwind熟悉一点,就能感觉到确实很快捷,我是个后端开发者,以前开发过html、js、css这些,最近无聊才接触的vue3,刚开始接触tailwind的时候确实有点感觉像是在写inline样式,但是用一两天就立马发现不一样了。所有的伪类class可以查看官网文档哟!

响应式样式

tailwind是手机优先选择,也就是说设计页面样式时首先以小屏幕设备为准,加上他的变化点前缀后,就会在对应的屏幕宽度条件下生效对应的样式

变化点前缀 最小的设备宽度 对应的CSS
sm 40rem (640px) @media (width >= 40rem) { ... }
md 48rem (768px) @media (width >= 48rem) { ... }
lg 64rem (1024px) @media (width >= 64rem) { ... }
xl 80rem (1280px) @media (width >= 80rem) { ... }
2xl 96rem (1536px) @media (width >= 96rem) { ... }

例如元素加上 "text-left sm:text-center md:bg-white lg:bg-blue"类后,元素的文字就会在宽度小于40rem(640px)的设备上靠左展示,大于40rem就会居中展示,大于48rem后就会背景颜色改为白色且居中展示,大于64rem背景色变为蓝色居中展示。 而且你可以通过配置theme来设定变化点的宽度

css 复制代码
@import "tailwindcss";
@theme { 
--breakpoint-xs: 30rem;
--breakpoint-2xl: 100rem;
--breakpoint-3xl: 120rem;
}

这样你就新增加了xs 和 3xl变化点,对应的设备宽度分别为30rem和120rem,修改了2xl的宽度,从默认的96rem修改为了100rem

Dark mode深色模式

你只需要在需要在深色模式时改变样式的元素上增加 dark: 类型即可,例如你的div类名设置的是"bg-white dark:bg-gray-800"这两个类名,他们就代表着元素默认背景色是白色(bg-white),深色模式下元素背景色是深灰色(bg-gray-800),就是这么简单。 如果想实现动态修改主题模式,可以在tailwind的css配置中加入"@custom-variant dark (&:where(.dark, .dark *))" ,这样就代表着任何以 .dark开头的类名都会变成暗色模式,我们可以动态给body或者固定元素来添加或者删除dark类名来实现主题模式在亮色和暗色之间的自由切换了。

css 复制代码
<div >
  <div class="min-h-screen bg-white p-10 text-gray-800 dark:bg-gray-900 dark:text-gray-200">
    <button id="toggle-dark" class="rounded bg-blue-500 px-4 py-2 text-white dark:bg-blue-700"
     onclick="document.body.classList.toggle('dark');">切换 Dark Mode</button>

    <h1 class="mt-6 text-3xl font-bold">Tailwind Dark Mode 示例</h1>

    <p class="mt-2">这是一个支持亮色/暗色模式的 Tailwind 页面。</p>

    <div class="mt-6 w-sm rounded bg-gray-100 p-4 dark:bg-gray-800">这是一个会跟随 mode 变化背景色的容器。</div>
  </div>
</div>

个性化

tailwind中的所有类都支持你的个性化配置,他们不光简单,而且还像api接口一样,支持自定义。 只需要在你的主css文件中,添加@theme来自定义你的类即可,例如我们在theme中添加 "--color-zhuti: #973F29;"这样我们就可以在div元素的类名里使用"bg-zhuti"这个颜色了,试想一下我们是不是可以把整个项目的基础颜色,字体大小都定义出来,在开发的时候用这些自定义的颜色、字体,我们最终整个项目的风格都是可变的了。

vue项目中引入tailwind

首先创建你的项目: npm create vite@latest your-project 然后安装插件: npm install tailwindcss @tailwindcss/postcss postcss 配置vite.config

vite.config.ts 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import tailwindcss from '@tailwindcss/vite'

// https://vite.dev/config/
export default defineConfig({
  plugins: [tailwindcss(),vue()],
})

配置tailwind.config.js,

tailwind.config.js 复制代码
/** @type {import('tailwindcss').Config} */
export default {
  content: [
    "./index.html",
    "./src/**/*.{vue,js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

最后在你的css文件中引入

src/style.css 复制代码
@import "tailwindcss";

这样就可以在vue中使用tailwind了,vscode中一定要安装tailwind的插件,他可以检查你的theme中的语法,给你提示对应的类名,方便快捷。

结束语

tailwind的功能远不止于此,这也是我接触tailwind两周,对其基础部分的了解。想更进一步的可以去看看JavaScript Mastery的视频。 第一次写文章,大部分还是参考官网,可把我这后端开发难受坏了。。。

相关推荐
前端老宋Running1 小时前
一种名为“Webpack 配置工程师”的已故职业—— Vite 与“零配置”的快乐
前端·vite·前端工程化
用户6600676685391 小时前
从“养猫”看懂JS面向对象:原型链与Class本质拆解
前端·javascript·面试
parade岁月1 小时前
我的第一个 TDesign PR:修复 Empty 组件的 v-if 警告
前端
云鹤_1 小时前
【Amis源码阅读】低代码如何实现交互(下)
前端·低代码·架构
StarkCoder1 小时前
一次搞懂 iOS 组合布局:用 CompositionalLayout 打造马赛克 + 网格瀑布流
前端
之恒君1 小时前
JavaScript 对象相等性判断详解
前端·javascript
dhdjjsjs1 小时前
Day30 Python Study
开发语言·前端·python
T___T1 小时前
通过 MCP 让 AI 读懂你的 Figma 设计稿
前端·人工智能
清妍_1 小时前
踩坑记录:Taro.createSelectorQuery找不到元素
前端