Esta página lista todas as chaves da prop style e o método de Styled que a define em Rust. Os componentes Rust estilizam elementos com métodos tipados, nomeados a partir dos utilitários do Tailwind (.p_4(), .rounded(px(12.0)), .bg(color), de nsh_core::prelude), que são convertidos nas mesmas chaves; o TSX passa objetos style (e classes). A coluna Rust indica o método; a maioria deles aceita um valor, um signal ou uma closure, e .style_when(…) / .style_with(…) tornam qualquer um deles condicional. As chaves e seus tipos vêm das declarações geradas em .nsh/types/nsh/types.d.ts, então seu editor os verifica enquanto você digita. Uma chave de estilo corresponde à propriedade CSS de mesmo nome, igual à classe que a define: paddingLeft é o padding-left e o pl-4 do CSS, boxShadow é box-shadow e shadow-md; algumas chaves usam nomes mais simples, que os apps costumam escrever (paddingHorizontal para padding-inline, marginStart para margin-inline-start, numberOfLines para line-clamp). Os números são pontos, e os recursos do CSS também estão disponíveis: grid, gradientes, sombras de caixa, filtros, modos de mesclagem, contornos, transformações, transições e animações com keyframes.
Para saber como aplicar estilos, combiná-los com classes e herdar estilos de texto, consulte Styling. Para a sintaxe das classes, consulte a referência do Tailwind.
style também aceita um array; as entradas são mescladas da esquerda para a direita e as entradas falsy são ignoradas, então estilos condicionais não precisam de spread. Em Rust, .style_when(condition, …) adiciona estilos enquanto a condição for verdadeira:
As chaves de estilo seguem o CSS, então um estilo e uma classe que nomeiam a mesma propriedade fazem a mesma coisa:
Direção do layout. Uma view que não define display organiza seus filhos em coluna. display: "flex" é uma linha, a menos que flexDirection esteja definido, como no CSS e na classe flex. flexShrink é 0, a menos que seja definido.
Lados físicos e lógicos.left, right, marginLeft, paddingRight, borderLeftWidth, borderTopLeftRadius e textAlign: "left" mantêm o seu lado em layouts da direita para a esquerda. As chaves de início e fim (marginStart, paddingEnd, start, end, borderStartWidth, …), a família borderTopStartRadius e textAlign: "start" | "end" seguem a direção: o início inline é a esquerda em layouts da esquerda para a direita e a direita nos da direita para a esquerda.
Cores de borda. Uma borda ou um contorno cuja largura está definida e cuja cor não está é desenhado na cor do texto (o currentColor do CSS).
Transformações.translate, rotate e scale são propriedades independentes, e transform aceita a string de funções do CSS ou uma lista de passos cujas quantidades podem ser valores animados. Elas se compõem nesta ordem: translate, rotate, scale e, por fim, transform.
Pontos (independentes de densidade). 1 é um ponto no iOS e um dp no Android.
Points: px(16.0)
DimensionValue
number (pontos), `${number}%` (do pai) ou "auto".
Length: px(…), relative(0.5), auto()
LengthValue
number (pontos) ou `${number}%`. Sem "auto".
DefiniteLength: px(…), relative(0.5)
ColorValue
Uma string de cor CSS: #rgb, #rgba, #rrggbb, #rrggbbaa, rgb(), rgba(), hsl(), hsla(), oklch(), oklab() ou uma cor CSS nomeada (black, white, transparent, rebeccapurple, …).
Hsla / AdaptiveColor: rgb(0x2563eb), hsla(…), cores do tema (theme().primary)
EnvValue
Uma variável de ambiente em um padding ou margin: env(name), env(name, <length>) (o comprimento substitui um nome desconhecido), calc(env(name) + <length>) ou calc(<length> + env(name)). Os nomes são safe-area-inset-top, -right, -bottom, -left (Safe area) e keyboard-inset-height (Keyboard). Aceita pelas chaves físicas de padding e margin e por seus atalhos.
Um valor animado nativo ou um nó derivado dele (consulte a API de animação de nsh). Aceito por opacity, backgroundColor, borderColor, color, translate, rotate, scale, pelos passos de uma lista transform e por top / left de uma view sticky; o valor então é animado na thread de UI, sem JS.
Strings com sintaxe CSS (boxShadow, textShadow, backgroundImage, filter, gridTemplateColumns, …) aceitam comprimentos em px e números simples (ambos em pontos), pt (4/3 de ponto, como no CSS) ou rem (16 pontos).
O layout é calculado em Rust (flexbox e CSS grid). Uma view que não define display é um contêiner flex cujos filhos se empilham em coluna; display: "flex" o torna uma linha, a menos que flexDirection esteja definido, como no CSS. Os elementos têm como padrão flexShrink: 0, alignContent: "flex-start" (grids: o "normal" do CSS), alignItems: "stretch" e nenhum tamanho mínimo automático. Consulte Layout.
O layout dos filhos. "flex" os organiza em linha, a menos que flexDirection defina uma direção, como no CSS; uma view que não define display os organiza em coluna. "none" remove o elemento do layout e o oculta. "block" empilha os filhos como o layout de bloco do CSS.
boxSizing
"border-box" | "content-box"
As dimensões incluem bordas e padding, ou apenas o conteúdo. Padrão: "border-box".
"absolute" tira o elemento do fluxo e o posiciona por top / right / bottom / left em relação ao ancestral posicionado mais próximo (o pai, a menos que seja "static"). "static" permanece no fluxo e ignora os deslocamentos. "fixed" preserva o tipo do elemento e o organiza e monta em sua surface ou raiz de modal, mantendo-o no lugar enquanto o conteúdo ao redor rola. "sticky" permanece no fluxo e, enquanto seu pai estiver visível, fixa-se a top (left em uma scroll view horizontal) a partir do início da viewport da scroll view ao redor, até que seu fim encontre o da caixa de conteúdo do pai; é desenhado acima de seus irmãos do mesmo zIndex. Padrão: "relative".
top
DimensionValue | AnimatedNode
.top(…), .inset(…), .bind_sticky_top(&node)
Deslocamento a partir da borda superior do pai (absolute) ou da posição do próprio elemento (relative). Em uma view sticky, é onde ela se fixa, e um valor animado o move a cada frame.
right
DimensionValue
.right(…)
Deslocamento a partir da borda direita, em qualquer direção.
bottom
DimensionValue
.bottom(…)
Deslocamento a partir da borda inferior.
left
DimensionValue | AnimatedNode
.left(…), .bind_sticky_left(&node)
Deslocamento a partir da borda esquerda, em qualquer direção. Em uma view sticky dentro de uma scroll view horizontal, é onde ela se fixa, e um valor animado o move a cada frame.
start
DimensionValue
Deslocamento a partir da borda de início inline: esquerda em layouts da esquerda para a direita, direita nos da direita para a esquerda.
end
DimensionValue
Deslocamento a partir da borda de fim inline: direita em layouts da esquerda para a direita, esquerda nos da direita para a esquerda.
zIndex
number
.z_index(z)
Ordem entre irmãos (estável para valores iguais); também é a ordem de empilhamento nativa.
direction
"inherit" | "ltr" | "rtl"
Direção do layout, herdada por padrão. Como no CSS, as propriedades left e right mantêm seus lados da direita para a esquerda, enquanto as de início / fim inline (marginStart, end, …) assumem os lados que a direção lhes dá.
O eixo principal. Padrão: "column" para uma view que não define display, "row" quando display: "flex" está definido.
flexWrap
"wrap" | "nowrap" | "wrap-reverse"
.flex_wrap()
Se os filhos quebram em várias linhas. Padrão: "nowrap".
flex
number
.flex_1(), .flex_auto(), .flex_none()
Um único número, não o atalho do CSS: um número positivo define flexGrow com ele, flexShrink: 1 e flexBasis: 0; 0 torna o elemento inflexível; um número negativo o encolhe até o tamanho mínimo.
flexGrow
number
.flex_grow(f)
Quanto do espaço livre o elemento ocupa. Padrão: 0.
flexShrink
number
.flex_shrink(f), .flex_shrink_0()
Quanto o elemento encolhe quando falta espaço. Padrão: 0, e não 1 como no CSS.
flexBasis
DimensionValue
.basis(…)
O tamanho no eixo principal antes de o espaço livre ser distribuído.
Distribuição dos filhos ao longo do eixo principal. Padrão: "normal": "flex-start" em contêineres flex; em grids, as trilhas dimensionadas com auto se esticam.
Distribuição das linhas quebradas (e das trilhas de grid) no eixo cruzado. Padrão: "flex-start" em contêineres flex e "normal" em grids, onde as trilhas dimensionadas com auto se esticam. "start" / "end" seguem a direção da escrita.
Largura dividida pela altura, um número (1.5) ou a razão do CSS ("16 / 9"); a dimensão ausente é calculada a partir da outra. "auto" não define nenhuma.
As margens aceitam "auto" (absorve o espaço livre, como no flexbox) e valores negativos. As chaves físicas (todas, exceto marginStart / marginEnd) também aceitam um EnvValue: marginBottom: "env(keyboard-inset-height)" (em Rust, .mb_keyboard(), .mt_safe_area(), …).
Chave
Tipo
Rust
Descrição
margin
DimensionValue | EnvValue
.m(…), .m_4()
Os quatro lados.
marginHorizontal
DimensionValue | EnvValue
.mx(…)
Esquerda e direita.
marginVertical
DimensionValue | EnvValue
.my(…)
Superior e inferior.
marginTop
DimensionValue | EnvValue
.mt(…)
Superior.
marginRight
DimensionValue | EnvValue
.mr(…)
Direita.
marginBottom
DimensionValue | EnvValue
.mb(…)
Inferior.
marginLeft
DimensionValue | EnvValue
.ml(…)
Esquerda.
marginStart
DimensionValue
.ms(…)
Início inline: esquerda em layouts da esquerda para a direita, direita nos da direita para a esquerda.
As chaves físicas (todas, exceto paddingStart / paddingEnd) também aceitam um EnvValue: paddingTop: "env(safe-area-inset-top)", paddingBottom: "calc(env(safe-area-inset-bottom) + 16px)" (em Rust, .pt_safe_area(), .pb_safe_area_plus(px(16.0)), .pb_keyboard(), …). Um padding é no mínimo 0.
Chave
Tipo
Rust
Descrição
padding
LengthValue | EnvValue
.p(…), .p_4()
Os quatro lados.
paddingHorizontal
LengthValue | EnvValue
.px(…)
Esquerda e direita.
paddingVertical
LengthValue | EnvValue
.py(…)
Superior e inferior.
paddingTop
LengthValue | EnvValue
.pt(…)
Superior.
paddingRight
LengthValue | EnvValue
.pr(…)
Direita.
paddingBottom
LengthValue | EnvValue
.pb(…)
Inferior.
paddingLeft
LengthValue | EnvValue
.pl(…)
Esquerda.
paddingStart
LengthValue
.ps(…)
Início inline: esquerda em layouts da esquerda para a direita, direita nos da direita para a esquerda.
Estilo da linha. Padrão "solid". "none" e "hidden" não desenham nem reservam espaço para borda, quaisquer que sejam as larguras, definidas antes ou depois, como no CSS.
Um lado cuja largura está definida e cuja cor nada define é desenhado na cor do texto, o currentColor do CSS: { borderWidth: 1, color: "#2563eb" } desenha uma borda azul. Os contornos (outlines) usam a cor do texto da mesma forma.
"continuous": cantos cuja curvatura se suaviza em direção às bordas, como os ícones de apps do iOS. Onde a caixa é pequena demais, a curva volta a ser circular, então pílulas continuam sendo pílulas. Funciona nas duas plataformas.
Uma view projeta sombras com o boxShadow do CSS: várias camadas, spread e sombras internas (inset). As transições a animam (transitionProperty: "boxShadow").
box-shadow do CSS: deslocamentos, blur, spread e cor, várias camadas separadas por vírgulas, inset para sombras internas; ou suas camadas como números, [{ x, y, blur, spread, color, inset }] (apenas x e y são obrigatórios); uma camada sem cor é desenhada na cor do texto, como o currentColor do CSS. .shadow_color(c) recolore as camadas de um preset ou de .shadow(…).
Onde uma view ou imagem dentro de um <Text> fica em sua linha, como o vertical-align do CSS: a base na linha de base (padrão), o topo ou a base no topo ou na base da fonte do texto, ou o meio a meia altura-x acima da linha de base. A linha cresce para acomodá-la.
As transformações são as do CSS: as propriedades translate, rotate e scale e transform, compostas nessa ordem. Cada uma é uma propriedade própria, então o scale de um style substitui o scale-* de uma classe e mantém o rotate-* dela, e o transform de um style substitui as funções de transformação de uma classe (rotate-x-*, skew-*).
translate do CSS: x, depois y ("10px 20px"; porcentagens do tamanho da própria view, "-50% 0"). Um número são pontos ao longo de x. [x, y] aceita um número, uma string ("50%", "10px") ou um valor animado por eixo; um valor animado sozinho a move ao longo de x.
rotate
string | number | AnimatedNode
.rotate(deg(…)); .bind_rotate(&v)
rotate do CSS: "45deg", "0.5turn", ou em torno de um eixo, "x 90deg". Um número, e um valor animado, são graus em torno de z, no sentido horário.
scale do CSS: 1.5, "150%", x e y ("1 2"). Um valor animado escala os dois eixos; [x, y] aceita um número ou um valor animado por eixo.
transform
string | TransformStep[]
.rotate_x(…), .rotate_y(…), .skew_x(…), .skew_y(…), .transform_none(); passos animados: .bind_transform(kind, &v), .bind_motion(&m) (depois de toda transformação do style)
transform do CSS: "translateX(10px) rotate(45deg) scale(1.5)", ou "none". Funções: translate(), translateX(), translateY(), scale(), scaleX(), scaleY(), rotate() / rotateZ(), rotateX(), rotateY(), skew(), skewX(), skewY(), perspective(). Comprimentos aceitam px (translações também %, do tamanho da própria view), ângulos deg, rad ou turn. Ou uma lista de passos cujas quantidades podem ser valores animados: o que a string não consegue comportar, como uma rotação 3D animada ([{ perspective: 800 }, { rotateY: angle }]), e os canais de um motion (m.transform). O transform de um style é de uma forma ou da outra, então uma perspectiva antes de passos animados é um passo da lista. Aplicado depois de translate, rotate e scale.
transformOrigin
string | (number | string)[]
.transform_origin(…), .origin_top_left(), …
O ponto em torno do qual as transformações atuam: palavras-chave, porcentagens e comprimentos ("top left", "50% 0", [10, 20]). Padrão: o centro.
Um TransformStep é um objeto com uma chave, aplicado na ordem da lista:
Filtros CSS da view e de seu conteúdo: brightness(), contrast(), grayscale(), hue-rotate(), invert(), saturate(), sepia(), opacity(), blur(), drop-shadow().
backdropFilter
string
.backdrop_blur(r), .backdrop_brightness(…), …
Filtros CSS do que está atrás da view, como "blur(10px)" para vidro fosco.
maskImage
string
Um gradiente CSS cujo alpha decide quanto da view é desenhado, por inteiro onde é opaco e nada onde é transparente: linear-gradient(...), radial-gradient(...), conic-gradient(...). Mascara tudo o que a view desenha, inclusive seu filtro de backdrop.
glassEffect
"none" | "regular" | "clear"
.glass_effect(GlassEffect::Regular)
Liquid Glass atrás do conteúdo da view no iOS 26 e no macOS 26 e posteriores. "regular" usa o material padrão; "clear" pega menos cor do fundo. "none" é o padrão. Combine com backdropFilter para o desfoque exibido em versões anteriores do iOS e em outras plataformas.
Quando uma propriedade com transição muda (por um novo style, uma classe ou uma variante como active:), a plataforma a anima nativamente. Nenhum JS é executado durante a animação.
Propriedades separadas por vírgula que são animadas: "all", "colors" (color, backgroundColor, borderColor, …), "opacity", "transform" (todas as propriedades de transformação), "boxShadow", "borderRadius", "borderWidth", ou "none".
"auto" | "default" | "pointer" | "text" | "grab" | "grabbing" | "not-allowed" | ... (toda palavra-chave de cursor do CSS, e "none")
.cursor(Cursor), .cursor_pointer()
O formato do ponteiro sobre a view, para dispositivos apontadores (trackpads do iPad, Mac Catalyst, desktops). As palavras-chave diagonais de redimensionamento mantêm seu eixo: nwse-resize / nw-resize / se-resize (Cursor::NwseResize) e nesw-resize / ne-resize / sw-resize (Cursor::NeswResize). Windows, Linux, Android, a web e GPUI mostram cursores diagonais; o AppKit os usa no macOS 15+, com uma mão aberta no macOS 14. O UIKit usa efeitos de ponteiro no iPad e no Mac Catalyst.
pointerEvents
"auto" | "none" | "box-none" | "box-only"
.pointer_events(PointerEvents::BoxNone)
Quais toques a view e as views dentro dela recebem (pointer-events-none, pointer-events-auto). "none": nenhum, também para as views dentro dela, a menos que uma defina "auto", herdado como no CSS. "box-none": nenhum na própria view, as views dentro dela recebem os seus; "box-only": a própria view os recebe, as views dentro dela nenhum (ambos do React Native, só para a view). Padrão "auto". Veja toque e gestos.
userSelect
"auto" | "none" | "text"
.select_text(), .select_none()
Se um <Text> pode ser selecionado e copiado ("text", select-text) ou não ("none", select-none); o de uma view alcança os textos dentro dela que não definem nenhum. "auto" (select-auto), o padrão, deixa a decisão para a view ao redor, ou então para a plataforma. Veja texto.
As propriedades de pintura do CSS para formas SVG, que qualquer elemento aceita e que os elementos dentro dele herdam, como em um navegador.
Elas pintam o que componentes Rust desenham em canvases.
Chave
Tipo
Rust
Descrição
fill
"none" | "currentColor" | ColorValue
.fill_color(c), .fill_none(), .fill_current()
Com o que as formas são preenchidas; currentColor é a cor do texto do elemento.
Os estilos de texto se aplicam a <Text> e <Input>. Eles também são herdados, como no CSS: propriedades de texto definidas em uma view passam para os textos e inputs dentro dela, e spans <Text> aninhados herdam do texto pai. Todas as chaves de ViewStyle também se aplicam. Veja Texto.
Cor do texto. Aceita uma cor animada nativa. Também é a cor das bordas e contornos que não definem nenhuma.
fontSize
number
.text_size(s), .text_sm(), .text_lg(), …
Tamanho em pontos.
fontWeight
"normal" | "bold" | number | "${number}"
.font_weight(FontWeight::SEMIBOLD)
"normal" (400), "bold" (700) ou 100–900.
fontFamily
string
.font_family(name)
Uma família do sistema, ou o nome para o qual uma fonte importada é avaliada (import Inter from "./Inter.ttf"), ou uma lista deles, do mais preferido ao menos ("Brand, 'Noto Sans SC', sans-serif"). Veja Fontes.
Formas de números e letras do OpenType, uma lista (["tabular-nums"]) ou os nomes do CSS separados por espaços ("tabular-nums small-caps"). tabular-nums mantém os dígitos com a mesma largura, útil para contadores e timers.
O máximo de linhas que um <Text> exibe (line-clamp e line-clamp-* do CSS); 0 (line-clamp-none), o padrão, exibe todas. truncate é uma única linha cortada com reticências.
Como um <Text> limitado é cortado: reticências no final ("ellipsis", text-ellipsis, o padrão), cortado sem reticências ("clip", text-clip), ou reticências no início ou no meio (caminhos de arquivos).
placeholderColor e caretColor pertencem a InputStyle, o estilo de <Input>; selectionColor pertence a TextStyle, já que textos selecionáveis também o aceitam.
Key
Type
Rust
Description
placeholderColor
ColorValue
.placeholder_color(c) de um input
A cor do placeholder de um <Input> (placeholder:text-*).
textAlignVertical
"auto" | "top" | "center" | "bottom"
Onde fica um texto menor que sua caixa (um <Text> com altura).
selectionColor
ColorValue
.selection_color(c) de um input ou de um texto
O destaque de seleção e as alças de um <Input> ou de um <Text> selecionável (selection:bg-*); por padrão, a cor de destaque da plataforma. No iOS, também o cursor de um input, a menos que caretColor esteja definido (o UIKit aplica uma única cor a ambos).
caretColor
ColorValue
.caret_color(c) de um input
O cursor de um <Input> (caret-*); o padrão da plataforma quando não definido.
text-shadow do CSS: deslocamentos, desfoque e cor ("0 1px 2px rgb(0 0 0 / 0.3)"), ou suas camadas como números, [{ x, y, blur, color }]; várias camadas são desenhadas como a mais larga; uma camada sem cor é desenhada na cor do texto; "none".
object-fit do CSS: como uma imagem ou um vídeo se ajusta à sua caixa. "cover" a preenche e corta, "contain" a ajusta por dentro, "fill" a estica, "none" mantém o tamanho natural, "scale-down" é "none" ou "contain", o que for menor. Por padrão, as imagens cobrem sua caixa e os vídeos ficam contidos nela.
objectPosition
string
.object_position(p), .object_top(), … de uma imagem
Onde a imagem fica em sua caixa depois que objectFit a dimensionou, como o object-position do CSS: palavras-chave, porcentagens e comprimentos ("top", "left bottom", "25% 75%", "right 10px bottom 20%"). Uma imagem que cobre a caixa é cortada em torno dele. Por padrão, o centro.
objectFit também se aplica a <Video>; veja image e video.