السمة
يدعم UnoCSS أيضاً نظام السمة الذي قد تكون معتاداً عليه في Tailwind CSS / Windi CSS. على مستوى المستخدم، يمكنك تحديد خاصية theme في التكوين الخاص بك، وسيتم دمجها بعمق مع السمة الافتراضية.
الاستخدام
ts
theme: {
// ...
colors: {
veryCool: '#0000ff', // class="text-very-cool"
brand: {
primary: 'hsl(var(--hue, 217) 78% 51%)', //class="bg-brand-primary"
DEFAULT: '#942192' //class="bg-brand"
},
},
}TIP
خلال عملية التحليل، سيكون theme موجوداً دائماً في context.
الاستخدام في rules
لاستهلاك السمة في القواعد:
ts
rules: [
[/^text-(.*)$/, ([, c], { theme }) => {
if (theme.colors[c])
return { color: theme.colors[c] }
}],
]الاستخدام في variants
لاستهلاك السمة في المتغيرات:
ts
variants: [
{
name: 'variant-name',
match(matcher, { theme }) {
// ...
},
},
]الاستخدام في shortcuts
لاستهلاك السمة في الاختصارات الديناميكية:
ts
shortcuts: [
[/^badge-(.*)$/, ([, c], { theme }) => {
if (Object.keys(theme.colors).includes(c))
return `bg-${c}4:10 text-${c}5 rounded`
}],
]نقاط التوقف
WARNING
عند توفير كائن breakpoints مخصص سيتم تجاوز الافتراضي بدلاً من الدمج.
مع المثال التالي، ستتمكن من استخدام متغيرات نقطة التوقف sm: و md: فقط:
ts
theme: {
// ...
breakpoints: {
sm: '320px',
md: '640px',
},
}إذا كنت تريد وراثة نقاط توقف السمة الأصلية، يمكنك استخدام extendTheme:
ts
extendTheme: (theme) => {
return {
...theme,
breakpoints: {
...theme.breakpoints,
sm: '320px',
md: '640px',
},
}
}INFO
verticalBreakpoints نفس breakpoints ولكن للتخطيط العمودي.
بالإضافة إلى ذلك سنرتب نقاط الشاشة حسب الحجم (نفس الوحدة). لنقاط الشاشة بوحدات مختلفة، لتجنب الأخطاء، يرجى استخدام وحدات موحدة في التكوين.
ts
theme: {
// ...
breakpoints: {
sm: '320px',
// لأن uno لا يدعم ترتيب المقارنة لأحجام الوحدات المختلفة، يرجى التحويل إلى نفس الوحدة.
// md: '40rem',
md: `${40 * 16}px`,
lg: '960px',
},
}ExtendTheme
ExtendTheme يسمح لك بتحرير السمة المدمجة بعمق للحصول على كائن السمة الكامل.
الدوال المخصصة تغير كائن السمة.
ts
extendTheme: (theme) => {
theme.colors.veryCool = '#0000ff' // class="text-very-cool"
theme.colors.brand = {
primary: 'hsl(var(--hue, 217) 78% 51%)', // class="bg-brand-primary"
}
}من الممكن أيضاً إرجاع كائن سمة جديد لاستبدال الأصلي بالكامل.
ts
extendTheme: (theme) => {
return {
...theme,
colors: {
...theme.colors,
veryCool: '#0000ff', // class="text-very-cool"
brand: {
primary: 'hsl(var(--hue, 217) 78% 51%)', // class="bg-brand-primary"
},
},
}
}