Tailwind CSS浅析与实操

news2024/12/28 20:47:40

Tailwind CSS

一、Tailwind CSS简介

What is Tailwind CSS

在这里插入图片描述

  • Tailwind CSS| TailwindCSS中文文档 | TailwindCSS中文网
  • 官方解释:只需书写 HTML 代码,无需书写 CSS,即可快速构建美观的网站。本质上是一个工具集,包含了大量类似 flexpt-4text-center 以及 rotate-90 等工具类,可以组合使用并直接在 HTML 代码上实现任何 UI 设计。
  • 个人理解:Tailwind CSS 就是一套实用型的 CSS 框架,它不像其他的 CSS 框架一样提供了一些预定义的类来实现常用样式,而是提供了一组可以组合的原子类,可以通过组合这些原子类来定义样式。这些原子类都是非常小的样式类,它们只定义了一个具体的样式细节,例如背景色、文本颜色、字体大小、宽度、高度等。通过将它们组合在一起,可以快速而灵活地创建出各种不同的样式。
  • 优点:
    • 灵活,高度定制化
    • 最终 CSS Bundle 极小,加快渲染速度
    • 极大减少命名,设计心智负担
  • 劣势:
    • 内容样式强耦合,后期维护方面或存在压力
    • 一定的学习成本
    • Class 串稍长(@apply解决)
  • 应用场景:
    1. 快速开发原型: Tailwind CSS 提供了大量的样式原子类,可以快速构建出漂亮且具有效果的原型。
    2. 用于大型 Web 应用: Tailwind CSS 的设计理念可以使开发者更快地开发出易于维护的 CSS 代码。同时,它强调样式的规律性,可以防止样式的重复定义,提高代码的可读性和易维护性。
    3. 与其他框架或库集成: Tailwind CSS 可以与其他框架或库集成,例如 React、Vue、Angular,以及其他的 CSS 框架,例如 Bootstrap。在不同的应用中,它可以作为一种简洁的样式定制解决方案。
    4. 移动应用开发: Tailwind CSS 的响应式设计可以轻松的应用到移动应用中,开发人员可以根据不同屏幕尺寸来确定相应的样式,提高移动应用的适应性。

Why choose Tailwind CSS

  • 使用成本与许可:Tailwind CSS 是一个免费的开源项目,使用 MIT 许可证(MIT License)。这意味着可以免费使用、复制、修改、合并、出版发行、再授权、销售软件及其衍生品。所以从许可证方面来说,使用 Tailwind CSS 是没有直接的费用的,并且可以将其直接用于商业项目。

在这里插入图片描述

  • 文档资料与学习曲线:Tailwind CSS 提供了详细的文档和示例,使得学习过程更加简化。使用方式类似Bootstrap,且提供了vscode自动补全插件,方便进行快速开发。

在这里插入图片描述

  • 社区支持和更新频率: Tailwind CSS 社区非常庞大且活跃,拥有许多开发者、设计师和贡献者。可以在官方论坛、GitHub 仓库、Stack Overflow 和社交媒体等平台上找到大量的问题解答、教程、示例代码和实用资源。更新频率高,可以及时获取到 bug 修复、新功能和安全补丁,保持项目的稳定性和安全性。

在这里插入图片描述

  • 性能和可扩展性:
    • Tailwind CSS 在性能表现方面,采用了一种基于原子类的方法,只包含实际使用到的样式。这意味着不会加载不必要的代码,从而减小了文件大小,提高了加载速度。同时Tailwind CSS 提供了一套优化的构建工具和配置选项,无运行时依赖和快速响应式设计,使其具有良好的性能表现。
    • Tailwind CSS 使用原子类构建块的方法,通过组合不同的类来定义样式,而不是使用预定义的组件。这种方法使得定制和扩展变得非常简单,可以根据项目需求自由组合和重用样式类。具有高度可定制化的配置选项,提供了插件系统,允许轻松地扩展框架功能;也可以与现有的组件库集成。

二、Tailwind CSS解决的问题

1.类名命名

  • 一般标准做法是将CSS和HTML分开来实现关注点分离(separation of concerns),作为程序员,工作中的一大难点就是起名。>_<||
<div class="chat-notification">
  <div class="chat-notification-logo-wrapper">
    <img class="chat-notification-logo" src="/img/logo.svg" alt="ChitChat Logo">
  </div>
  <div class="chat-notification-content">
    <h4 class="chat-notification-title">ChitChat</h4>
    <p class="chat-notification-message">You have a new message!</p>
  </div>
