当前位置: 首页 > news >正文

tailwindcss @apply 和 @layer 有什么区别

在 Tailwind CSS 中,@apply@layer 是两个不同的指令,它们各自有不同的用途和功能。以下是它们的区别和使用方法:

@apply 指令

@apply 指令用于将一组现有的 Tailwind CSS 工具类应用到一个自定义的 CSS 类中。这对于简化和复用复杂的样式非常有用。

示例

/* 定义一个自定义按钮样式 */
.btn-primary {@apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
}

在 HTML 中使用:

<button class="btn-primary">Click me
</button>

用途

  • 简化复杂的样式定义
  • 复用常用的样式组合
  • 保持代码的可读性和维护性

@layer 指令

@layer 指令用于将自定义的 CSS 样式归类到 Tailwind CSS 的特定层中。Tailwind CSS 有三个主要的层:basecomponentsutilities

示例

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

用途

  • 组织和管理自定义样式
  • 确保样式的声明顺序,以避免特异性问题
  • 通过层次结构确保自定义样式与 Tailwind CSS 的默认样式一致

层次结构

  • base:用于重置规则或应用于基本 HTML 元素的默认样式。
  • components:用于基于类的样式,这些样式可以被 utilities 层的样式覆盖。
  • utilities:用于小型的、单一用途的类,这些类应始终优先于其他样式。

示例代码

@tailwind base;
@tailwind components;
@tailwind utilities;@layer base {h1 {@apply text-2xl;}
}@layer components {.btn {@apply bg-blue-500 text-white font-bold py-2 px-4 rounded;}
}@layer utilities {.filter-none {filter: none;}
}

工作原理

@layer 指令会自动将 CSS 移动到与相应的 @tailwind 规则相同的位置,因此你不必担心编写 CSS 的顺序问题。任何添加到层中的自定义 CSS 只有在 HTML 中实际使用时才会包含在最终的构建中,就像 Tailwind 默认的类一样。

总结

  • @apply 用于将 Tailwind 的工具类应用到自定义的 CSS 类中,简化和复用样式。
  • @layer 用于将自定义样式归类到 Tailwind 的特定层中,确保样式的声明顺序和组织性。

通过结合使用这两个指令,你可以在 Tailwind CSS 项目中更高效地管理和复用样式。

Citations:
[1] https://tailwindcss.com/docs/functions-and-directives
[2] https://code.pieces.app/blog/tailwind-apply-css-replacing-complex-classes
[3] https://www.youtube.com/watch?v=JkWS-S51s-U
[4] https://bloggie.io/%40kinopyo/organize-your-css-in-the-tailwind-style-with-layer-directive
[5] https://github.com/tailwindlabs/tailwindcss/discussions/5509

http://www.lryc.cn/news/417974.html

相关文章:

  • React 中的 useMemo 和 useCallback
  • idea社区版lombok总是突然失效:log未知的变量
  • Java语言程序设计基础篇_编程练习题*16.13(比较不同利率的贷款)
  • 正点原子imx6ull-mini-Linux驱动之Regmap API 实验
  • postgresql 双重排序后 重复项 标识次序
  • 线程池ThreadPoolExecutor使用
  • Codeforces Round 963 (Div. 2)
  • Mysql函数学习笔记
  • 【Linux基础】Linux基本指令(一)
  • 全球视野:航空蓄电池的国际标准与技术创新
  • 11-初识python的函数——定义和调用
  • Windows安装Swoft框架
  • 阅读台灯什么品牌好?一文带你了解热门阅读台灯推荐
  • 1、.Net UI框架:Xamarin Forms - .Net宣传系列文章
  • Tomcat 最大连接数实现原理
  • 大数据应用【大数据导论】
  • IP地址申请SSL证书实现https访问
  • 未授权访问漏洞上(漏洞复现合集)
  • 多久没有清理你的电脑磁盘了?轻松解锁免费轻量磁盘清理工具
  • 高精度加法c++
  • SQL布尔盲注
  • OpenGL实现3D游戏编程【连载3】——3D空间模型光照初步
  • Python 进行反射和元编程
  • Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N]……解决
  • 如何看待“低代码”开发平台的兴起
  • React类组件与函数组件有什么异同
  • 函数调用的过程理解_汇编角度
  • 【Java-一些常见单列集合面试问题】
  • 搭建个人博客需要做哪些事
  • 《向量数据库指南》——非结构化数据的行业需求及向量数据库的关键角色