ZCSS 样式系统深度解析

ZCSS(Zest Style Sheets)是 CSS 超集 — 任何合法 CSS 都是合法 ZCSS。

三种语法风格

1. 传统大括号风格(SCSS 风格)

.card {
  background-color: #fff;
  border-radius: 0.5rem;
  padding: 1.5rem;
}

2. Python 缩进风格(无大括号)

.card
  background-color: #fff
  border-radius: 0.5rem
  padding: 1.5rem

3. F#/C# 风格(等号赋值 + let 绑定)

let primary = #6c63ff
let radius  = 0.5rem

.card
  background-color = primary
  border-radius = radius
  padding   = 1.5rem

三种风格可在同一文件中混用,解析器自动检测模式。

变量系统

// SCSS 风格
$primary: #3b82f6
$radius:  0.5rem

// F# 风格(推荐)
let primary = #3b82f6
let radius  = 0.5rem

引用统一使用 $name

.btn {
  color = $primary;
  border-radius = $radius;
}

管道运算符

使用 |> 将值传递给函数,让代码更易读:

let base = #6c63ff

.btn-primary
  background-color = base |> lighten(10%)
  box-shadow = #000 |> mix(base, 25%) |> alpha(0.1)

颜色函数

let brand = #6c63ff

lighten(brand, 20%)       // 变亮
darken(brand, 20%)        // 变暗
alpha(brand, 0.5)         // 透明度
mix(#000, brand, 25%)     // 混合
complement(brand)         // 互补色
grayscale(brand)          // 灰度
adjust-hue(brand, 30deg)  // 色相旋转

混入 @mixin / @include

@mixin card($pad: 1.5rem)
  background-color: #fff
  border-radius: 0.5rem
  padding: $pad
  box-shadow: 0 2px 8px rgba(0,0,0,0.1)

.post-card { @include card() }
.sidebar  { @include card(1rem) }

响应式断点简写

.grid
  display: grid
  grid-template-columns: 1fr

  @md
    grid-template-columns: repeat(2, 1fr)   // min-width: 768px

  @lg
    grid-template-columns: repeat(3, 1fr)   // min-width: 1024px

完整示例

@use "zest:palette"
@use "zest:utilities"

let radius = 0.5rem
let shadow = 0 4px 12px rgba(0,0,0,0.1)

@mixin card
  @apply d-block bg-white p-4
  border-radius = radius
  box-shadow = shadow

.feature-card
  @include card
  transition = all 0.2s

  &:hover
    transform = translateY(-2px)

  h3
    font-size = 1.1rem
    color = $primary |> darken(10%)

所有 ZCSS 编译为标准 CSS,零运行时开销。