</div>

<style>
  .chat-notification {
    display: flex;
    max-width: 24rem;
    margin: 0 auto;
    padding: 1.5rem;
    border-radius: 0.5rem;
    background-color: #fff;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  }
  .chat-notification-logo-wrapper {
    flex-shrink: 0;
  }
  .chat-notification-logo {
    height: 3rem;
    width: 3rem;
  }
  .chat-notification-content {
    margin-left: 1.5rem;
    padding-top: 0.25rem;
  }
  .chat-notification-title {
    color: #1a202c;
    font-size: 1.25rem;
    line-height: 1.25;
  }
  .chat-notification-message {
    color: #718096;
    font-size: 1rem;
    line-height: 1.5;
  }
</style>
  • 这种做法会起很多无所谓的名字,几周之后回来修改代码时根本搞不清楚样式应用到了哪些元素上,而且很可能在其它地方也会使用同样的类名,当尝试修改时就导致UI无法正常工作。

在这里插入图片描述

  • 使用Tailwind CSS就不需要再起这些无所谓的类名了。
<div class="p-6 max-w-sm mx-auto bg-white rounded-xl shadow-lg flex items-center space-x-4">
  <div class="shrink-0">
    <img class="h-12 w-12" src="/img/logo.svg" alt="ChitChat Logo">
  </div>
  <div>
    <div class="text-xl font-medium text-black">ChitChat</div>
    <p class="text-slate-500">You have a new message!</p>
  </div>
</div>
  • 如果你觉得HTML中类名过多,可以在vscode中安装Inline fold插件,会自动折叠类名。

在这里插入图片描述
在这里插入图片描述

2.语法冗长

  • 使用class定义类名,然后编写代码,如此反复可能会造成很大的代码量,使用Tailwind CSS能大大减少代码量,压缩代码体积。

在这里插入图片描述
在这里插入图片描述

3.样式定制

Tailwind CSS 和 Bootstrap 都是前端常用的 UI 框架,但它们的设计思路和使用方式存在一些区别:

  1. 设计哲学: Tailwind CSS 的设计哲学是提供一系列基础工具类,通过组合这些工具类来快速构建页面和 UI。而 Bootstrap 更注重提供各种 UI 组件和样式风格,以便快速搭建现成的页面。
  2. 样式组织方式: Tailwind CSS 使用原子级别的 CSS 类来构建页面,每个类只负责一个特定的样式,因此它的样式组织方式更加细粒度和灵活。而 Bootstrap 则更倾向于将多个样式组合成一个类,以便快速实现某个组件或效果。
  3. 自定义程度: Tailwind CSS 更容易进行自定义和扩展,因为它的样式都是单独的类,并且可以通过配置文件进行自定义。而 Bootstrap 设计更为全面和集成,因此在进行自定义时较为困难。

4.僵尸样式

  • 使用class编写类名再编写样式,会造成样式冗余,也会出现虽然定义了样式,但是没有被使用到,变成“僵尸样式”
  • Tailwind 会在针对生产环境进行构建时自动删除所有未使用到的 CSS 代码,也就是说 你所获得的最终的 CSS 代码包的尺寸是最小的。事实上,大部分 Tailwind 项目所生成的 CSS 代码包都小于 10kB 。

5.暗黑模式

  • 使用暗黑模式前,你需要在tailwind.config.js中配置:
/** @type {import('tailwindcss').Config} */
module.exports = {
  darkMode: 'class',
  // more options...
}
  • 然后,你只需要少量的代码,就可以使用暗黑模式了:
<div class="w-32 h-32 bg-blue-500 dark:bg-green-500"></div>

三、Tailwind CSS语法规则

基本规则

  • Tailwind CSS 是一种实用且强大的 CSS 框架,它提供了一些预设的样式类,可以让开发者快速地构建出美观的 UI 界面。下面是 Tailwind CSS 的基本使用方法和语法规则:
  1. 样式类结构:Tailwind CSS 的样式类采用以 类别-属性-值 的结构命名,例如 .bg-blue-500 表示背景色为蓝色(blue),并且其颜色值为 500,类别为 bg(背景)。
  2. 属性值的命名规则:在 Tailwind CSS 中,属性值分为数值、颜色和布尔值三种类型。数值采用数字表示,例如 w-20 表示宽度为 20 像素;颜色采用单词或十六进制颜色值表示,例如 bg-red-500 表示红色背景(颜色值为 #EF4444);布尔值则采用 truefalse 表示,例如 hidden 表示隐藏元素。
  3. 基础样式类:在 Tailwind CSS 中,有一些基础样式类用于一些常用的样式调整,例如:
    • .w-10 表示元素的宽度;
    • .text-xl 表示字体大小
    • .mx-auto 表示水平居中;
    • .text-center 表示文本水平居中;
    • .text-red-500 表示字体颜色
  4. 响应式样式类:在 Tailwind CSS 中,有一些响应式样式类,用于在不同的屏幕尺寸下显示不同的样式。这些样式类命名规则为 {屏幕尺寸}:{属性}-{属性值},例如 text-center sm:text-left 表示在小屏幕尺寸下文本左对齐,在大屏幕尺寸下文本居中。
  5. 链接样式类:在 Tailwind CSS 中,有一些链接样式,用于美化页面中的链接效果,例如:
    • .underline 表示下划线;
    • .no-underline 表示去掉下划线;
    • .hover:underline 表示鼠标悬停时出现下划线;
    • .hover:text-red-500 表示鼠标悬停时文本变为红色;
  6. 其他常用样式类:在 Tailwind CSS 中,还提供了许多其他常用样式类,例如:
    • .rounded 表示圆角;
    • .shadow 表示阴影;
    • .bg-gradient-to-r 表示背景渐变。

通过以上的基本使用方法和语法规则,可以让您更加熟悉和了解 Tailwind CSS 的使用,从而更加高效地使用这个强大的 CSS 框架。

语法技巧

  • Tailwind CSS 是一个快速、高效且高度可定制的 CSS 框架,它使用一组预定义类来快速构建 UI。以下是一些实用技巧,帮助您更好地利用 Tailwind CSS:
  1. 自定义颜色:在 tailwind.config.js 文件中,可以使用 theme 属性自定义颜色,这个属性包含一个颜色对象,您可以并据此为您的项目定义新的颜色。

  2. 响应式设计:Tailwind 提供了一系列响应式类,让您可以根据不同的屏幕尺寸为不同的设备定制 UI,例如:sm,md,lg等。

  3. 定制样式:Tailwind CSS 提供了许多原始的类,您可以轻松地将它们组合在一起创造出自定义样式的组合。

    1. 组合实用类:通常情况下,您可以通过多个实用类的组合来实现所需样式。例如,要在元素上添加40个像素的上边距和底边距,您可以将 pt-10(上边距为10) 和 pb-10(底边距为10)两个实用类组合在一个元素上,即 class="pt-10 pb-10"
    2. 扩展现有实用类:您还可以通过添加前缀或后缀来扩展现有的实用类。例如,要创建一个自定义的 bg-opacity-90 类,即给背景添加90%的不透明度,只需将 bg-opacity-90 类添加到 bg-blue-500(蓝色背景)的后面,即 class="bg-blue-500 bg-opacity-90"
    3. 使用 @apply 来扩展样式:该功能允许您将多个实用类组合成自定义样式,然后将其应用于一个元素。例如,您可以创建一个自定义的 font-bold-uppercase 类,然后使用 @applyfont-bold uppercase 两个类组合在一起:
    less复制代码.font-bold-uppercase {
      @apply font-bold uppercase;
    }
    

    然后,可以应用该 font-bold-uppercase 类到一个元素中:class="font-bold-uppercase"

  4. 文本样式:Tailwind CSS 提供了一些实用的类,可以快速设置文本的样式,例如: text-center(居中对齐文本)、text-2xl(增加文本大小)。

  5. 构建网格系统:您可以利用 Tailwind CSS 来构建网格系统,这使得在项目中创建布局变得更加容易。利用网格系统类将组件和元素对池进行行和列的多样化排列,能让您快速定位到您需要的布局。

    ini复制代码<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> 
        <div class="bg-gray-200 p-4">Col 1</div> 
        <div class="bg-gray-200 p-4">Col 2</div> 
        <div class="bg-gray-200 p-4">Col 3</div> 
    </div>
    
  6. 定位元素:Tailwind 提供了各种定位元素的类,包括 z-index、position、top、right、bottom、left 等等,使您轻松定位元素的位置和层级。

  7. 缩放图像:利用 Tailwind CSS,您可以轻松地在UI中缩放图像,只需使用 w-和 h- 后缀来指定图像的宽高。

四、Tailwind CSS实践

1. 安装依赖

  • 控制台输入以下命令:
# 初始化package.json文件
npm init -y

# 安装tailwind
npm install -D tailwindcss

# 创建tailwind.config.js
npx tailwindcss init
  • 此时项目结构如下:

在这里插入图片描述

  • 修改content属性,使其能够定位到文件位置:
// tailwind.config.js

module.exports = {
  //路径注意调整
  content: ["./**/*.{html,js}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

2.新建index.html和input.css文件

  • 在当前目录下新建index.html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 注意这里引入的output.css文件,后面会用到 -->
    <link rel="stylesheet" href="/dist/output.css">
</head>

<body>
    <h1 class="flex text-3xl font-bold underline text-blue-600">
        Hello Tailwind CSS!
    </h1>
</body>

</html>
  • 在当前目录下新建input.css
/* 引入 tailwind 的基础样式 */
@tailwind base;
/* 引入 tailwind 的组件样式 */
@tailwind components;
/* 引入 tailwind 的工具样式 */
@tailwind utilities;
  • 创建完文件后的项目结构:

在这里插入图片描述

3.tailwind编译

  • 使用tailwindcss对当前项目进行编译然后输出css文件:
npx tailwindcss -i ./input.css -o ./dist/output.css
  • 执行完命令后的项目结构:

在这里插入图片描述

  • 在浏览器端预览index.html

在这里插入图片描述

  • 对于其它项目中的使用可以详见:TailwindCSS的使用,看这一篇就够了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx动态分离(四)

概述 动静分离把静态文件放入nginx或者说服务器的某个文件夹&#xff0c;这里把文件放入服务器的根目录下/data ,创建一个test目录&#xff0c;这样就直接访问到test目录下的静态文件 [121.4.170.108/test/b.html] demo #user nobody; worker_processes 1;#error_log log…

没有苹果本也可以构建ios版本+生成不同设备效果图——香蕉云编

三年前&#xff0c;我曾经写过uniapp的程序&#xff0c;时隔三年&#xff0c;又遇到了uniapp的需求&#xff0c;之前没有自行申请ios证书&#xff0c;现在终于要自己生成证书了。。。 是福不是祸&#xff0c;是祸躲不过。 uniapp生成ios证书的详细步骤 uniapp对接unipush的操作…

一文搞懂Transformer的边角料知识:位置编码

目录 一、为什么需要位置编码 二、位置编码分类 1.表格型 2.函数型 三、Transformer的位置编码 1.位置编码应有的特点 2.Transformer的位置编码公式 3.三角函数 4.线性相关 5.相对位置关系 四、总结 一、为什么需要位置编码 在Transformer出现以前&#xff0c;NLP任…

白话教你认识 Kafka,秒懂原理

一、Kafka 基础 消息系统的作用 应该大部份小伙伴都清楚&#xff0c;用机油装箱举个例子 所以消息系统就是如上图我们所说的仓库&#xff0c;能在中间过程作为缓存&#xff0c;并且实现解耦合的作用。 引入一个场景&#xff0c;我们知道中国移动&#xff0c;中国联通&#x…

谷歌浏览器从c盘剪切到d盘书签消失的找回方式

目录 1.在以下路径找到这两个文件(Bookmarks和Bookmarks.bak) 2.我们只需要将上述的两个文件Bookmarks和Bookmarks.bak先备份到一个地方&#xff0c;替换文件&#xff1a; 3.重启谷歌浏览器 1.在以下路径找到这两个文件(Bookmarks和Bookmarks.bak) 移动后的新路径\Google\C…

vue自行封装错误提示信息——$message——技能提升

在使用vue的过程中&#xff0c;我们经常用到的是这一种的提示信息&#xff1a; 该组件提供的属性有以下几个&#xff1a; 但是&#xff0c;如果想要自定义提示信息&#xff0c;则可以使用下面的方式来处理&#xff1a; 1.自定义提示信息组件 import Vue from vue export fu…

Linux基本指令二

Linux基本指令二 一、more指令1、语法2、功能3、常用操作 二、less指令1、语法2、功能3、常用选项4、常用操作 三、head指令1、语法2、功能3、常用选项4、示例 四、tail指令1、语法2、功能3、常用选项4、示例 五、date指令1、语法2、功能3、常用的标记4、设置时间5、时间戳6、示…

VxeTable 表格组件推荐

VxeTable 表格组件推荐 https://vxetable.cn 在前端开发中&#xff0c;表格组件是不可或缺的一部分&#xff0c;它们用于展示和管理数据&#xff0c;为用户提供了重要的数据交互功能。VxeTable 是一个优秀的 Vue 表格组件&#xff0c;它提供了丰富的功能和灵活的配置选项&…

linux上negix部署静态页面

1.看配置文件 进入cndf.d 这里的是配置部署项目中的文件 进入一个查看下 上面的是服务的域名&#xff0c;服务是http://test.fun-med.cn/#/&#xff0c;后面加服务名&#xff08;你的前端&#xff09; 2.看下页面位置 和上面的路径要匹配

IDEA工具的 CTRL + Shift + F 全局搜索失效

失效原因&#xff1a;快捷键冲突&#xff0c;与输入法默认的简繁体切换快捷键冲突了。 解决方式&#xff1a; 1、微软输入法 1.1 、任务栏 – 微软任务 – 语言首选项 1.2、微软拼音 – 选项 1.3、按键 – 热键&#xff08;简体/繁体中文输入切换&#xff09;关闭或修改 …

华为云CodeArts Check代码检查插件(VSCode IDE版本)使用指南

CodeArts Check VSCode IDE代码检查插件 本插件致力于守护开发人员代码质量&#xff0c;成为开发人员的助手和利器。秉承极简、极速、即时看护的理念&#xff0c;提供业界规范&#xff08;含华为云&#xff09;的检查、代码风格一键格式化及代码自动修复功能。 感兴趣的小伙伴…

并网型虚拟同步发电机控制仿真(Matlabsimulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Python_PyQtGraph 学习笔记(八)】基于PyQtGraph将X轴坐标设置为系统时间

【Python_PyQtGraph 学习笔记(八)】基于PyQtGraph将X轴坐标设置为系统时间 前言正文1、获取plotItem的bottom轴对象2、设置刻度值,即获取时间3、刻度值与显示数值绑定4、设置bottom轴的刻度数值显示前言 基于PySide2、PyQtGraph和PySide2动态绘图,将X轴坐标设置为系统事件…

Linux 实践项目之论坛搭建

目录 一、思路 1、环境搭建&#xff08;lamp--Linux apache mysql php &#xff09; 2、关闭防火墙SELinux启动服务 3、将论坛源代码上传至/var/www/html路径下 4、设置MySQL数据库名称和密码 5、浏览器上搭建Discuz论坛 二、实操 1、安装 2、关闭防火墙SELinux启动服务…

Activiti工作流引擎详解与应用

一、简介 Activiti是一个开源的工作流引擎&#xff0c;基于BPMN2.0标准进行流程定义。它可以将业务系统中复杂的业务流程抽取出来&#xff0c;使用专门的建模语言BPMN2.0进行定义&#xff0c;业务流程按照预先定义的流程进行执行&#xff0c;实现了系统的流程由Activiti进行管…

第三节:AntDisgn安装与导入

AntDisgn官网 1.安装&#xff1a;npm install -g vue/cli或者 yarn global add vue/cli 2.导入(我这进行的是全局使用在main.js里边进行配置) import { createApp } from vue import ./style.css import App from /App.vue import router from /router/index 导入路由 import …

18369-2022 玻璃纤维无捻粗纱 课堂随笔

声明 本文是学习GB-T 18369-2022 玻璃纤维无捻粗纱.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了玻璃纤维无捻粗纱(以下简称"无捻粗纱")的分类和标记、技术要求、试验方法、检验 规则、标志、包装、运输和储存。…

unity脚本_MonoBehaviour c#

在MonoBehaviour里可以获取&#xff1a; 自己物体身上的属性 和 位置 及 其他类物体身上的属性 和 位置 this.gameObject.属性 this.transform.position this.transform.eulerAngles this.transform.lossyScale 如果是其他类 需要创建一个类对象 然后用类对象去 点 另外…

DRM全解析 —— encoder详解(1)

本文参考以下博文&#xff1a; Linux内核4.14版本——drm框架分析(3)——encoder分析 特此致谢&#xff01; 1. 简介 encoder是编码器/输出转换器&#xff0c;负责将CRTC输出的timing时序转换成外部设备所需要的信号&#xff0c;如HDMI转换器或DSI Controller。 具体来讲&a…

【生成模型】解决生成模型面对长尾类型物体时的问题 RE-IMAGEN: RETRIEVAL-AUGMENTED TEXT-TO-IMAGE GENERATOR

介绍 尽管最先进的模型可以生成常见实体的高质量图像&#xff0c;但它们通常难以生成不常见实体的图像&#xff0c;例如“Chortai&#xff08;狗&#xff09;”或“Picarones&#xff08;食物&#xff09;”。为了解决这个问题&#xff0c;我们提出了检索增强文本到图像生成器…