前言

很多时候 CSS 未必是需要管理的, 比如做网站, Landing Page (类似宣传单). 很多时候做了 > 用了 > 丢 > 再做新的.

它没有 "维护" 的必要. 所以也就不需要搞什么 Sass 去做代码管理之类的.

反而需要的是快速开发. 而快速开发最快的方式就是只写 HTML 不写 CSS. 少写一样东西自然就快了丫.

你可能会想, 这说的不是 Bootstrap 吗? 没错, 但是 Bootstrap 把设计封装的太上层了. 连不会 CSS 的人都可以使用. 这对我们会 CSS 的人不就是个鄙视吗?

于是 Tailwind CSS 横空出世. 它的目的和 Bootstrap 一样都是要加快开发速度 (针对不需要维护的项目, 用了就丢那种), 但它又给了开发人员使用 CSS 的能力.

简单说就是让你在 HTML 写 CSS. 类似写 inline style 但又不那么肮脏.

总结, 对于前端开发, 尤其是做 marketing 项目, 网站, Landing Page 之类的. 个人觉得 Tailwind CSS 绝对是必须要的利器.

参考:

官方网站

由于官网写的太好了, 这篇只会记入一些链接, 和概念而已.

去官网 Crtl + K search 就可以了.

安装

Webpack

请看这篇: Webpack 学习笔记 Tailwind CSS and PostCSS 的部分

Tailwind CLI

参考: Get started with Tailwind CSS

如果使用 CLI 的话建议配上 Headwind 插件.

但我个人倾向于搭配 Webpack 使用.

Purge

Bootstrap 的使用方式是在 HTML 插入一个 CSS Link, 这个 CSS 包含了许多定义好 class.

我们在 HTML 添加 class 就可以使用了. 一个很大的问题就是这个 CSS Link 体积可能不小, 必须全部加载哪怕最终没有用到.

Tailwind 不同之处就在这里, 因为它有一个 compile 的过程 (前端工程化的体现丫).

首先它会通过 tailwind.config.js 里的 content path 去扫描 html, scss, js 文档. 从里面发现 tailwind 的 utility class.

然后把有用到的 ultility class 的 style 动态写入到一个 css 里, 再把它写入有调用 @tailwind utilities 的地方.

@apply, @layer base, utilities, components

参考:

Youtube – Using @apply with Complex Classes – What's new in Tailwind CSS

Tailwind docs – Functions & Directives

HTML 布满 utility 是很恐怖的, 尤其是遇到那种重复性很多的 class, 比如做一个 image overlay.

这时就可以通过扩展 Tailwind 的 utilities 来做封装.

@apply

@apply 允许我们在 css file 中使用 Tailwind 的 utilities class.

h1 {
@apply text-7xl uppercase;
}

note: @apply 默认会去除所有 class 的 important. 而且 for Sass 要用特色语法才可以写进去哦.

@layer base

base 让我们可以定义全局 style, 比如 reset CSS, font-family, 等等.

@layer base {
body {
@apply text-8xl;
}
}

@layer utilities

Tailwind 的 utilities 就是一堆 class, 我们当然也可以用同样的方式扩展它

@layer utilities {
.h1-super-big {
@apply text-7xl uppercase;
}
}

使用

<h1 class="h1-super-big">Hello world!!!!</h1>

@layer components

component 的玩法和 utilities 是一样的, utilities 范围小, atom 嘛 components 范围比较大.

@layer components {
.btn-base {
@apply h1;
}
.btn-blue {
@apply btn-base rounded bg-blue-500 py-2 px-4 font-bold hover:bg-blue-700;
}
}

@appy 里面可以使用 utilities 和 其它的 component class 哦

theme & screen function

参考: Functions & Directives

通过 theme function 可以获取到 config 的值

.content-area {
height: calc(100vh - theme('spacing.12'));
}

通过 screen function 可以获得 breakpoint 的值

@media screen(sm) {
/* ... */
}

