[CSS3] Tailwindcss实战案例

news/2025/3/6 0:49:52/文章来源:https://www.cnblogs.com/Answer1215/p/18754073

自定义主题

在开始本小节的实战之前,我们先来介绍一下 Tailwind CSS 中如何自定义主题。

Tailwind CSS 中,虽然提供了大量预设样式,但有时您可能需要自定义样式以满足特定需求。Tailwind 提供了多种方法来自定义样式,包括扩展现有配置、添加新配置、编写自定义 CSS 和创建插件。

  1. 扩展现有主题

要自定义现有的 Tailwind 主题,您需要在项目根目录下创建一个名为 tailwind.config.js 的文件。通过在这个文件中的 theme.extend 对象中添加配置,您可以扩展或覆盖默认配置。以下是一个示例:

// tailwind.config.js
module.exports = {theme: {extend: {backgroundColor: {'primary': '#1D3557','secondary': '#457B9D',},textColor: {'primary': '#1D3557','secondary': '#457B9D',},},},variants: {},plugins: [],
};

在这个例子中,我们扩展了背景颜色和文本颜色的配置,添加了新的 primarysecondary 颜色。现在,您可以在项目中使用这些新的颜色类:

<div class="bg-primary text-primary"><!-- Your content goes here -->
</div>
  1. 添加新主题

除了扩展现有主题,您还可以在 tailwind.config.js 文件中添加全新的配置。例如,假设您想要添加自定义的阴影配置:

