Row
Group: Layout
Description
A Row is a Div that arranges its contents side by side
instead of stacked, with everything vertically centered. Use it when
several pieces of content belong on one line, such as a label next
to its text box, a strip of buttons, or the columns of a card.
Syntax
Row(content, more_content, ...)
Parameters
Row takes any number of strings, numbers, booleans, and components as positional
arguments, laid out left to right. Like every component, it accepts
styling and attribute keywords.
Examples
from drafter import *
@route
def index() -> Page:
return Page([
Header("Mission Control"),
Row("Callsign:", TextBox("callsign", "Rubber Duck 1")),
Row(
Button("Launch", "index"),
Button("Abort", "index"),
Button("Snacks", "index")
),
Row(
Div("LEFT PANEL", style_padding="10px",
style_background_color="lavender"),
Div("RIGHT PANEL", style_padding="10px",
style_background_color="honeydew")
)
])
start_server()
Notes
- Internally, a
Rowis adivthat uses flexbox (display: flex; flex-direction: row; align-items: center), so any flexbox technique can be applied throughstyle_keywords:style_gap="12px"adds space between the children, andstyle_justify_content="space-between"spreads them apart. - Rows do not wrap by default, so children that are too wide will
overflow the row. Setting
style_flex_wrap="wrap"allows the contents to wrap onto additional lines. - In tests, a
Rowcompares equal to a plainDivwith the same contents and settings, so refactoring between them does not break structural assertions.
Related components
- Div (Box): the same kind of container, without the side-by-side layout.
- Table: a better fit when the side-by-side content is really rows and columns of data.