Skip to content

UnoCSS คืออะไร?

UnoCSS เป็นเครื่องยนต์ atomic CSS แบบทันที ที่ออกแบบมาเพื่อความยืดหยุ่นและขยายได้ ตัว core ไม่มีความเห็นและ utilities CSS ทั้งหมดจัดหาให้ผ่าน presets

ตัวอย่างเช่น คุณสามารถกำหนด utilities CSS แบบกำหนดเองของคุณ โดยการจัดหา rules ใน ไฟล์ config ของคุณ

ts
import { defineConfig } from 'unocss'

export default defineConfig({
  rules: [
    ['m-1', { margin: '1px' }],
  ],
})

นี่จะเพิ่ม utility m-1 ใหม่ให้กับโปรเจกต์ของคุณ เนื่องจาก UnoCSS เป็นแบบ on-demand มันจะไม่ทำอะไรจนกว่าคุณจะใช้มันใน codebase ของคุณ ดังนั้นสมมติว่าเรามีคอมโพเนนต์แบบนี้:

html
<div class="m-1">Hello</div>

m-1 จะถูกตรวจพบและ CSS ต่อไปนี้จะถูกสร้างขึ้น:

css
.m-1 { margin: 1px; }

เพื่อให้ยืดหยุ่นมากขึ้น คุณสามารถทำให้ rule ของคุณเป็นแบบไดนามิกโดยการเปลี่ยน argument แรกใน rule (เราเรียกว่า matcher) เป็น RegExp และ body เป็นฟังก์ชัน ตัวอย่างเช่น:

diff
export default defineConfig({
  rules: [
-    ['m-1', { margin: '1px' }],
+    [/^m-([\.\d]+)$/, ([_, num]) => ({ margin: `${num}px` })],
  ],
})

ด้วยการทำเช่นนี้ ตอนนี้คุณสามารถมี utilities margin แบบกำหนดเองได้ เช่น m-1, m-100 หรือ m-52.43 และอีกครั้ง UnoCSS จะสร้างมันเมื่อใดก็ตามที่คุณใช้มัน

html
<div class="m-1">Hello</div>
<div class="m-7.5">World</div>
css
.m-1 { margin: 1px; }
.m-7.5 { margin: 7.5px; }

Presets

เมื่อคุณสร้าง rules ไม่กี่ตัวแล้ว คุณสามารถแยกออกมาเป็น preset และแบ่งปันกับผู้อื่นได้ ตัวอย่างเช่น คุณสามารถสร้าง preset สำหรับ design system ของบริษัทคุณ และแบ่งปันกับทีมของคุณ

ts
import { Preset } from 'unocss'

export const myPreset: Preset = {
  name: 'my-preset',
  rules: [
    [/^m-([.\d]+)$/, ([_, num]) => ({ margin: `${num}px` })],
    [/^p-([.\d]+)$/, ([_, num]) => ({ padding: `${num}px` })],
  ],
  variants: [/* ... */],
  shortcuts: [/* ... */],
  // ...
}
ts
import { defineConfig } from 'unocss'
import { myPreset } from './my-preset'

export default defineConfig({
  presets: [
    myPreset, // preset ของคุณเอง
  ],
})

ดังนั้นในลักษณะเดียวกัน เราได้จัดหา official presets ไม่กี่ตัวสำหรับคุณเพื่อเริ่มใช้งานทันที และคุณยังสามารถหา community presets ที่น่าสนใจอีกมากมาย

ลองเล่น

คุณสามารถลอง UnoCSS ในเบราว์เซอร์ของคุณ ใน Playground หรือค้นหา utilities จาก default presets ใน Interactive Docs

การผสานรวม

UnoCSS มาพร้อมกับการผสานรวมสำหรับเฟรมเวิร์ก/เครื่องมือต่างๆ:

ตัวอย่าง

ซอร์สโค้ดสำหรับตัวอย่างทั้งหมดสามารถพบได้ในไดเรกทอรี /examples

Released under the MIT License.