// tailwind.config.js
module.exports = {theme: {boxShadow: {'custom': '0 4px 6px rgba(0, 0, 0, 0.1)',},extend: {// Your other configurations go here},},variants: {},plugins: [],
};

在这个例子中,我们为阴影添加了一个名为 custom 的新配置。现在,您可以在项目中使用这个新的阴影类:

<div class="shadow-custom"><!-- Your content goes here -->
</div>

但是需要注意的是,在这种情况下将完全替换默认的阴影预设,而不仅仅是扩展它们。请谨慎使用此方法,因为它会删除所有其他预定义的阴影预设。

  1. 编写自定义 CSS

有时,您可能需要编写自定义 CSS 来实现特定的样式。为此,您可以在项目中创建一个单独的 CSS 文件,并在其中编写自定义样式。然后,确保在您的 HTML 文件中引用这个 CSS 文件。

例如,创建一个名为 custom.css 的文件,并添加以下内容:

/* custom.css */
.custom-border {border: 2px solid #1D3557;
}

HTML 文件中,首先引用 Tailwind CSS,然后引用您的自定义 CSS 文件:

<head><link href="/path/to/tailwind.css" rel="stylesheet"><link href="/path/to/custom.css" rel="stylesheet">
</head>

现在,您可以在项目中使用这个自定义边框类:

<div class="custom-border"><!-- Your content goes here -->
</div>

实战笔记

在使用原生 CSS 来书写效果的时候,我们使用到了伪元素选择器:

<span class="girl"></span>
.girl::before {background-color: hotpink;
}

但是在 Tailwindcss 里面,并没有支持伪元素的原子类,但是有很多的替代方案,例如可以使用之前书写 CSS 的方式,也可以修改一下结构,例如我们将上面的结构修改为如下:

<div><div></div>
</div>
  • m-0: margin:0px
  • p-0: padding:0px
  • w-screen: width:100vw;
  • h-screen: height:100vh
  • flex: display: flex;
  • justify-center: justify-content: center;
  • items-center: align-items: center;
  • w-32: width: 8rem; /* 128px */

首先我们的 container 盒子的宽度需要为 280px,在 tailwindcss 里面,width 对应了大多数 rem 单位的值,我们这里设置字体的大小为 35px,280/35 = 8rem ---> w-32

  • justify-between: justify-content: space-between;

最后是关于动画,一般来讲,需要在配置文件中配置动画,配置分为两个方面:keyframes 和 animation

// 这里配置了一个名为 slide 的针对对象
keyframes: {slide: {"0%": {transform: "translateX(0)",filter: "brightness(1)",},"100%": {transform: "translateX(236px)",filter: "brightness(1.45)",},},
}
// 定义了一个名为 slide 的动画类
animation: {slide:"slide 1.5s ease-in-out infinite alternate",
}

之后就可以在 html 里面使用这个动画类,注意使用的时候前缀为 animate-xxx,例如:

<div class="aniamte-slide"></div>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FastAPI 查询参数完全指南:从基础到高级用法

title: FastAPI 查询参数完全指南:从基础到高级用法 🚀 date: 2025/3/6 updated: 2025/3/6 author: cmdragon excerpt: 探讨 FastAPI 查询参数的核心机制,涵盖从必需与可选参数、默认值到多参数处理的全方位知识。通过详细的代码示例、课后测验和常见错误解决方案,通过类…

[HNCTF 2022 WEEK3]ssssti

[HNCTF 2022 WEEK3]ssssti 首先打开题目这边翻译一下,server-side template injection是服务器模版注入,立马能反应过来是ssti(一般是flask框架) 不管了,直接丢fenjing里面一把梭哈开始扫描了1,不得不感慨fenjing的waf绕过能力是真强一些常见的危险payload也自动帮你试完了…

[安洵杯 2020]Normal SSTI

[安洵杯 2020]Normal SSTI好题目,直接把参数给我了都不用找了打开fenjing直接一把梭哈

[BJDCTF2020]Easy MD5

[BJDCTF2020]Easy MD5一个输入框,无论输入什么都没有回显,使用yakit抓包看看根据返回的数据包可以得知其sql查询语句,我们需要尝试绕过查询语句来获得线索,md5()函数中$pass参数为输入的参数,而true代表一种模式,将字符串md5哈希后转化为二进制类型 MD5语法 标准格式 md5…

【多线程】volatile关键字详解

volatile的作用volatile主要用于解决可见性和有序性的问题,但不保证原子性可见性:线程在操作变量时,会将主存中的变量拷贝一份到本地存储;修改有再找时机写回主存(不可控),这样多线程并发时会导致其他线程看到的数据和当前线程不一致 使用volatile关键字修饰变量,可使得每…

WiFiGrab教程2:一键抓包5G并使用字典破解全流程

本文使用WiFiGrab抓取5G无线网络的握手包,实验对象为自己的路由器,并结合EWSA进行字典攻击,演示暴力破解的原理和全流程操作。WiFiGrab抓包5G 本文使用WiFiGrab抓取5G无线网络的握手包,实验对象为自己的路由器,并结合EWSA进行字典攻击,演示暴力破解的原理和全流程操作。软…

phylip 中利用NJ法构建进化树

001、测试文件vcf文件(base) [b20223040323@admin2 02_NJ_tree]$ ls outcome.vcf 002、格式转换;输入文件为vcf文件run_pipeline.pl -Xms1G -Xmx5G -importGuess outcome.vcf -ExportPlugin -saveAs sequences.phy -format Phylip_Inter ## 格式转换 003、

vue的深度学习

vue的深度学习 本次学习了vue脚手架的知识,使用的是选项api,初步分析 对于脚手架目录进行简单分析 src:用于存放源码,我们一般写代码的地方,其中的app.vue是根组件,components中存放其他组件,其他组件可以加到根组件下方 <template><div class="fullName"&g…

代码随想录算法训练营day23 | 39. 组合总和、40.组合总和II、131.分割回文串

组合总和点击查看代码 class Solution { public:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int &target, int sum, int startIndex) {//由于for循环条件已经提前做了递归终止判断,故这里不用…

2023-3-5-ai试用

今天使用了ai来做简单的项目,这是我发给ai的话语这是相应的结构图,按照ai的回答做出,相应的依赖我们能够实现登录以及相应的查询,不过也有一些数据取不到,有一些bug,其他功能代码ai没有给出,需要我们进一步索要,不过也能看出ai是可以用于做项目了

车辆运维管理行业洞察与竞品分析

1. 前言 车辆运维管理是指对车辆进行日常维护、故障处理、性能监测、成本控制等一系列活动的管理。随着物联网、大数据、人工智能等技术的发展,车辆运维管理软件和解决方案的市场竞争日益激烈。 2. 确定目标通过产品差异化定位,找到竞争者的差异,打造自己的优势,抢占市场份…

go语言实现终端里的倒计时

最近在更新系统的时候发现pacman的命令行界面变了,我有很久没更新过设备上的Linux系统了,所以啥时候变的不好说。但这一变化成功勾起了我的好奇心。新版的更新进度界面如下:新的更新进度界面能同时显示多个进度条,而且并没有依靠ncurses这个传统的TUI库。为啥我能断定没有用…