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.