CSS – Tailwind CSS的更多相关文章

  1. Tailwind CSS in Action

    Tailwind CSS in Action Tailwind CSS是一个高度可定制的低级CSS框架,它为您提供了构建定制设计所需的所有构造块,而无需烦恼要覆盖的烦人的自以为是的样式 https:/ ...

  2. CSS Vocabulary – CSS 词汇表,你都掌握了吗?

    CSS 是前端开发必备技能,入门容易,深入难.比如像 Pseudo-class.Pseudo-element.Media query.Media type 以及 Vendor prefix 的概念,很 ...

  3. css样式 --- CSS hack

    前端样式,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道一 ...

  4. CSS Sprites (CSS图像拼合技术)教程工具

    什么是CSS Sprites? “Sprite”(精灵)这个词在计算机图形学中有它独特的定义,由于游戏.视频等画质越来越高,必须有一种技术可以智能的处理材质和贴图,并且要 同时保持画面流畅.“Spri ...

  5. CSS:CSS定位和浮动

    CSS2.1规定了3种定位方案 1.Normal flow:普通流(相对定位 position relative.静态定位 position static) 普通流(normal flow,国内有人翻 ...

  6. CSS之CSS hack

    由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系.我们就可以根据这个来针对不同的浏览器来写不同的CSS. CSS Hack大致有3种表现形式,CSS类内部Hack.选择器H ...

  7. HTML+CSS笔记 CSS笔记集合

    HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...

  8. CSS:CSS学习总结

    CSS:CSS学习总结 背景 CSS是一种声明式的语言,学好CSS的难度甚至大于学好一门服务器语言(我个人的感觉),这周在学习CSS,就记录一下学习经验. 1.规则声明顺序 因为CSS的样式具备层叠性 ...

  9. CSS Sprites (css精灵)

    CSS Sprites CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不 ...

  10. 奇妙的 CSS shapes(CSS图形)

    CSS 发展到今天已经越来越强大了.其语法的日新月异,让很多以前完成不了的事情,现在可以非常轻松的做到.今天就向大家介绍几个比较新的强大的 CSS 功能: clip-path shape-outsid ...

随机推荐

  1. 基于django(爱抚宠物) 小程序设计和实现(源码+LW+部署讲解)

    感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用 ...

  2. [oeasy]python0070_ 字体样式_下划线_中划线_闪动效果_反相_取消效果

    字体样式 回忆上次内容 m 可以改变字体样式 0-10 之间设置的都是字体效果 0 复原 1 变亮 2 变暗 从3到10 又是什么效果 呢?? 真的可以blink闪烁吗? 3m 3m 实现斜体字的效果 ...

  3. python selenium 判断元素是否存在,实现:找到元素,执行对应的代码;找不到元素,继续执行其他代码

    selenium因为找不到元素会抛出异常,导致执行结束 可以考虑使用driver.find_elements(),找不到元素时就会返回空列表,使用if-else语句,判断列表是否为空,非空,则正常找到 ...

  4. Cython与C函数的结合

    技术背景 在前面一篇博客中,我们介绍了使用Cython加速谐振势计算的方法.有了Cython对于计算过程更加灵活的配置(本质上是时间占用和空间占用的一种均衡),及其接近于C的性能,并且还最大程度上的保 ...

  5. RHCA rh442 010 文件系统结构 BDP调优 网卡驱动带宽

    文件系统结构 用户通过虚拟文件系统,访问底层的文件系统 对于一块磁盘而言,MBR + 分区表记录硬盘的信息 对于一个分区而言,这个分区的第一个块,superblock,超级块,记录分区元数据信息 对于 ...

  6. docker 将镜像发布到网络

    1.发布自己的镜像 hub.docker.com 创建账号 docker login -u supermao -p xxxx docker tag ls supermaofox/ls:1.0 先打标签 ...

  7. Python和RPA网页自动化-处理alert弹框

    以百度为例,分别使用python和RPA自动化完成以下步骤:设置->搜索设置->保存设置->确定 1.python代码如下 注意:[已经记录下您的使用偏好]弹框是无法捕获网页源代码的 ...

  8. 【C3】04 工作原理

    我们已经知道了CSS是做什么的以及怎么写简单的样式这样基础的CSS, 接下来我将了解到浏览器如何获取CSS.HTML和将他们加载成网页. 前置知识: 基础计算机知识.基本软件安装.简单文件知识.HTM ...

  9. 【SVN】文件解锁

    提交代码莫名其妙的把文件上锁了 然后找到文件右键的SVN的选项也不能解锁: 原来是这样解锁的: 对上锁文件的所在目录右键找到SVN选项 然后勾选第二项: 这样就解锁了.如果还说没有解锁,说明是对方自己 ...

  10. MIT6.1810の学习笔记

    webliuのmit.6.828学习笔记 写在前面 本文基于mit/6.828课程,附官方网址. 本文采用的实验环境为2020年版的xv6系统,需要wsl,vscode,docker工具.附环境配置教 ...