介绍一下Assembler CSS,它是Tailwind CSS的一个新替代品

714 阅读6分钟

Tailwind、Bootstrap和其他CSS框架都很棒。它们能帮助你快速完成工作,而且所有这些--但这些框架在定制和可扩展性方面也很有限。

以Tailwind为例,你只能使用其团队创建的实用类来控制元素的边距和填充。虽然他们可能为常见的情况策划了一个巨大的列表,但仍有一些场合,你想定义一个自定义的值,在这样的情况下,你需要通过额外的步骤,为这个元素创建一个外部样式。

另外,几乎所有这些框架在出厂时都有数百个类,而你在项目中可能不会用到这些类,这不仅会对你的网页加载时间产生负面影响,还会影响你作为一个开发者的工作效率,因为你必须学习数百个类。

Assembler CSS可以解决这个问题。

什么是Assembler CSS?

Assembler的文档将其描述为 "一个现代的UI框架,设计成在桌面和移动设备上都有很高的性能,同时提供了一个静态CSS框架难以比拟的全部功能"。

Assembler CSS是。

  • 易于学习
  • 速度快,性能高
  • 重量轻--大小为~8kB(gzip)。
  • 可扩展性--你可以很容易地将Assembler CSS与其他CSS框架结合起来。

在本教程中,我们将探讨如何在你的项目中开始使用Assembler CSS,以及这个框架提供的功能。

安装

开始实施Assembler CSS的一个最简单的方法是在你的网页标记中的head 部分包含其CDN,如下图所示。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://unpkg.com/@asmcss/assembler/dist/assembler.min.js"></script>
    <title>Learning Assembler CSS</title>
    <style></style>
  </head>
  <body></body>
</html>

你也可以用下面的命令在npmyarn 中安装Assembler CSS。

npm install @asmcss/assembler
# OR yarn
yarn add @asmcss/assembler

开始使用

Assembler CSS为HTML元素引入了一个新的x-style 属性,这与默认的HTMLstyle 属性的工作方式相似,但效果更好。为了证明这一点,请看下面的代码。

<div
  style="
  width: 100px;
  height: 100px;
  background: #ff5722;
  border-radius: 50%;
  margin: auto;
"
></div>

它产生的输出结果如下。

x-style Assembler CSS Demo

这个组件可以使用相同的CSS属性和值,用x-style 属性重新创建。

<div
  x-style="
  width: 100px;
  height: 100px;
  background: #ff5722;
  border-radius: 50%;
  margin: auto;
"
></div>

你会注意到,这两个代码块之间的唯一区别是将style 属性改为x-style 。虽然这看起来没有什么意思,但这是在解释使用Assembler CSS是多么容易,在接下来的章节中,我们将深入探索这个框架提供的强大功能。

虚拟属性

Assembler CSS是围绕着虚拟属性发展起来的,它是一个精心策划的几乎所有CSS属性的缩短列表,其灵感来自Bootstrap和Tailwind等流行的CSS框架。这类似于实用类的工作方式,但这次是用自定义值。

使用虚拟属性,我们可以像下面这样重写我们之前的例子。

<div x-style="w:100px; h:100px; bg:#643296; radius:50%; m:auto;"></div>

我们可以看到,这没有那么繁琐,也更容易阅读,运行代码会产生相同的输出。

x-style Assembler CSS Demo

值得一提的是,一些虚拟属性有相关的默认值,其中一些可以根据其值映射到不同的属性。属于这个类别的一个例子是flex 属性,如果没有指定值,它就映射到display: flex; 。或者,如果指定了一个值,则控制灵活项目上的灵活长度(例如,flex: auto; )。

<div x-style="flex; flex:auto"></div>
<!-- is an equivalent of -->
<div x-style="display:flex; flex:auto"></div>

CSS变量

Assembler CSSx-style 也可以让你轻松地访问CSS变量,使用@ 符号,后面跟着变量名称,或者使用标准的var() 语法。

<style>
  :root {
    --primary: #3f51b5;
    --secondary: #673ab7;
  }
</style>

<p x-style="color:@primary">Hello World!</p>
<p x-style="color:var(--secondary)" lang="es">Hola Mundo!</p>

状态

