تسرد هذه الصفحة كل مفتاح من مفاتيح الخاصية style، والدالة في Styled التي تضبطه في Rust. تنسّق مكوّنات Rust العناصر بدوال مُنمَّطة بأنواعها تحمل أسماء أدوات Tailwind المساعدة (.p_4() و.rounded(px(12.0)) و.bg(color) من nsh_core::prelude)، وتُحوَّل إلى المفاتيح نفسها؛ أما TSX فيمرّر كائنات style (والفئات classes). يذكر عمود Rust اسم الدالة؛ ويمكن تمرير قيمة أو signal أو closure إلى معظمها، وتجعل .style_when(…) / .style_with(…) أيًّا منها مشروطًا. تأتي المفاتيح وأنواعها من التصريحات المولَّدة في .nsh/types/nsh/types.d.ts، لذا يتحقق محررك منها أثناء الكتابة. يعني مفتاح النمط خاصية CSS التي تحمل اسمه، وهو مطابق للفئة التي تضبطها: paddingLeft هو padding-left وpl-4 في CSS، وboxShadow هو box-shadow وshadow-md؛ وتأخذ بعض المفاتيح أسماء أبسط يكتبها مطوّرو التطبيقات (paddingHorizontal بدلًا من padding-inline، وmarginStart بدلًا من margin-inline-start، وnumberOfLines بدلًا من line-clamp). الأرقام تعني نقاطًا (points)، وميزات CSS متاحة أيضًا: grid والتدرجات وظلال الصناديق والمرشحات وأنماط المزج والمخططات الخارجية والتحويلات والانتقالات ورسوم keyframe المتحركة.
لمعرفة كيفية تطبيق الأنماط ودمجها مع الفئات ووراثة أنماط النص، راجع التنسيق. ولمعرفة صيغة الفئات، راجع مرجع Tailwind.
يقبل style أيضًا مصفوفة؛ تُدمج عناصرها من اليسار إلى اليمين وتُتجاهل العناصر الزائفة (falsy)، فلا حاجة إلى النشر (spreading) في الأنماط الشرطية. في Rust تضيف .style_when(condition, …) أنماطًا ما دام الشرط متحققًا:
تتبع مفاتيح الأنماط CSS، لذا فإن النمط والفئة اللذين يسميان الخاصية نفسها يؤديان الوظيفة نفسها:
اتجاه التخطيط. الـ view التي لا تضبط display تُرتّب أبناءها في عمود. display: "flex" يكون صفًّا ما لم يُضبط flexDirection، كما في CSS والفئة flex. flexShrink هو 0 ما لم يُضبط.
الجوانب الفيزيائية والمنطقية.left وright وmarginLeft وpaddingRight وborderLeftWidth وborderTopLeftRadius وtextAlign: "left" تحتفظ بجانبها في التخطيطات من اليمين إلى اليسار. أما مفاتيح البداية والنهاية (marginStart وpaddingEnd وstart وend وborderStartWidth و…) والعائلة borderTopStartRadius وtextAlign: "start" | "end" فتتبع الاتجاه: بداية السطر (inline start) هي اليسار في التخطيطات من اليسار إلى اليمين، واليمين في التخطيطات من اليمين إلى اليسار.
ألوان الحدود. الحد أو المخطط الخارجي الذي ضُبط عرضه ولم يُضبط لونه يُرسم بلون النص (currentColor في CSS).
التحويلات.translate وrotate وscale خصائص مستقلة، ويقبل transform سلسلة دوال CSS أو قائمة خطوات يمكن أن تكون مقاديرها قيمًا متحركة. وتُركَّب بهذا الترتيب: translate ثم rotate ثم scale ثم transform.
متغير بيئة في الحشو أو الهامش: env(name) وenv(name, <length>) (يحل الطول محل اسم غير معروف) أو calc(env(name) + <length>) أو calc(<length> + env(name)). الأسماء هي safe-area-inset-top و-right و-bottom و-left (المنطقة الآمنة) وkeyboard-inset-height (لوحة المفاتيح). تقبله مفاتيح الحشو والهامش الفيزيائية واختصاراتها.
قيمة متحركة أصلية أو عقدة مشتقة منها (راجع واجهة الرسوم المتحركة في nsh). تقبلها opacity وbackgroundColor وborderColor وcolor وtranslate وrotate وscale وخطوات قائمة transform والمفتاحان top / left في view لاصقة؛ وعندها تتحرك القيمة على خيط واجهة المستخدم دون JS.
السلاسل ذات صيغة CSS (boxShadow وtextShadow وbackgroundImage وfilter وgridTemplateColumns و…) تقبل أطوالًا بوحدة px وبأرقام مجردة (كلاهما نقاط)، أو pt (4/3 نقطة، كما في CSS)، أو rem (16 نقطة).
يُحسب التخطيط في Rust (flexbox وCSS grid). الـ view التي لا تضبط display هي حاوية flex تتراص أبناؤها في عمود؛ ويجعلها display: "flex" صفًّا ما لم يُضبط flexDirection، كما في CSS. القيم الافتراضية للعناصر هي flexShrink: 0 وalignContent: "flex-start" (في grid: "normal" في CSS) وalignItems: "stretch"، ولا يوجد حد أدنى تلقائي للحجم. راجع التخطيط.
تخطيط الأبناء. "flex" يرتّبهم في صف ما لم يحدد flexDirection اتجاهًا، كما في CSS؛ أما view لا تضبط display فترتّبهم في عمود. "none" يزيل العنصر من التخطيط ويخفيه. "block" يرصّ الأبناء كما يفعل تخطيط block في CSS.
boxSizing
"border-box" | "content-box"
تشمل الأبعاد الحدود والحشو، أو المحتوى وحده. الافتراضي "border-box".
"absolute" يُخرج العنصر من التدفق ويضعه وفق top / right / bottom / left بالنسبة إلى أقرب سلف محدَّد الموضع (أصله المباشر ما لم يكن "static"). "static" يبقى في التدفق ويتجاهل الإزاحات. "fixed" يحافظ على نوع العنصر ويخططه ويركّبه في سطحه أو جذر النافذة المنبثقة (modal)، فيبقى في مكانه بينما يتمرر المحتوى المحيط. "sticky" يبقى في التدفق، وما دام أصله ظاهرًا يلتصق top (left في scroll view أفقية) على مسافة من بداية إطار العرض في scroll view المحيطة به، إلى أن تلتقي نهايته بنهاية صندوق محتوى أصله؛ ويُرسم فوق إخوته ذوي zIndex نفسه. الافتراضي "relative".
top
DimensionValue | AnimatedNode
.top(…) و.inset(…) و.bind_sticky_top(&node)
الإزاحة من الحافة العلوية للأصل (absolute) أو من موضع العنصر نفسه (relative). في view لاصقة، هو موضع الالتصاق، ويمكن لقيمة متحركة أن تحركه في كل إطار.
right
DimensionValue
.right(…)
الإزاحة من الحافة اليمنى، في أي اتجاه.
bottom
DimensionValue
.bottom(…)
الإزاحة من الحافة السفلية.
left
DimensionValue | AnimatedNode
.left(…) و.bind_sticky_left(&node)
الإزاحة من الحافة اليسرى، في أي اتجاه. في view لاصقة داخل scroll view أفقية، هو موضع الالتصاق، ويمكن لقيمة متحركة أن تحركه في كل إطار.
start
DimensionValue
الإزاحة من حافة بداية السطر: اليسار في التخطيطات من اليسار إلى اليمين، واليمين في التخطيطات من اليمين إلى اليسار.
end
DimensionValue
الإزاحة من حافة نهاية السطر: اليمين في التخطيطات من اليسار إلى اليمين، واليسار في التخطيطات من اليمين إلى اليسار.
zIndex
number
.z_index(z)
الترتيب بين الإخوة (مستقر عند تساوي القيم)؛ وهو أيضًا ترتيب التكديس الأصلي.
direction
"inherit" | "ltr" | "rtl"
اتجاه التخطيط، ويُورَّث افتراضيًا. كما في CSS، تحتفظ الخاصيتان left وright بجانبيهما من اليمين إلى اليسار، بينما تأخذ مفاتيح بداية السطر / نهايته (marginStart وend و…) الجانبين اللذين يحددهما الاتجاه.
توزيع الأسطر الملتفة (ومسارات grid) على المحور المتقاطع. الافتراضي "flex-start" في حاويات flex و"normal" في grid، حيث تتمدد المسارات ذات الحجم auto. "start" / "end" يتبعان اتجاه الكتابة.
تقبل الهوامش "auto" (يمتص المساحة الحرة، كما في flexbox) والقيم السالبة. وتقبل المفاتيح الفيزيائية (كلها عدا marginStart / marginEnd) أيضًا EnvValue: marginBottom: "env(keyboard-inset-height)" (في Rust .mb_keyboard() و.mt_safe_area() و…).
المفتاح
النوع
Rust
الوصف
margin
DimensionValue | EnvValue
.m(…) و.m_4()
الجوانب الأربعة.
marginHorizontal
DimensionValue | EnvValue
.mx(…)
اليسار واليمين.
marginVertical
DimensionValue | EnvValue
.my(…)
الأعلى والأسفل.
marginTop
DimensionValue | EnvValue
.mt(…)
الأعلى.
marginRight
DimensionValue | EnvValue
.mr(…)
اليمين.
marginBottom
DimensionValue | EnvValue
.mb(…)
الأسفل.
marginLeft
DimensionValue | EnvValue
.ml(…)
اليسار.
marginStart
DimensionValue
.ms(…)
بداية السطر: اليسار في التخطيطات من اليسار إلى اليمين، واليمين في التخطيطات من اليمين إلى اليسار.
نمط الخط. القيمة الافتراضية "solid". "none" و"hidden" لا يرسمان حداً ولا يحجزان له مساحة في التخطيط مهما كانت الأعراض، سواء ضُبطت قبلهما أو بعدهما، كما في CSS.
الجانب الذي ضُبط عرضه ولم يضبط أي شيء لونه يُرسم بلون النص، وهو currentColor في CSS: { borderWidth: 1, color: "#2563eb" } يرسم حداً أزرق. وتأخذ المحيطات (outlines) لون النص بالطريقة نفسها.
"continuous": زوايا يتدرج انحناؤها بسلاسة نحو الحواف، مثل أيقونات تطبيقات iOS. وحيث يكون الصندوق صغيراً جداً يعود المنحنى إلى الشكل الدائري، فتبقى الأشكال الكبسولية كبسولية. يعمل على المنصتين.
يُلقي العنصر ظلالاً باستخدام boxShadow من CSS: طبقات متعددة، وظلال ذات انتشار (spread) وظلال داخلية (inset). تحرّكها الانتقالات (transitionProperty: "boxShadow").
box-shadow من CSS: الإزاحات والتمويه والانتشار واللون، وعدة طبقات تفصل بينها فواصل، وinset للظلال الداخلية؛ أو طبقاته كأرقام، [{ x, y, blur, spread, color, inset }] (x وy فقط مطلوبان)؛ والطبقة بلا لون تُرسم بلون النص، كما في currentColor في CSS. .shadow_color(c) يعيد تلوين طبقات إعداد مسبق أو طبقات .shadow(…).
موضع العنصر أو الصورة داخل <Text> في سطره، كما في vertical-align في CSS: أسفله على خط الأساس (الافتراضي)، أو أعلاه أو أسفله عند أعلى خط النص أو أسفله، أو منتصفه على ارتفاع نصف ارتفاع الحرف x فوق خط الأساس. ويكبر السطر ليتسع له.
التحويلات هي تحويلات CSS: الخصائص translate وrotate وscale والخاصية transform، وتُركَّب بهذا الترتيب. كل منها خاصية مستقلة، لذا فإن scale في نمط ما يستبدل scale-* في صنف (class) ويُبقي rotate-* الخاص به، وإن transform في نمط ما يستبدل دوال التحويل في صنف (rotate-x-*, skew-*).
translate في CSS: x ثم y ("10px 20px"؛ نسب مئوية من حجم العنصر نفسه، "-50% 0"). الرقم يعني نقاطاً على المحور x. [x, y] يقبل رقماً أو سلسلة نصية ("50%", "10px") أو قيمة متحركة لكل محور؛ والقيمة المتحركة وحدها تحرّكه على المحور x.
rotate
string | number | AnimatedNode
.rotate(deg(…)); .bind_rotate(&v)
rotate في CSS: "45deg", "0.5turn"، أو حول محور، "x 90deg". الرقم، وكذلك القيمة المتحركة، يعني درجات حول المحور z باتجاه عقارب الساعة.
transform في CSS: "translateX(10px) rotate(45deg) scale(1.5)"، أو "none". الدوال: translate(), translateX(), translateY(), scale(), scaleX(), scaleY(), rotate() / rotateZ(), rotateX(), rotateY(), skew(), skewX(), skewY(), perspective(). الأطوال تقبل px (والإزاحات تقبل أيضاً %، من حجم العنصر نفسه)، والزوايا deg أو rad أو turn. أو قائمة من الخطوات يمكن أن تكون مقاديرها قيماً متحركة: ما لا تستطيع السلسلة النصية حمله، مثل دوران ثلاثي الأبعاد متحرك ([{ perspective: 800 }, { rotateY: angle }])، وقنوات الحركة (m.transform). قيمة transform في النمط تكون إحدى الصيغتين لا كلتيهما، لذا فإن المنظور (perspective) الذي يسبق خطوات متحركة هو خطوة من القائمة. تُطبَّق بعد translate وrotate وscale.
transformOrigin
string | (number | string)[]
.transform_origin(…), .origin_top_left(), …
النقطة التي تعمل التحويلات حولها: كلمات مفتاحية ونسب مئوية وأطوال ("top left", "50% 0", [10, 20]). القيمة الافتراضية المركز.
TransformStep هي كائن بمفتاح واحد، وتُطبَّق بترتيب القائمة:
مرشحات CSS لما خلف العنصر، مثل "blur(10px)" للزجاج المصنفر.
maskImage
string
تدرّج CSS تحدد شفافيته (alpha) مقدار ما يُرسم من العنصر، كاملاً حيث يكون معتماً ولا شيء حيث يكون شفافاً: linear-gradient(...), radial-gradient(...), conic-gradient(...). يقنّع كل ما يرسمه العنصر، بما فيه مرشح الخلفية.
glassEffect
"none" | "regular" | "clear"
.glass_effect(GlassEffect::Regular)
Liquid Glass خلف محتوى العنصر على iOS 26 وmacOS 26 وما بعدهما. "regular" يستخدم المادة القياسية؛ و"clear" يأخذ لوناً أقل من الخلفية. "none" هو الافتراضي. اقرنه مع backdropFilter للحصول على التمويه الظاهر في إصدارات iOS الأقدم وعلى المنصات الأخرى.
شكل المؤشر فوق العنصر، لأجهزة التأشير (لوحات اللمس في iPad وMac Catalyst وأجهزة سطح المكتب). الكلمات المفتاحية القطرية لتغيير الحجم تحتفظ بمحورها: nwse-resize / nw-resize / se-resize (Cursor::NwseResize) وnesw-resize / ne-resize / sw-resize (Cursor::NeswResize). تعرض Windows وLinux وAndroid والويب وGPUI مؤشرات قطرية؛ ويستخدمها AppKit على macOS 15 وما بعده، مع يد مفتوحة على macOS 14. ويستخدم UIKit تأثيرات المؤشر على iPad وMac Catalyst.
pointerEvents
"auto" | "none" | "box-none" | "box-only"
.pointer_events(PointerEvents::BoxNone)
اللمسات التي يستقبلها العنصر والعناصر داخله (pointer-events-none, pointer-events-auto). "none": لا شيء، وكذلك للعناصر داخله ما لم يضبط أحدها "auto"، وهي موروثة كما في CSS. "box-none": لا شيء للعنصر نفسه، وتستقبل العناصر داخله لمساتها؛ "box-only": يستقبلها العنصر نفسه ولا تستقبل العناصر داخله شيئاً (كلاهما من React Native، للعنصر نفسه فقط). القيمة الافتراضية "auto". راجع اللمس والإيماءات.
userSelect
"auto" | "none" | "text"
.select_text(), .select_none()
هل يمكن تحديد <Text> ونسخه ("text", select-text) أم لا ("none", select-none)؛ وقيمة العنصر تصل إلى النصوص داخله التي لا تضبط شيئاً. "auto" (select-auto)، وهي الافتراضية، تترك القرار للعنصر المحيط، وإلا فللمنصة. راجع النص.
تُطبَّق أنماط النص على <Text> و<Input>. وهي أيضاً موروثة، كما في CSS: خصائص النص المضبوطة على عنصر تنتقل إلى النصوص والحقول داخله، وترث امتدادات <Text> المتداخلة من نصها الأب. وتنطبق أيضاً كل مفاتيح ViewStyle. راجع النص.
لون النص. يقبل لوناً متحركاً أصلياً. وهو أيضاً لون الحدود والمحيطات التي لا تضبط لوناً.
fontSize
number
.text_size(s), .text_sm(), .text_lg(), …
الحجم بالنقاط.
fontWeight
"normal" | "bold" | number | "${number}"
.font_weight(FontWeight::SEMIBOLD)
"normal" (400)، "bold" (700) أو 100–900.
fontFamily
string
.font_family(name)
عائلة خطوط النظام، أو الاسم الذي يُقيَّم إليه خط مستورد (import Inter from "./Inter.ttf")، أو قائمة بها، الأفضل أولاً ("Brand, 'Noto Sans SC', sans-serif"). راجع الخطوط.
أشكال الأرقام والحروف في OpenType، قائمة (["tabular-nums"]) أو أسماء CSS مفصولة بمسافات ("tabular-nums small-caps"). tabular-nums يُبقي الأرقام بعرض واحد، وهو مفيد للعدّادات والمؤقتات.
أقصى عدد من الأسطر يعرضه <Text> (line-clamp وline-clamp-* في CSS)؛ أما 0 (line-clamp-none)، وهي القيمة الافتراضية، فتعرضها كلها. truncate هو سطر واحد يُقطع بعلامة حذف.
كيفية قطع <Text> المقيّد: بعلامة حذف في نهايته ("ellipsis"، text-ellipsis، وهي القيمة الافتراضية)، أو بالاقتصاص ("clip"، text-clip)، أو بعلامة الحذف في بدايته أو في منتصفه (لمسارات الملفات).
placeholderColor وcaretColor تنتميان إلى InputStyle، وهو نمط <Input>؛ أما selectionColor فتنتمي إلى TextStyle، لأن النصوص القابلة للتحديد تأخذه أيضًا.
Key
Type
Rust
Description
placeholderColor
ColorValue
.placeholder_color(c) of an input
لون النص البديل في <Input> (placeholder:text-*).
textAlignVertical
"auto" | "top" | "center" | "bottom"
موضع النص الأقصر من صندوقه (<Text> له ارتفاع).
selectionColor
ColorValue
.selection_color(c) of an input or a text
تمييز التحديد ومقابضه في <Input> أو في <Text> القابل للتحديد (selection:bg-*)؛ ويكون لون التمييز الخاص بالمنصة افتراضيًا. وعلى iOS يحدد أيضًا مؤشر الإدخال، ما لم يُضبط caretColor (إذ يلوّن UIKit كليهما بلون واحد).
caretColor
ColorValue
.caret_color(c) of an input
مؤشر <Input> (caret-*)؛ والقيمة الافتراضية للمنصة عند عدم الضبط.
text-shadow في CSS: الإزاحات والتمويه واللون ("0 1px 2px rgb(0 0 0 / 0.3)")، أو طبقاته كأرقام، [{ x, y, blur, color }]؛ وعند وجود عدة طبقات تُرسم الطبقة الأوسع؛ والطبقة التي بلا لون تُرسم بلون النص؛ "none".
object-fit في CSS: كيفية احتواء الصورة أو الفيديو داخل صندوقه. "cover" يملؤه ويقتص، "contain" يلائمه داخله، "fill" يمدده، "none" يحافظ على الحجم الطبيعي، و"scale-down" هو "none" أو "contain"، أيهما أصغر. تغطي الصور صندوقها افتراضيًا، أما الفيديو فيُحتوى داخله.
objectPosition
string
.object_position(p)، .object_top()، … of an image
موضع الصورة في صندوقها بعد أن يحدد objectFit حجمها، كما في object-position في CSS: كلمات مفتاحية ونسب مئوية وأطوال ("top"، "left bottom"، "25% 75%"، "right 10px bottom 20%"). وتُقتص الصورة التي تغطي صندوقها حوله. القيمة الافتراضية هي المنتصف.
objectFit ينطبق على <Video> أيضًا؛ راجع image وvideo.