Эта страница перечисляет каждый ключ пропа style и метод Styled, который задаёт его в Rust. Компоненты на Rust стилизуют элементы типизированными методами, названными по утилитам Tailwind (.p_4(), .rounded(px(12.0)), .bg(color) из nsh_core::prelude), которые преобразуются в те же ключи; TSX передаёт объекты style (и классы). В колонке Rust указан метод; в большинство методов можно передать значение, сигнал или замыкание, а .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). Числа задаются в пунктах, и возможности CSS тоже доступны: grid, градиенты, тени блоков, фильтры, режимы наложения, контуры, трансформации, переходы и анимации по ключевым кадрам.
О том, как применять стили, комбинировать их с классами и наследовать стили текста, см. Стилизация. О синтаксисе классов см. справочник по Tailwind.
style также принимает массив; элементы объединяются слева направо, а ложные элементы пропускаются, так что для условных стилей не нужно использовать spread. В Rust .style_when(condition, …) добавляет стили, пока выполняется условие:
Ключи стилей следуют CSS, поэтому стиль и класс, называющие одно свойство, делают одно и то же:
Направление раскладки. Представление, в котором не задан display, раскладывает дочерние элементы в колонку. display: "flex" — это строка, если не задан flexDirection, как в CSS и в классе flex. flexShrink равно 0, если не задано иное.
Физические и логические стороны.left, right, marginLeft, paddingRight, borderLeftWidth, borderTopLeftRadius и textAlign: "left" сохраняют свою сторону в раскладках справа налево. Ключи start и end (marginStart, paddingEnd, start, end, borderStartWidth, …), семейство borderTopStartRadius и textAlign: "start" | "end" следуют направлению: inline start — это левая сторона в раскладках слева направо и правая в раскладках справа налево.
Цвета границ. Граница или контур, у которых задана толщина, но не задан цвет, рисуются цветом текста (currentColor в CSS).
Трансформации.translate, rotate и scale — отдельные свойства, а transform принимает строку функций CSS или список шагов, величины в которых могут быть анимированными значениями. Они применяются в таком порядке: translate, rotate, scale, затем transform.
Пункты (не зависят от плотности). 1 — это один пункт на iOS и один dp на Android.
Points: px(16.0)
DimensionValue
number (пункты), `${number}%` (от родителя) или "auto".
Length: px(…), relative(0.5), auto()
LengthValue
number (пункты) или `${number}%`. Без "auto".
DefiniteLength: px(…), relative(0.5)
ColorValue
Строка с цветом CSS: #rgb, #rgba, #rrggbb, #rrggbbaa, rgb(), rgba(), hsl(), hsla(), oklch(), oklab() или именованный цвет CSS (black, white, transparent, rebeccapurple, …).
Hsla / AdaptiveColor: rgb(0x2563eb), hsla(…), цвета темы (theme().primary)
EnvValue
Переменная окружения в padding или margin: env(name), env(name, <length>) (длина подставляется вместо неизвестного имени), calc(env(name) + <length>) или calc(<length> + env(name)). Допустимые имена: safe-area-inset-top, -right, -bottom, -left (Безопасная область) и keyboard-inset-height (Клавиатура). Принимается физическими ключами padding и margin и их сокращёнными формами.
Нативное анимированное значение или узел, производный от него (см. API анимации nsh). Принимается ключами opacity, backgroundColor, borderColor, color, translate, rotate, scale, шагами списка transform и ключами top / left закреплённого (sticky) представления; значение при этом анимируется в UI-потоке без JS.
AnimatedValue / AnimatedNode, привязывается с помощью .bind_opacity(&v), .bind_background(&v), .bind_border_color(&v), .bind_color(&v), .bind_translate_x(&v), …
Строки с синтаксисом CSS (boxShadow, textShadow, backgroundImage, filter, gridTemplateColumns, …) принимают длины в px и в виде чисел без единиц (оба варианта — пункты), pt (4/3 пункта, как в CSS) или rem (16 пунктов).
Раскладка вычисляется в Rust (flexbox и CSS grid). Представление, в котором не задан display, является flex-контейнером, чьи дочерние элементы выстраиваются в колонку; display: "flex" превращает его в строку, если не задан flexDirection, как в CSS. По умолчанию у элементов flexShrink: 0, alignContent: "flex-start" (у grid: "normal" из CSS), alignItems: "stretch" и нет автоматического минимального размера. См. Раскладка.
Раскладка дочерних элементов. "flex" раскладывает их в строку, если flexDirection не задаёт направление, как в CSS; представление без заданного display раскладывает их в колонку. "none" убирает элемент из раскладки и скрывает его. "block" выстраивает дочерние элементы так же, как блочная раскладка CSS.
boxSizing
"border-box" | "content-box"
Размеры включают границы и внутренние отступы либо только содержимое. По умолчанию "border-box".
"absolute" изымает элемент из потока и размещает его по top / right / bottom / left относительно ближайшего позиционированного предка (его родителя, если только тот не "static"). "static" остаётся в потоке и игнорирует смещения. "fixed" сохраняет тип элемента, раскладывает и монтирует его в корне своей поверхности или модального окна, удерживая его на месте, пока окружающее содержимое прокручивается. "sticky" остаётся в потоке и, пока его родитель находится в области видимости, прилипает на расстоянии top (left в горизонтальном scroll view) от начала видимой области окружающего scroll view, пока его конец не встретится с концом content box родителя; он рисуется поверх соседних элементов с тем же zIndex. По умолчанию "relative".
top
DimensionValue | AnimatedNode
.top(…), .inset(…), .bind_sticky_top(&node)
Смещение от верхнего края родителя (absolute) или от собственной позиции элемента (relative). У sticky-представления — место, где оно прилипает; анимированное значение сдвигает его каждый кадр.
right
DimensionValue
.right(…)
Смещение от правого края при любом направлении.
bottom
DimensionValue
.bottom(…)
Смещение от нижнего края.
left
DimensionValue | AnimatedNode
.left(…), .bind_sticky_left(&node)
Смещение от левого края при любом направлении. У sticky-представления в горизонтальном scroll view — место, где оно прилипает; анимированное значение сдвигает его каждый кадр.
start
DimensionValue
Смещение от начального inline-края: слева в раскладках слева направо, справа в раскладках справа налево.
end
DimensionValue
Смещение от конечного inline-края: справа в раскладках слева направо, слева в раскладках справа налево.
zIndex
number
.z_index(z)
Порядок среди соседних элементов (стабильный при равных значениях); также определяет нативный порядок наложения.
direction
"inherit" | "ltr" | "rtl"
Направление раскладки, по умолчанию наследуется. Как и в CSS, свойства left и right сохраняют свои стороны при раскладке справа налево, а свойства inline start / end (marginStart, end, …) берут стороны, которые им задаёт направление.
Главная ось. По умолчанию "column" для представления, в котором не задан display, и "row", как только задан display: "flex".
flexWrap
"wrap" | "nowrap" | "wrap-reverse"
.flex_wrap()
Переносятся ли дочерние элементы на несколько строк. По умолчанию "nowrap".
flex
number
.flex_1(), .flex_auto(), .flex_none()
Одно число, а не сокращённая запись CSS: положительное число задаёт для flexGrow это значение, а flexShrink: 1 и flexBasis: 0; 0 делает элемент негибким; отрицательное число сжимает его до минимального размера.
flexGrow
number
.flex_grow(f)
Какую долю свободного места занимает элемент. По умолчанию 0.
flexShrink
number
.flex_shrink(f), .flex_shrink_0()
Насколько элемент сжимается, когда места не хватает. По умолчанию 0, а не 1, как в CSS.
flexBasis
DimensionValue
.basis(…)
Размер по главной оси до распределения свободного места.
Распределение дочерних элементов вдоль главной оси. По умолчанию "normal": "flex-start" во flex-контейнерах; в grid растягиваются треки с размером auto.
Распределение перенесённых строк (и треков grid) по поперечной оси. По умолчанию "flex-start" во flex-контейнерах и "normal" в grid, где растягиваются треки с размером auto. "start" / "end" следуют направлению письма.
gap
LengthValue
.gap(…), .gap_4()
Расстояние между строками и колонками дочерних элементов.
Внешние отступы принимают "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(…)
Inline start: слева в раскладках слева направо, справа в раскладках справа налево.
marginEnd
DimensionValue
.me(…)
Inline end: противоположная сторона по отношению к marginStart.
Физические ключи (все, кроме paddingStart / paddingEnd) также принимают 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(), …). Внутренний отступ не может быть меньше 0.
Ключ
Тип
Rust
Описание
padding
LengthValue | EnvValue
.p(…), .p_4()
Все четыре стороны.
paddingHorizontal
LengthValue | EnvValue
.px(…)
Слева и справа.
paddingVertical
LengthValue | EnvValue
.py(…)
Сверху и снизу.
paddingTop
LengthValue | EnvValue
.pt(…)
Сверху.
paddingRight
LengthValue | EnvValue
.pr(…)
Справа.
paddingBottom
LengthValue | EnvValue
.pb(…)
Снизу.
paddingLeft
LengthValue | EnvValue
.pl(…)
Слева.
paddingStart
LengthValue
.ps(…)
Inline start: слева в раскладках слева направо, справа в раскладках справа налево.
paddingEnd
LengthValue
.pe(…)
Inline end: противоположная сторона по отношению к paddingStart.
Стиль линии. По умолчанию "solid". "none" и "hidden" не рисуют границу и не отводят под неё место в раскладке при любой ширине, заданной до или после, как в CSS.
Сторона, у которой задана ширина, а цвет не задан нигде, рисуется цветом текста, как CSS currentColor: { borderWidth: 1, color: "#2563eb" } рисует синюю границу. Контуры берут цвет текста так же.
Верхний угол на начальной стороне по направлению строки.
borderTopEndRadius
number
.rounded_se(r)
Верхний угол на конечной стороне по направлению строки.
borderBottomStartRadius
number
.rounded_es(r)
Нижний угол на начальной стороне по направлению строки.
borderBottomEndRadius
number
.rounded_ee(r)
Нижний угол на конечной стороне по направлению строки.
borderCurve
"circular" | "continuous"
.border_curve(curve)
"continuous": углы, кривизна которых плавно переходит в края, как у иконок приложений iOS. Если блок слишком мал, кривая становится круговой, поэтому «таблетки» остаются таблетками. Работает на обеих платформах.
Представление отбрасывает тени через CSS boxShadow: несколько слоёв, тени с растяжением и внутренние тени. Переходы анимируют их (transitionProperty: "boxShadow").
CSS box-shadow: смещения, размытие, растяжение и цвет, несколько слоёв через запятую, inset для внутренних теней; либо слои в виде чисел, [{ x, y, blur, spread, color, inset }] (обязательны только x и y); слой без цвета рисуется цветом текста, как CSS currentColor. .shadow_color(c) перекрашивает слои пресета или .shadow(…).
Положение представления или изображения внутри <Text> в его строке, как CSS vertical-align: нижний край на базовой линии (по умолчанию), верх или низ на верхней или нижней границе шрифта текста, либо середина на половине x-высоты над базовой линией. Строка увеличивается, чтобы вместить его.
Трансформации устроены как в CSS: свойства translate, rotate и scale и свойство transform применяются в этом порядке. Каждое из них является отдельным свойством, поэтому scale в стиле заменяет scale-* из класса и сохраняет его rotate-*, а transform в стиле заменяет функции трансформации из класса (rotate-x-*, skew-*).
CSS translate: сначала x, затем y ("10px 20px"; проценты от собственного размера представления, "-50% 0"). Число задаёт точки по оси x. [x, y] принимает число, строку ("50%", "10px") или анимированное значение для каждой оси; одно анимированное значение сдвигает по оси x.
rotate
string | number | AnimatedNode
.rotate(deg(…)); .bind_rotate(&v)
CSS rotate: "45deg", "0.5turn" или вокруг оси, "x 90deg". Число и анимированное значение задают градусы вокруг оси z по часовой стрелке.
CSS scale: 1.5, "150%", x и y ("1 2"). Анимированное значение масштабирует обе оси; [x, y] принимает число или анимированное значение для каждой оси.
transform
string | TransformStep[]
.rotate_x(…), .rotate_y(…), .skew_x(…), .skew_y(…), .transform_none(); анимированные шаги: .bind_transform(kind, &v), .bind_motion(&m) (после всех трансформаций стиля)
CSS transform: "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. Либо список шагов, величины которых могут быть анимированными значениями: то, что строка выразить не может, например анимированный 3D-поворот ([{ perspective: 800 }, { rotateY: angle }]), и каналы движения (m.transform). transform в стиле имеет одну из двух форм, поэтому перспектива перед анимированными шагами является шагом списка. Применяется после translate, rotate и scale.
transformOrigin
string | (number | string)[]
.transform_origin(…), .origin_top_left(), …
Точка, относительно которой действуют трансформации: ключевые слова, проценты и длины ("top left", "50% 0", [10, 20]). По умолчанию центр.
TransformStep — это объект с одним ключом, применяемый в порядке списка:
CSS-фильтры представления и его содержимого: brightness(), contrast(), grayscale(), hue-rotate(), invert(), saturate(), sepia(), opacity(), blur(), drop-shadow().
backdropFilter
string
.backdrop_blur(r), .backdrop_brightness(…), …
CSS-фильтры того, что находится позади представления, например "blur(10px)" для эффекта матового стекла.
maskImage
string
CSS-градиент, альфа-канал которого определяет, какая часть представления рисуется: полностью там, где он непрозрачен, и совсем не рисуется там, где прозрачен: 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 и других платформах.
Когда меняется свойство с переходом (из-за нового стиля, класса или варианта вроде active:), платформа анимирует его нативно. Во время анимации JS не выполняется.
Свойства через запятую, которые анимируются: "all", "colors" (color, backgroundColor, borderColor, …), "opacity", "transform" (все свойства трансформации), "boxShadow", "borderRadius", "borderWidth" или "none".
Форма указателя над представлением для указывающих устройств (трекпады 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), значение по умолчанию, оставляет решение окружающему представлению, а иначе платформе. См. текст.
CSS-свойства отрисовки SVG-фигур, которые принимает любой элемент и наследуют вложенные в него элементы, как в браузере.
Они определяют, чем закрашивается то, что компоненты Rust рисуют на холстах.
Ключ
Тип
Rust
Описание
fill
"none" | "currentColor" | ColorValue
.fill_color(c), .fill_none(), .fill_current()
Чем заливаются фигуры; currentColor — это цвет текста элемента.
Стили текста применяются к <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> (CSS-свойства line-clamp, line-clamp-*); 0 (line-clamp-none), значение по умолчанию, показывает все строки. truncate — одна строка, обрезанная многоточием.
Как обрезается ограниченный <Text>: многоточие в конце ("ellipsis", text-ellipsis, по умолчанию), обрезка без многоточия ("clip", text-clip) или многоточие в начале либо в середине (для путей к файлам).
placeholderColor и caretColor относятся к InputStyle, стилю <Input>; selectionColor — к TextStyle, так как
выделяемые тексты тоже его принимают.
Ключ
Тип
Rust
Описание
placeholderColor
ColorValue
.placeholder_color(c) поля ввода
Цвет плейсхолдера <Input> (placeholder:text-*).
textAlignVertical
"auto" | "top" | "center" | "bottom"
Где располагается текст, который короче своего блока (<Text> с заданной высотой).
selectionColor
ColorValue
.selection_color(c) поля ввода или текста
Подсветка выделения и маркеры выделения у <Input> или у выделяемого <Text> (selection:bg-*); по умолчанию — акцентный цвет платформы. В iOS также каретка поля ввода, если не задан caretColor (UIKit окрашивает оба элемента одним цветом).
caretColor
ColorValue
.caret_color(c) поля ввода
Каретка <Input> (caret-*); если не задана, используется значение платформы по умолчанию.
CSS-свойство text-shadow: смещения, размытие и цвет ("0 1px 2px rgb(0 0 0 / 0.3)") или его слои в виде чисел, [{ x, y, blur, color }]; из нескольких слоёв рисуется самый широкий; слой без цвета рисуется цветом текста; "none".
CSS-свойство object-fit: как изображение или видео вписывается в свой блок. "cover" заполняет блок и обрезает, "contain" вписывает целиком, "fill" растягивает, "none" сохраняет естественный размер, "scale-down" — это "none" или "contain", в зависимости от того, что меньше. По умолчанию изображения покрывают свой блок, а видео вписываются в него.
objectPosition
string
.object_position(p), .object_top(), … изображения
Где изображение располагается в своём блоке после того, как objectFit задал размер, как в CSS object-position: ключевые слова, проценты и длины ("top", "left bottom", "25% 75%", "right 10px bottom 20%"). Покрывающее изображение обрезается вокруг этой точки. По умолчанию — центр.
objectFit применяется и к <Video>; см. image и video.