Diese Seite listet jeden Key der style-Prop auf, dazu die Methode von Styled, die ihn in Rust setzt. Rust-Komponenten stylen Elemente mit typisierten Methoden, die nach Tailwinds Utilities benannt sind (.p_4(), .rounded(px(12.0)), .bg(color), aus nsh_core::prelude) und auf dieselben Keys abgebildet werden; TSX übergibt style-Objekte (und Klassen). Die Rust-Spalte nennt die Methode; die meisten Methoden akzeptieren einen Wert, ein Signal oder eine Closure, und .style_when(…) / .style_with(…) machen jede davon bedingt. Die Keys und ihre Typen stammen aus den generierten Deklarationen in .nsh/types/nsh/types.d.ts, sodass dein Editor sie beim Tippen prüft. Ein Style-Key steht für die CSS-Eigenschaft gleichen Namens, genau wie die Klasse, die sie setzt: paddingLeft ist CSS’ padding-left und pl-4, boxShadow ist box-shadow und shadow-md; einige Keys haben schlichtere Namen, wie Apps sie schreiben (paddingHorizontal für padding-inline, marginStart für margin-inline-start, numberOfLines für line-clamp). Zahlen sind Punkte, und auch die CSS-Features sind vorhanden: Grid, Verläufe, Box-Shadows, Filter, Blend-Modes, Outlines, Transforms, Transitions und Keyframe-Animationen.
Wie du Styles anwendest, mit Klassen kombinierst und Textstile vererbst, steht unter Styling. Die Klassensyntax findest du in der Tailwind-Referenz.
style akzeptiert auch ein Array; die Einträge werden von links nach rechts zusammengeführt, und falsy-Einträge werden übersprungen, sodass bedingte Styles kein Spreading brauchen. In Rust fügt .style_when(condition, …) Styles hinzu, solange die Bedingung zutrifft:
Style-Keys folgen CSS, daher bewirken ein Style und eine Klasse, die dieselbe Eigenschaft benennen, dasselbe:
Layout-Richtung. Eine View ohne display ordnet ihre Kinder in einer Spalte an. display: "flex" ergibt eine Zeile, sofern nicht flexDirection gesetzt ist, wie in CSS und bei der Klasse flex. flexShrink ist 0, sofern nicht anders gesetzt.
Physische und logische Seiten.left, right, marginLeft, paddingRight, borderLeftWidth, borderTopLeftRadius und textAlign: "left" behalten ihre Seite auch in Right-to-Left-Layouts. Die Start- und End-Keys (marginStart, paddingEnd, start, end, borderStartWidth, …), die borderTopStartRadius-Familie und textAlign: "start" | "end" folgen der Richtung: Inline-Start ist in Left-to-Right-Layouts links und in Right-to-Left-Layouts rechts.
Rahmenfarben. Ein Rahmen oder eine Outline, deren Breite gesetzt ist, deren Farbe aber nicht, wird in der Textfarbe gezeichnet (CSS’ currentColor).
Transforms.translate, rotate und scale sind eigene Eigenschaften, und transform akzeptiert CSS’ String aus Funktionen oder eine Liste von Schritten, deren Beträge animierte Werte sein können. Sie werden in dieser Reihenfolge angewendet: translate, rotate, scale, dann transform.
Eine Umgebungsvariable in einem Padding oder Margin: env(name), env(name, <length>) (die Länge steht stellvertretend für einen unbekannten Namen), calc(env(name) + <length>) oder calc(<length> + env(name)). Die Namen sind safe-area-inset-top, -right, -bottom, -left (Safe Area) und keyboard-inset-height (Tastatur). Wird von den physischen Padding- und Margin-Keys und ihren Kurzformen akzeptiert.
Ein nativer animierter Wert oder ein davon abgeleiteter Knoten (siehe Animations-API von nsh). Wird akzeptiert von opacity, backgroundColor, borderColor, color, translate, rotate, scale, den Schritten einer transform-Liste sowie top / left einer Sticky-View; der Wert wird dann ohne JS auf dem UI-Thread animiert.
Strings mit CSS-Syntax (boxShadow, textShadow, backgroundImage, filter, gridTemplateColumns, …) akzeptieren Längen in px und als reine Zahlen (beides Punkte), pt (4/3 Punkt, wie in CSS) oder rem (16 Punkte).
Das Layout wird in Rust berechnet (Flexbox und CSS Grid). Eine View ohne display ist ein Flex-Container, dessen Kinder in einer Spalte gestapelt werden; display: "flex" macht daraus eine Zeile, sofern nicht flexDirection gesetzt ist, wie in CSS. Elemente haben standardmäßig flexShrink: 0, alignContent: "flex-start" (Grids: CSS’ "normal"), alignItems: "stretch" und keine automatische Mindestgröße. Siehe Layout.
Das Layout der Kinder. "flex" ordnet sie in einer Zeile an, sofern flexDirection keine Richtung setzt, wie in CSS; eine View ohne display ordnet sie in einer Spalte an. "none" nimmt das Element aus dem Layout und blendet es aus. "block" stapelt Kinder wie das CSS-Block-Layout.
boxSizing
"border-box" | "content-box"
Die Abmessungen schließen Rahmen und Padding ein oder nur den Inhalt. Standard "border-box".
"absolute" nimmt das Element aus dem Fluss und platziert es per top / right / bottom / left relativ zu seinem nächsten positionierten Vorfahren (seinem Elternelement, sofern dieses nicht "static" ist). "static" bleibt im Fluss und ignoriert Insets. "fixed" behält den Elementtyp bei, legt es in seiner Surface oder seinem Modal-Root aus und mountet es dort, sodass es an seinem Platz bleibt, während der umgebende Inhalt scrollt. "sticky" bleibt im Fluss und haftet, solange sein Elternelement sichtbar ist, mit top (left in einer horizontalen Scroll-View) vom Anfang des Viewports der umgebenden Scroll-View, bis sein Ende auf das Ende der Content-Box des Elternelements trifft; es wird über seinen Geschwistern desselben zIndex gezeichnet. Standard "relative".
top
DimensionValue | AnimatedNode
.top(…), .inset(…), .bind_sticky_top(&node)
Abstand zur oberen Kante des Elternelements (absolute) oder zur eigenen Position des Elements (relative). Bei einer Sticky-View: wo sie haftet; ein animierter Wert verschiebt dies in jedem Frame.
right
DimensionValue
.right(…)
Abstand zur rechten Kante, in beiden Richtungen.
bottom
DimensionValue
.bottom(…)
Abstand zur unteren Kante.
left
DimensionValue | AnimatedNode
.left(…), .bind_sticky_left(&node)
Abstand zur linken Kante, in beiden Richtungen. Bei einer Sticky-View in einer horizontalen Scroll-View: wo sie haftet; ein animierter Wert verschiebt dies in jedem Frame.
start
DimensionValue
Abstand zur Inline-Start-Kante: links in Left-to-Right-Layouts, rechts in Right-to-Left-Layouts.
end
DimensionValue
Abstand zur Inline-End-Kante: rechts in Left-to-Right-Layouts, links in Right-to-Left-Layouts.
zIndex
number
.z_index(z)
Reihenfolge unter Geschwistern (stabil bei gleichen Werten); zugleich die native Stapelreihenfolge.
direction
"inherit" | "ltr" | "rtl"
Layout-Richtung, standardmäßig vererbt. Wie in CSS behalten left- und right-Eigenschaften ihre Seiten auch bei Right-to-Left, während die Inline-Start-/End-Eigenschaften (marginStart, end, …) die Seiten nehmen, die die Richtung ihnen zuweist.
Die Hauptachse. Standard "column" für eine View ohne display, "row", sobald display: "flex" gesetzt ist.
flexWrap
"wrap" | "nowrap" | "wrap-reverse"
.flex_wrap()
Ob Kinder auf mehrere Zeilen umbrechen. Standard "nowrap".
flex
number
.flex_1(), .flex_auto(), .flex_none()
Eine einzelne Zahl, nicht die CSS-Kurzform: Eine positive Zahl setzt flexGrow auf diesen Wert, flexShrink: 1 und flexBasis: 0; 0 macht das Element unflexibel; eine negative Zahl schrumpft es bis auf seine Mindestgröße.
flexGrow
number
.flex_grow(f)
Wie viel des freien Platzes das Element einnimmt. Standard 0.
flexShrink
number
.flex_shrink(f), .flex_shrink_0()
Wie stark das Element schrumpft, wenn der Platz ausgeht. Standard 0, nicht 1 wie in CSS.
flexBasis
DimensionValue
.basis(…)
Die Größe auf der Hauptachse, bevor freier Platz verteilt wird.
Verteilung umgebrochener Zeilen (und Grid-Tracks) auf der Querachse. Standard "flex-start" in Flex-Containern und "normal" in Grids, wo Tracks mit der Größe auto gestreckt werden. "start" / "end" folgen der Schreibrichtung.
Breite geteilt durch Höhe, als Zahl (1.5) oder als CSS-Verhältnis ("16 / 9"); die fehlende Abmessung wird aus der anderen berechnet. "auto" setzt keines.
Margins akzeptieren "auto" (nimmt freien Platz auf, wie in Flexbox) und negative Werte. Die physischen Keys (alle außer marginStart / marginEnd) akzeptieren auch eine EnvValue: marginBottom: "env(keyboard-inset-height)" (Rust .mb_keyboard(), .mt_safe_area(), …).
Key
Typ
Rust
Beschreibung
margin
DimensionValue | EnvValue
.m(…), .m_4()
Alle vier Seiten.
marginHorizontal
DimensionValue | EnvValue
.mx(…)
Links und rechts.
marginVertical
DimensionValue | EnvValue
.my(…)
Oben und unten.
marginTop
DimensionValue | EnvValue
.mt(…)
Oben.
marginRight
DimensionValue | EnvValue
.mr(…)
Rechts.
marginBottom
DimensionValue | EnvValue
.mb(…)
Unten.
marginLeft
DimensionValue | EnvValue
.ml(…)
Links.
marginStart
DimensionValue
.ms(…)
Inline-Start: links in Left-to-Right-Layouts, rechts in Right-to-Left-Layouts.
marginEnd
DimensionValue
.me(…)
Inline-Ende: die gegenüberliegende Seite von marginStart.
Die Füllfarbe. Akzeptiert eine native animierte Farbe.
backgroundImage
string
.bg_linear(angle), .bg_radial(), .bg_conic() mit .gradient_from / _via / _to
CSS-Verläufe, die über der Hintergrundfarbe gezeichnet werden: linear-gradient(...), radial-gradient(...), conic-gradient(...), mehrere durch Kommas getrennt.
Linienstil. Standard ist "solid". "none" und "hidden" zeichnen und layouten keinen Rahmen, unabhängig von den Breiten, ob davor oder danach gesetzt, wie in CSS.
Eine Seite, deren Breite gesetzt ist und deren Farbe nichts festlegt, wird in der Textfarbe gezeichnet, CSS’ currentColor: { borderWidth: 1, color: "#2563eb" } zeichnet einen blauen Rahmen. Konturen übernehmen die Textfarbe auf dieselbe Weise.
"continuous": Ecken, deren Krümmung sanft in die Kanten übergeht, wie bei iOS-App-Symbolen. Ist die Box zu klein, fällt die Kurve auf einen Kreisbogen zurück, sodass Kapselformen Kapselformen bleiben. Funktioniert auf beiden Plattformen.
CSS box-shadow: Versätze, Unschärfe, Spread und Farbe, mehrere Ebenen durch Kommas getrennt, inset für innere Schatten; oder seine Ebenen als Zahlen, [{ x, y, blur, spread, color, inset }] (nur x und y erforderlich); eine Ebene ohne Farbe wird in der Textfarbe gezeichnet, wie CSS’ currentColor. .shadow_color(c) färbt die Ebenen eines Presets oder von .shadow(…) um.
Wo eine View oder ein Bild innerhalb von <Text> in seiner Zeile sitzt, wie CSS’ vertical-align: die Unterkante auf der Grundlinie (Standard), die Ober- oder Unterkante an der Ober- bzw. Unterkante der Textschrift, oder die Mitte eine halbe x-Höhe über der Grundlinie. Die Zeile wächst, um sie aufzunehmen.
Transforms entsprechen denen von CSS: die Eigenschaften translate, rotate und scale sowie transform, in dieser Reihenfolge zusammengesetzt. Jede ist eine eigene Eigenschaft, sodass das scale eines Styles das scale-* einer Klasse ersetzt und dessen rotate-* beibehält, und das transform eines Styles die Transform-Funktionen einer Klasse ersetzt (rotate-x-*, skew-*).
CSS’ translate: x, dann y ("10px 20px"; Prozentwerte der eigenen Größe der View, "-50% 0"). Eine Zahl sind Punkte entlang x. [x, y] akzeptiert eine Zahl, einen String ("50%", "10px") oder einen animierten Wert pro Achse; ein einzelner animierter Wert verschiebt entlang x.
rotate
string | number | AnimatedNode
.rotate(deg(…)); .bind_rotate(&v)
CSS’ rotate: "45deg", "0.5turn" oder um eine Achse, "x 90deg". Eine Zahl und ein animierter Wert sind Grad um z, im Uhrzeigersinn.
CSS’ transform: "translateX(10px) rotate(45deg) scale(1.5)" oder "none". Funktionen: translate(), translateX(), translateY(), scale(), scaleX(), scaleY(), rotate() / rotateZ(), rotateX(), rotateY(), skew(), skewX(), skewY(), perspective(). Längen akzeptieren px (Translationen auch %, bezogen auf die eigene Größe der View), Winkel deg, rad oder turn. Oder eine Liste von Schritten, deren Beträge animierte Werte sein dürfen: was der String nicht ausdrücken kann, etwa eine animierte 3D-Rotation ([{ perspective: 800 }, { rotateY: angle }]), sowie die Kanäle einer Bewegung (m.transform). Das transform eines Styles ist die eine oder die andere Form, daher ist eine Perspektive vor animierten Schritten ein Schritt der Liste. Angewendet nach translate, rotate und scale.
transformOrigin
string | (number | string)[]
.transform_origin(…), .origin_top_left(), …
Der Punkt, um den die Transforms wirken: Schlüsselwörter, Prozentwerte und Längen ("top left", "50% 0", [10, 20]). Standard ist die Mitte.
Ein TransformStep ist ein Objekt mit einem Schlüssel, angewendet in der Reihenfolge der Liste:
CSS-Filter der View und ihres Inhalts: brightness(), contrast(), grayscale(), hue-rotate(), invert(), saturate(), sepia(), opacity(), blur(), drop-shadow().
backdropFilter
string
.backdrop_blur(r), .backdrop_brightness(…), …
CSS-Filter dessen, was hinter der View liegt, etwa "blur(10px)" für Milchglas.
maskImage
string
Ein CSS-Verlauf, dessen Alpha bestimmt, wie viel von der View gezeichnet wird, vollständig wo deckend und gar nicht wo transparent: linear-gradient(...), radial-gradient(...), conic-gradient(...). Maskiert alles, was die View zeichnet, einschließlich ihres Backdrop-Filters.
glassEffect
"none" | "regular" | "clear"
.glass_effect(GlassEffect::Regular)
Liquid Glass hinter dem Inhalt der View ab iOS 26 und macOS 26. "regular" verwendet das Standardmaterial; "clear" übernimmt weniger Farbe vom Hintergrund. "none" ist der Standard. Kombiniere mit backdropFilter für die Unschärfe, die auf früheren iOS-Versionen und anderen Plattformen angezeigt wird.
Ändert sich eine Eigenschaft mit Transition (durch einen neuen Style, eine Klasse oder eine Variante wie active:), animiert die Plattform sie nativ. Während der Animation läuft kein JS.
Die Zeigerform über der View, für Zeigegeräte (iPad-Trackpads, Mac Catalyst, Desktops). Diagonale Resize-Schlüsselwörter behalten ihre Achse: nwse-resize / nw-resize / se-resize (Cursor::NwseResize) und nesw-resize / ne-resize / sw-resize (Cursor::NeswResize). Windows, Linux, Android, das Web und GPUI zeigen diagonale Cursor; AppKit verwendet sie ab macOS 15, unter macOS 14 wird eine offene Hand angezeigt. UIKit verwendet Pointer-Effekte auf iPad und Mac Catalyst.
pointerEvents
"auto" | "none" | "box-none" | "box-only"
.pointer_events(PointerEvents::BoxNone)
Welche Berührungen die View und die Views darin annehmen (pointer-events-none, pointer-events-auto). "none": keine, auch für die Views darin, sofern nicht eine "auto" setzt, vererbt wie in CSS. "box-none": keine auf der View selbst, die Views darin nehmen ihre an; "box-only": die View selbst nimmt sie an, die Views darin keine (beide von React Native, nur für die View). Standard ist "auto". Siehe Touch und Gesten.
userSelect
"auto" | "none" | "text"
.select_text(), .select_none()
Ob ein <Text> ausgewählt und kopiert werden kann ("text", select-text) oder nicht ("none", select-none); der Wert einer View gilt für die Texte darin, die keinen setzen. "auto" (select-auto), der Standard, überlässt es der umgebenden View, sonst der Plattform. Siehe Text.
CSS’ Paint-Eigenschaften von SVG-Formen, die jedes Element annimmt und die die darin enthaltenen Elemente erben, wie in einem Browser.
Sie malen, was Rust-Komponenten auf Canvases zeichnen.
Schlüssel
Typ
Rust
Beschreibung
fill
"none" | "currentColor" | ColorValue
.fill_color(c), .fill_none(), .fill_current()
Womit Formen gefüllt werden; currentColor ist die Textfarbe des Elements.
Text-Styles gelten für <Text> und <Input>. Sie werden außerdem vererbt, wie in CSS: Text-Eigenschaften, die auf einer View gesetzt sind, gehen an die Texte und Eingaben darin über, und verschachtelte <Text>-Spans erben von ihrem übergeordneten Text. Alle Schlüssel von ViewStyle gelten ebenfalls. Siehe Text.
Textfarbe. Akzeptiert eine native animierte Farbe. Auch die Farbe von Rahmen und Konturen, die keine setzen.
fontSize
number
.text_size(s), .text_sm(), .text_lg(), …
Größe in Punkten.
fontWeight
"normal" | "bold" | number | "${number}"
.font_weight(FontWeight::SEMIBOLD)
"normal" (400), "bold" (700) oder 100–900.
fontFamily
string
.font_family(name)
Eine Systemfamilie oder der Name, zu dem eine importierte Schrift ausgewertet wird (import Inter from "./Inter.ttf"), oder eine Liste davon, die bevorzugteste zuerst ("Brand, 'Noto Sans SC', sans-serif"). Siehe Schriften.
OpenType-Ziffern- und Buchstabenformen, eine Liste (["tabular-nums"]) oder CSS-Namen, durch Leerzeichen getrennt ("tabular-nums small-caps"). tabular-nums hält Ziffern gleich breit, nützlich für Zähler und Timer.
Die maximale Anzahl an Zeilen, die ein <Text> anzeigt (CSS-line-clamp, line-clamp-*); 0 (line-clamp-none), der Standardwert, zeigt alle an. truncate ist eine einzelne Zeile, die mit Auslassungspunkten abgeschnitten wird.
Wie ein begrenzter <Text> abgeschnitten wird: mit Auslassungspunkten am Ende ("ellipsis", text-ellipsis, der Standardwert), einfach abgeschnitten ("clip", text-clip) oder mit Auslassungspunkten am Anfang oder in der Mitte (Dateipfade).
placeholderColor und caretColor gehören zu InputStyle, dem Stil von <Input>; selectionColor zu TextStyle,
da auch auswählbare Texte ihn übernehmen.
Schlüssel
Typ
Rust
Beschreibung
placeholderColor
ColorValue
.placeholder_color(c) einer Eingabe
Die Farbe des Platzhalters eines <Input> (placeholder:text-*).
textAlignVertical
"auto" | "top" | "center" | "bottom"
Wo Text steht, der kürzer ist als seine Box (ein <Text> mit einer Höhe).
selectionColor
ColorValue
.selection_color(c) einer Eingabe oder eines Textes
Die Auswahlmarkierung und die Anfasser eines <Input> oder eines auswählbaren <Text> (selection:bg-*); standardmäßig die Akzentfarbe der Plattform. Unter iOS auch der Cursor einer Eingabe, sofern caretColor nicht gesetzt ist (UIKit färbt beide mit einer Farbe ein).
caretColor
ColorValue
.caret_color(c) einer Eingabe
Der Cursor eines <Input> (caret-*); der Plattformstandard, wenn nicht gesetzt.
CSS-text-shadow: Versätze, Unschärfe und Farbe ("0 1px 2px rgb(0 0 0 / 0.3)") oder die Ebenen als Zahlen, [{ x, y, blur, color }]; mehrere Ebenen werden als die breiteste gezeichnet; eine Ebene ohne Farbe wird in der Textfarbe gezeichnet; "none".
CSS-object-fit: wie ein Bild oder Video in seine Box passt. "cover" füllt sie aus und beschneidet, "contain" passt das Bild vollständig hinein, "fill" streckt es, "none" behält die natürliche Größe, "scale-down" ist "none" oder "contain", je nachdem, was kleiner ist. Bilder bedecken ihre Box standardmäßig, Videos werden vollständig darin angezeigt.
objectPosition
string
.object_position(p), .object_top(), … eines Bildes
Wo das Bild in seiner Box sitzt, nachdem objectFit es skaliert hat, wie bei CSS-object-position: Schlüsselwörter, Prozentwerte und Längen ("top", "left bottom", "25% 75%", "right 10px bottom 20%"). Ein bedeckendes Bild wird um diesen Punkt herum beschnitten. Standardmäßig die Mitte.
objectFit gilt auch für <Video>; siehe image und video.