Assembler CSS的另一个很棒的功能是为不同的状态改变样式;例如,你可以直接从x-style 属性中改变一个按钮的颜色,当用户在它上面徘徊时。

尽管像Tailwind这样的其他CSS框架已经提供了这样的功能,但在Assembler CSS中,你可以为每个状态的改变定义自定义值。

我们可以在Assembler CSS中使用这个功能,在属性名称后面加上句点符号. ,然后再加上你想要针对的状态名称。

例如,在聚焦时改变一个输入元素的边框,看起来会是这样的。

<input
x-style="border: 1px solid #ccc;border.focus: 2px solid #ccc;"
type="text"
/>

下面是一个更详细的例子,当用户将鼠标悬停在div ,将其背景颜色改为黑色。

<div
x-style="
  bg: #ffcc00;
  bg.hover: #1f1f23;
  color: #fff;
  p: 40px;
  text: 20px;
  radius;
  shadow;
"
>
 HOVER YOUR MOUSE HERE
</div>

Hover Black Assembler CSS

使用这个功能的一个缺点是,你需要在每次状态改变时将你的状态附加到你想修改的属性上,这可能会使我们的代码更加健壮。

假设我们想在用户悬停在div ,改变背景颜色、文本颜色和文本大小。在我们之前的例子中,我们的代码会是这样的。

<div
  x-style="
  bg: #ffcc00;
  bg.hover: #1f1f23;
  color: #fff;
  color.hover: #ccc;
  text: 20px;
  text.hover: 30px;
"
>
  HOVER YOUR MOUSE HERE
</div>

媒体中断点

用Assembler CSS制作响应式设计是很简单的。

与Bootstrap和Tailwind等框架不同,它们只允许你在桌面和移动设备上修改margin、display和padding等属性,Assembler CSS可以让你轻松地直接从x-style 属性中修改它提供的所有虚拟属性,用于多个断点。

我们可以通过在虚拟属性名称前加上|符号和断点名称来锁定一个特定的断点。

<div x-style="bg:red; sm|bg:green; md|bg:blue; w:150px; h:150px; mx:auto"></div>

运行上面的代码,在小型设备上会显示一个绿框,在中型台式机和平板电脑上显示一个蓝框,在其他设备上显示一个红框。

支持的断点包括。

  • xs - 超小型设备
  • sm - 小型设备
  • md - 中型设备
  • lg - 大型设备,以及
  • xl - 超大型设备

混合器

混合器可能是Assembler CSS中最有用的功能之一,因为它允许你编写可重复使用的样式规则,可以应用于多个元素。

混合器是通过在CSS变量上添加--mixin ,我们可以通过在混合器的名称前加上^ 符号,将它们应用到我们的元素上(通过x-style )。

<style>
  :root {
    --btn--mixin: "px:10px; py:10px; rounded; font-weight:bold; outline:none; border:none;";
  }
</style>
<button x-style="^btn">Click Me</button>

混合器参数

在汇编CSS中,你也可以在应用混合器时向其传递参数,然后在创建混合器时将这些参数作为参数访问。

混合器中的参数可以通过使用${index} 来访问,其中index 是参数的零基索引

<style>
  :root {
    --btn--mixin: "px:10px; py:10px; rounded; font-weight:bold; outline:none; border:none;";
    --btn-bg--mixin: "color:#fff;bg-color: ${0};
  }
</style>
<button x-style="^btn ^btn-bg:tomato">Click Me</button>

在上面的代码示例中,我们首先创建了一个 mixin (btn),帮助我们的按钮应用基本的样式,之后又创建了一个新的 mixinbtn-bg ,修改我们的按钮的颜色。而在我们的按钮元素中,我们通过在mixin的名称前加上冒号: ,然后再加上我们的参数值来传递参数。

总结

Assembler CSS可以帮助你建立漂亮的UI组件,而无需安装和维护复杂的软件堆栈。在本教程中,我们介绍了如何安装这个框架,以及对其功能的深入指导。

值得一提的是,Assembler CSS是一个相当新的CSS框架,它的第一个版本在2021年8月11日发布,这意味着我们应该期待在不久的将来有大量令人兴奋的更新。

介绍Assembler CSS--Tailwind CSS的新替代品》一文首次出现在LogRocket博客上。