Esta página enumera cada clave de la prop style y el método de Styled que la establece en Rust. Los componentes de Rust aplican estilos a los elementos con métodos tipados que llevan el nombre de las utilidades de Tailwind (.p_4(), .rounded(px(12.0)), .bg(color), de nsh_core::prelude), que se reducen a las mismas claves; TSX pasa objetos style (y clases). La columna Rust indica el método; a la mayoría de ellos se les puede pasar un valor, una señal o una clausura, y .style_when(…) / .style_with(…) hacen condicional a cualquiera de ellos. Las claves y sus tipos provienen de las declaraciones generadas en .nsh/types/nsh/types.d.ts, de modo que tu editor las comprueba mientras escribes. Una clave de estilo significa la propiedad CSS de su mismo nombre, igual que la clase que la establece: paddingLeft es padding-left y pl-4 de CSS, boxShadow es box-shadow y shadow-md; algunas claves usan nombres más simples que las apps escriben (paddingHorizontal para padding-inline, marginStart para margin-inline-start, numberOfLines para line-clamp). Los números son puntos, y las funciones de CSS también están disponibles: grid, degradados, sombras de caja, filtros, modos de mezcla, contornos, transformaciones, transiciones y animaciones con fotogramas clave.
Para saber cómo aplicar estilos, combinarlos con clases y heredar estilos de texto, consulta Estilos. Para la sintaxis de las clases, consulta la referencia de Tailwind.
style también acepta un array; las entradas se combinan de izquierda a derecha y las entradas falsy se omiten, por lo que los estilos condicionales no necesitan spread. En Rust, .style_when(condition, …) añade estilos mientras se cumpla la condición:
Las claves de estilo siguen CSS, de modo que un estilo y una clase que nombran la misma propiedad hacen lo mismo:
Dirección del diseño. Una vista que no establece display dispone a sus hijos en una columna. display: "flex" es una fila a menos que se establezca flexDirection, como en CSS y la clase flex. flexShrink es 0 salvo que se establezca.
Lados físicos y lógicos.left, right, marginLeft, paddingRight, borderLeftWidth, borderTopLeftRadius y textAlign: "left" mantienen su lado en diseños de derecha a izquierda. Las claves de inicio y fin (marginStart, paddingEnd, start, end, borderStartWidth, …), la familia borderTopStartRadius y textAlign: "start" | "end" siguen la dirección: el inicio en línea es la izquierda en diseños de izquierda a derecha y la derecha en los de derecha a izquierda.
Colores de borde. Un borde o un contorno cuyo grosor está establecido y cuyo color no lo está se dibuja con el color del texto (currentColor de CSS).
Transformaciones.translate, rotate y scale son propiedades independientes, y transform acepta la cadena de funciones de CSS o una lista de pasos cuyas cantidades pueden ser valores animados. Se componen en este orden: translate, rotate, scale y después transform.
Puntos (independientes de la densidad). 1 es un punto en iOS y un dp en Android.
Points: px(16.0)
DimensionValue
number (puntos), `${number}%` (del padre) o "auto".
Length: px(…), relative(0.5), auto()
LengthValue
number (puntos) o `${number}%`. Sin "auto".
DefiniteLength: px(…), relative(0.5)
ColorValue
Una cadena de color CSS: #rgb, #rgba, #rrggbb, #rrggbbaa, rgb(), rgba(), hsl(), hsla(), oklch(), oklab(), o un color CSS con nombre (black, white, transparent, rebeccapurple, …).
Hsla / AdaptiveColor: rgb(0x2563eb), hsla(…), colores del tema (theme().primary)
EnvValue
Una variable de entorno en un padding o margin: env(name), env(name, <length>) (la longitud sustituye a un nombre desconocido), calc(env(name) + <length>) o calc(<length> + env(name)). Los nombres son safe-area-inset-top, -right, -bottom, -left (Área segura) y keyboard-inset-height (Teclado). Aceptada por las claves físicas de padding y margin y sus atajos.
Un valor animado nativo o un nodo derivado de él (consulta la API de animación de nsh). Aceptado por opacity, backgroundColor, borderColor, color, translate, rotate, scale, los pasos de una lista transform y los top / left de una vista sticky; el valor entonces se anima en el hilo de la UI sin JS.
Las cadenas con sintaxis CSS (boxShadow, textShadow, backgroundImage, filter, gridTemplateColumns, …) aceptan longitudes en px y números sin unidad (ambos en puntos), pt (4/3 de punto, como en CSS) o rem (16 puntos).
El diseño se calcula en Rust (flexbox y CSS grid). Una vista que no establece display es un contenedor flex cuyos hijos se apilan en una columna; display: "flex" lo convierte en una fila a menos que se establezca flexDirection, como en CSS. Los elementos tienen por defecto flexShrink: 0, alignContent: "flex-start" (grids: "normal" de CSS), alignItems: "stretch" y ningún tamaño mínimo automático. Consulta Diseño.
El diseño de los hijos. "flex" los dispone en una fila a menos que flexDirection establezca una dirección, como en CSS; una vista que no establece display los dispone en una columna. "none" elimina el elemento del diseño y lo oculta. "block" apila los hijos como lo hace el diseño de bloque de CSS.
boxSizing
"border-box" | "content-box"
Las dimensiones incluyen bordes y padding, o solo el contenido. Por defecto "border-box".
"absolute" saca el elemento del flujo y lo coloca según top / right / bottom / left respecto a su ancestro posicionado más cercano (su padre, a menos que sea "static"). "static" permanece en el flujo e ignora los desplazamientos. "fixed" conserva el tipo de elemento y lo dispone y monta en su superficie o raíz modal, manteniéndolo en su sitio mientras el contenido circundante se desplaza. "sticky" permanece en el flujo y, mientras su padre está a la vista, se fija a top (left en una vista de desplazamiento horizontal) desde el inicio del viewport de la vista de desplazamiento que lo rodea, hasta que su final coincide con el de la caja de contenido de su padre; se dibuja por encima de sus hermanos del mismo zIndex. Por defecto "relative".
top
DimensionValue | AnimatedNode
.top(…), .inset(…), .bind_sticky_top(&node)
Desplazamiento desde el borde superior del padre (absolute) o desde la posición propia del elemento (relative). En una vista sticky, dónde se fija, lo cual un valor animado mueve en cada fotograma.
right
DimensionValue
.right(…)
Desplazamiento desde el borde derecho, en cualquier dirección.
bottom
DimensionValue
.bottom(…)
Desplazamiento desde el borde inferior.
left
DimensionValue | AnimatedNode
.left(…), .bind_sticky_left(&node)
Desplazamiento desde el borde izquierdo, en cualquier dirección. En una vista sticky dentro de una vista de desplazamiento horizontal, dónde se fija, lo cual un valor animado mueve en cada fotograma.
start
DimensionValue
Desplazamiento desde el borde de inicio en línea: izquierda en diseños de izquierda a derecha, derecha en los de derecha a izquierda.
end
DimensionValue
Desplazamiento desde el borde de fin en línea: derecha en diseños de izquierda a derecha, izquierda en los de derecha a izquierda.
zIndex
number
.z_index(z)
Orden entre hermanos (estable para valores iguales); también el orden de apilamiento nativo.
direction
"inherit" | "ltr" | "rtl"
Dirección del diseño, heredada por defecto. Como en CSS, las propiedades left y right mantienen sus lados de derecha a izquierda, mientras que las de inicio / fin en línea (marginStart, end, …) toman los lados que les asigna la dirección.
El eje principal. Por defecto "column" para una vista que no establece display, "row" una vez establecido display: "flex".
flexWrap
"wrap" | "nowrap" | "wrap-reverse"
.flex_wrap()
Si los hijos se ajustan en varias líneas. Por defecto "nowrap".
flex
number
.flex_1(), .flex_auto(), .flex_none()
Un solo número, no el atajo de CSS: un número positivo establece flexGrow con ese valor, flexShrink: 1 y flexBasis: 0; 0 hace el elemento inflexible; un número negativo lo encoge hasta su tamaño mínimo.
flexGrow
number
.flex_grow(f)
Cuánto del espacio libre ocupa el elemento. Por defecto 0.
flexShrink
number
.flex_shrink(f), .flex_shrink_0()
Cuánto se encoge el elemento cuando falta espacio. Por defecto 0, no 1 como en CSS.
flexBasis
DimensionValue
.basis(…)
El tamaño en el eje principal antes de distribuir el espacio libre.
Distribución de los hijos a lo largo del eje principal. Por defecto "normal": "flex-start" en contenedores flex; en grids, las pistas de tamaño auto se estiran.
Distribución de las líneas ajustadas (y de las pistas de grid) en el eje transversal. Por defecto "flex-start" en contenedores flex y "normal" en grids, donde las pistas de tamaño auto se estiran. "start" / "end" siguen la dirección de escritura.
Ancho dividido por alto, un número (1.5) o la razón de CSS ("16 / 9"); la dimensión que falta se calcula a partir de la otra. "auto" no establece ninguna.
Los márgenes aceptan "auto" (absorbe el espacio libre, como en flexbox) y valores negativos. Las claves físicas (todas excepto marginStart / marginEnd) también aceptan un EnvValue: marginBottom: "env(keyboard-inset-height)" (Rust .mb_keyboard(), .mt_safe_area(), …).
Clave
Tipo
Rust
Descripción
margin
DimensionValue | EnvValue
.m(…), .m_4()
Los cuatro lados.
marginHorizontal
DimensionValue | EnvValue
.mx(…)
Izquierda y derecha.
marginVertical
DimensionValue | EnvValue
.my(…)
Arriba y abajo.
marginTop
DimensionValue | EnvValue
.mt(…)
Arriba.
marginRight
DimensionValue | EnvValue
.mr(…)
Derecha.
marginBottom
DimensionValue | EnvValue
.mb(…)
Abajo.
marginLeft
DimensionValue | EnvValue
.ml(…)
Izquierda.
marginStart
DimensionValue
.ms(…)
Inicio en línea: izquierda en diseños de izquierda a derecha, derecha en los de derecha a izquierda.
Las claves físicas (todas excepto paddingStart / paddingEnd) también aceptan un EnvValue: paddingTop: "env(safe-area-inset-top)", paddingBottom: "calc(env(safe-area-inset-bottom) + 16px)" (Rust .pt_safe_area(), .pb_safe_area_plus(px(16.0)), .pb_keyboard(), …). Un padding es como mínimo 0.
Clave
Tipo
Rust
Descripción
padding
LengthValue | EnvValue
.p(…), .p_4()
Los cuatro lados.
paddingHorizontal
LengthValue | EnvValue
.px(…)
Izquierda y derecha.
paddingVertical
LengthValue | EnvValue
.py(…)
Arriba y abajo.
paddingTop
LengthValue | EnvValue
.pt(…)
Arriba.
paddingRight
LengthValue | EnvValue
.pr(…)
Derecha.
paddingBottom
LengthValue | EnvValue
.pb(…)
Abajo.
paddingLeft
LengthValue | EnvValue
.pl(…)
Izquierda.
paddingStart
LengthValue
.ps(…)
Inicio en línea: izquierda en diseños de izquierda a derecha, derecha en los de derecha a izquierda.
Estilo de línea. Por defecto "solid". "none" y "hidden" no dibujan ni reservan espacio para ningún borde, sea cual sea el ancho, definido antes o después, como en CSS.
Un lado cuyo ancho está definido y cuyo color no define nada se dibuja con el color del texto, el currentColor de CSS: { borderWidth: 1, color: "#2563eb" } dibuja un borde azul. Los contornos toman el color del texto del mismo modo.
"continuous": esquinas cuya curvatura se suaviza hacia los bordes, como los iconos de las apps de iOS. Si la caja es demasiado pequeña, la curva vuelve a ser circular, de modo que las píldoras siguen siendo píldoras. Funciona en ambas plataformas.
Una vista proyecta sombras con el boxShadow de CSS: varias capas, sombras con spread e inset. Las transiciones la animan (transitionProperty: "boxShadow").
box-shadow de CSS: desplazamientos, desenfoque, spread y color, varias capas separadas por comas, inset para sombras internas; o sus capas como números, [{ x, y, blur, spread, color, inset }] (solo x y y son obligatorios); una capa sin color se dibuja con el color del texto, como el currentColor de CSS. .shadow_color(c) recolorea las capas de un preset o de .shadow(…).
Dónde se sitúa una vista o imagen dentro de un <Text> en su línea, como el vertical-align de CSS: su parte inferior sobre la línea base (por defecto), su parte superior o inferior en el borde superior o inferior de la fuente del texto, o su centro a media altura x sobre la línea base. La línea crece para acogerla.
Las transformaciones son las de CSS: las propiedades translate, rotate y scale y transform, compuestas en ese orden. Cada una es una propiedad independiente, de modo que el scale de un estilo reemplaza el scale-* de una clase y conserva su rotate-*, y el transform de un estilo reemplaza las funciones de transformación de una clase (rotate-x-*, skew-*).
translate de CSS: x y luego y ("10px 20px"; porcentajes del tamaño de la propia vista, "-50% 0"). Un número son puntos a lo largo de x. [x, y] acepta un número, una cadena ("50%", "10px") o un valor animado por eje; un valor animado solo lo mueve a lo largo de x.
rotate
string | number | AnimatedNode
.rotate(deg(…)); .bind_rotate(&v)
rotate de CSS: "45deg", "0.5turn", o alrededor de un eje, "x 90deg". Un número, y un valor animado, son grados alrededor de z, en sentido horario.
scale de CSS: 1.5, "150%", x e y ("1 2"). Un valor animado escala ambos ejes; [x, y] acepta un número o un valor animado por eje.
transform
string | TransformStep[]
.rotate_x(…), .rotate_y(…), .skew_x(…), .skew_y(…), .transform_none(); pasos animados: .bind_transform(kind, &v), .bind_motion(&m) (después de cada transformación del estilo)
transform de CSS: "translateX(10px) rotate(45deg) scale(1.5)" o "none". Funciones: translate(), translateX(), translateY(), scale(), scaleX(), scaleY(), rotate() / rotateZ(), rotateX(), rotateY(), skew(), skewX(), skewY(), perspective(). Las longitudes aceptan px (las traslaciones también %, del tamaño de la propia vista), los ángulos deg, rad o turn. O una lista de pasos cuyas cantidades pueden ser valores animados: lo que la cadena no puede expresar, como una rotación 3D animada ([{ perspective: 800 }, { rotateY: angle }]), y los canales de un movimiento (m.transform). El transform de un estilo es de una forma o de la otra, así que una perspectiva antes de pasos animados es un paso de la lista. Se aplica después de translate, rotate y scale.
transformOrigin
string | (number | string)[]
.transform_origin(…), .origin_top_left(), …
El punto alrededor del cual actúan las transformaciones: palabras clave, porcentajes y longitudes ("top left", "50% 0", [10, 20]). Por defecto, el centro.
Un TransformStep es un objeto con una sola clave, aplicado en el orden de la lista:
Filtros CSS de la vista y su contenido: brightness(), contrast(), grayscale(), hue-rotate(), invert(), saturate(), sepia(), opacity(), blur(), drop-shadow().
backdropFilter
string
.backdrop_blur(r), .backdrop_brightness(…), …
Filtros CSS de lo que hay detrás de la vista, como "blur(10px)" para el efecto de vidrio esmerilado.
maskImage
string
Un degradado CSS cuyo alfa decide cuánto de la vista se dibuja: por completo donde es opaco y nada donde es transparente: linear-gradient(...), radial-gradient(...), conic-gradient(...). Enmascara todo lo que dibuja la vista, incluido su filtro de fondo.
glassEffect
"none" | "regular" | "clear"
.glass_effect(GlassEffect::Regular)
Liquid Glass detrás del contenido de la vista en iOS 26 y macOS 26 y posteriores. "regular" usa el material estándar; "clear" toma menos color del fondo. "none" es el valor por defecto. Combínalo con backdropFilter para el desenfoque que se muestra en versiones anteriores de iOS y en otras plataformas.
Cuando cambia una propiedad con transición (por un nuevo estilo, una clase o una variante como active:), la plataforma la anima de forma nativa. No se ejecuta JS durante la animación.
Propiedades que se animan, separadas por comas: "all", "colors" (color, backgroundColor, borderColor, …), "opacity", "transform" (todas las propiedades de transformación), "boxShadow", "borderRadius", "borderWidth" o "none".
"auto" | "default" | "pointer" | "text" | "grab" | "grabbing" | "not-allowed" | ... (todas las palabras clave de cursor de CSS, y "none")
.cursor(Cursor), .cursor_pointer()
La forma del puntero sobre la vista, para punteros (trackpads de iPad, Mac Catalyst, escritorios). Las palabras clave de redimensionado diagonal conservan su eje: nwse-resize / nw-resize / se-resize (Cursor::NwseResize) y nesw-resize / ne-resize / sw-resize (Cursor::NeswResize). Windows, Linux, Android, la web y GPUI muestran cursores diagonales; AppKit los usa en macOS 15+, con una mano abierta en macOS 14. UIKit usa efectos de puntero en iPad y Mac Catalyst.
pointerEvents
"auto" | "none" | "box-none" | "box-only"
.pointer_events(PointerEvents::BoxNone)
Qué toques reciben la vista y las vistas que contiene (pointer-events-none, pointer-events-auto). "none": ninguno, tampoco para las vistas que contiene salvo que alguna defina "auto", heredado como en CSS. "box-none": ninguno en la propia vista, las vistas que contiene reciben los suyos; "box-only": la propia vista los recibe, las vistas que contiene ninguno (ambos son los de React Native, solo para la vista). Por defecto "auto". Consulta toque y gestos.
userSelect
"auto" | "none" | "text"
.select_text(), .select_none()
Si un <Text> se puede seleccionar y copiar ("text", select-text) o no ("none", select-none); el de una vista alcanza a los textos que contiene y que no definen ninguno. "auto" (select-auto), el valor por defecto, lo deja en manos de la vista que lo rodea y, si no, de la plataforma. Consulta texto.
Las propiedades de pintura de CSS de las formas SVG, que acepta cualquier elemento y que heredan los elementos que contiene, como en un navegador.
Pintan lo que los componentes de Rust dibujan en canvas.
Clave
Tipo
Rust
Descripción
fill
"none" | "currentColor" | ColorValue
.fill_color(c), .fill_none(), .fill_current()
Con qué se rellenan las formas; currentColor es el color del texto del elemento.
Los estilos de texto se aplican a <Text> y <Input>. También se heredan, como en CSS: las propiedades de texto definidas en una vista pasan a los textos y entradas que contiene, y los spans <Text> anidados heredan de su texto padre. También se aplican todas las claves de ViewStyle. Consulta Texto.
Color del texto. Acepta un color animado nativo. También es el color de los bordes y contornos que no definen ninguno.
fontSize
number
.text_size(s), .text_sm(), .text_lg(), …
Tamaño en puntos.
fontWeight
"normal" | "bold" | number | "${number}"
.font_weight(FontWeight::SEMIBOLD)
"normal" (400), "bold" (700) o 100–900.
fontFamily
string
.font_family(name)
Una familia del sistema, o el nombre al que se evalúa una fuente importada (import Inter from "./Inter.ttf"), o una lista de ellas, la preferida primero ("Brand, 'Noto Sans SC', sans-serif"). Consulta Fuentes.
Formas de números y letras de OpenType, una lista (["tabular-nums"]) o los nombres de CSS separados por espacios ("tabular-nums small-caps"). tabular-nums mantiene los dígitos con el mismo ancho, útil para contadores y temporizadores.
El máximo de líneas que muestra un <Text> (line-clamp, line-clamp-* de CSS); 0 (line-clamp-none), el valor por defecto, las muestra todas. truncate es una sola línea cortada con puntos suspensivos.
Cómo se corta un <Text> limitado: con puntos suspensivos al final ("ellipsis", text-ellipsis, el valor por defecto), recortado ("clip", text-clip), o con los puntos suspensivos al principio o en medio (rutas de archivos).
placeholderColor y caretColor pertenecen a InputStyle, el estilo de <Input>; selectionColor pertenece a TextStyle, ya que los textos seleccionables también lo aceptan.
Key
Type
Rust
Description
placeholderColor
ColorValue
.placeholder_color(c) de un input
El color del marcador de posición de un <Input> (placeholder:text-*).
textAlignVertical
"auto" | "top" | "center" | "bottom"
Dónde se coloca el texto más corto que su caja (un <Text> con altura).
selectionColor
ColorValue
.selection_color(c) de un input o de un text
El resaltado de selección y los tiradores de un <Input> o de un <Text> seleccionable (selection:bg-*); por defecto, el color de acento de la plataforma. En iOS también el cursor de un input, a menos que se establezca caretColor (UIKit tiñe ambos con un solo color).
caretColor
ColorValue
.caret_color(c) de un input
El cursor de un <Input> (caret-*); el valor por defecto de la plataforma si no se establece.
text-shadow de CSS: desplazamientos, desenfoque y color ("0 1px 2px rgb(0 0 0 / 0.3)"), o sus capas como números, [{ x, y, blur, color }]; varias capas se dibujan como la más ancha; una capa sin color se dibuja con el color del texto; "none".
object-fit de CSS: cómo se ajusta una imagen o un video a su caja. "cover" la rellena y recorta, "contain" la ajusta por dentro, "fill" la estira, "none" mantiene el tamaño natural, "scale-down" es "none" o "contain", el que sea menor. Por defecto, las imágenes cubren su caja y los videos se contienen en ella.
objectPosition
string
.object_position(p), .object_top(), … de una imagen
Dónde se sitúa la imagen en su caja una vez que objectFit le ha dado tamaño, como object-position de CSS: palabras clave, porcentajes y longitudes ("top", "left bottom", "25% 75%", "right 10px bottom 20%"). Una imagen que cubre se recorta alrededor de este punto. Por defecto, el centro.
objectFit se aplica también a <Video>; consulta image y video.