CSS style properties

A list of all the supported CSS style like shortcuts you can use as properties in your pug tags. These will then transform themselves into the appropriate Dart code.

alignment

Describes where the content of a child should be positioned. Eg: text inside of a container.

Maps to Flutter Alignment values in camelcase.

Valid values:

  • bottom-center: The center point along the bottom edge

  • bottom-left: The bottom left corner

  • bottom-right: The bottom right corner

  • center: The center point, both horizontally and vertically

  • center-left: The center point along the left edge

  • center-right: The center point along the right edge

  • top-center: The center point along the top edge

  • top-left: The top left corner

  • top-right: The top right corner

Example:

container(width=500 height=400)
    .greeting(alignment='center-right')
        | Hello, I am positioned at the right!

fit

Describes how a box should be inscribed into another box. Used for the FittedBox Flutter container. Use the background-size style property instead if you want to apply a sizing to a background-image.

Maps to Flutter BoxFit values in camelcase.

Valid values:

  • contain: As large as possible while still containing the source entirely within the target box

  • cover: As small as possible while still covering the entire target box.

  • fill: Fill the target box by distorting the source's aspect ratio.

  • fill-height: Make sure the full height of the source is shown, regardless of whether this means the source overflows the target box horizontally.

  • fill-width: Make sure the full width of the source is shown, regardless of whether this means the source overflows the target box vertically.

  • none: Align the source within the target box (by default, centering) and discard any portions of the source that lie outside the box. The source image is not resized.

  • scale-down: Align the source within the target box (by default, centering) and, if necessary, scale the source down to ensure that the source fits within the box. This is the same as contain if that would shrink the image, otherwise it is the same as none.

See the Flutter BoxFit documentation for more information on these options.

Example:

.cover-image(
    background-image="asset('images/background.jpg')"
    fit='cover')

shape

Describes how the container should be shaped.

Maps to Flutter BoxShape values in camelcase. Creates a Flutter BoxDecoration with the shape property set to to the value you pass.

Valid values:

  • circle: A circle centered in the middle of the box into which the Border or BoxDecoration is painted. The diameter of the circle is the shortest dimension of the box, either the width or the height, such that the circle touches the edges of the box.

  • rectangle: An axis-aligned, 2D rectangle. May have rounded corners (described by a BorderRadius). The edges of the rectangle will match the edges of the box into which the Border or BoxDecoration is painted.

Example:

.cover-image(
    background-image="asset('images/background.jpg')"
    shape='circle')

padding

Adds padding to containers.

Creates a Flutter padding property using EdgeInsets.only().

There are several padding properties you can use:

  • padding-left: padding on the left side only

  • padding-right: padding on the right side only

  • padding-top: padding on the top side only

  • padding-bottom: padding on the bottom side only

  • padding: padding for all sides

These properties take values according to the CSS specification, with these exceptions:

  • only direct values (numbers) are accepted

  • no support for percentages

Examples of valid values:

padding-left: 10 // EdgeInsets.only(left: 10)
padding-top: 50 // EdgeInsets.only(top: 50)
padding: 10 // EdgeInsets.only(top: 10, left: 10, bottom: 10, right: 10)
padding: 5.5 7 // EdgeInsets.only(top: 5.5, left: 7, bottom: 5.5, right: 7)

Example:

.greeting(padding=10) Hello world!

margin

Adds margin to containers.

Creates a Flutter margin property using EdgeInsets.only().

There are several margin properties you can use:

  • margin-left: margin on the left side only

  • margin-right: margin on the right side only

  • margin-top: margin on the top side only

  • margin-bottom: margin on the bottom side only

  • margin: margin for all sides

These properties take values according to the CSS specification, with these exceptions:

  • only direct values (numbers) are accepted

  • no support for percentages

Examples of valid values:

margin-left: 10 // EdgeInsets.only(left: 10)
margin-top: 50 // EdgeInsets.only(top: 50)
margin: 10 // EdgeInsets.only(top: 10, left: 10, bottom: 10, right: 10)
margin: 5.5 7 // EdgeInsets.only(top: 5.5, left: 7, bottom: 5.5, right: 7)

Example:

.greeting(margin=10) Hello world!

border-radius

Decorates a container with rounded borders.

Creates a Flutter BoxDecoration with borderRadius set using BorderRadius.only(). The values passed to BorderRadius.only for each corner are values of Radius.circular().

The border-radius property takes values according to the CSS specification, with these exceptions:

  • only direct values (numbers) are accepted

  • no support for percentages

Examples of valid values:

border-radius: 5 // BorderRadius.only(topLeft: Radius.circular(5), topRight: Radius.circular(5), bottomRight: Radius.circular(5), bottomLeft: Radius.circular(5))
border-radius: 2 5 2.5 7 // BorderRadius.only(topLeft: Radius.circular(2), topRight: Radius.circular(5), bottomRight: Radius.circular(2.5), bottomLeft: Radius.circular(7))
border-radius: 5 4 // BorderRadius.only(topLeft: Radius.circular(5), topRight: Radius.circular(4), bottomRight: Radius.circular(5), bottomLeft: Radius.circular(4))

Example:

.greeting(border-radius=4 background-color='grey') Hello world!

border

Adds borders to containers.

Creates a Flutter Border widget property using EdgeInsets.only().

Creates a Flutter BoxDecoration with border set using Border(). The values passed to Border() for each side are values of BorderSide, with an optional width, style and color.

There are several border properties you can use:

  • border-left: style of the left border

  • border-right: style of the right border

  • border-top: style of the top border

  • border-bottom: style of the bottom border

  • border: style for all border sides

  • border-style: line style for all border sides

  • border-width: width of all border sides

  • border-color: color of all border sides

These properties take values according to the CSS specification, with these exceptions:

  • for styles, only solid and none are accepted

  • width must be a number

  • color must be a name (this is a bug, will be fixed soon)

  • the border property only allows a single style for all, not a style per side

Examples of valid values:

border-left: 1 solid red
border-width: 3.3
border: none
border: 5.5 blue

Example:

.greeting(border-top='1.4 red' border-bottom='0.5 green') Hello world!

box-shadow

Adds shadows to containers.

Creates a Flutter BoxDecoration with the boxShadow property set using BoxShadow.

It suppors multiple passed box shadows, separated by a comma.

A single box shadow can have 2, 3 or 4 or 5 properties: offset-x, offset-y, and optionally blur-radius offset-radius and color.

These properties take values according to the CSS specification, with these exceptions:

  • values must be numbers

  • colors not yet supported (coming soon)

  • no support for the inset keyword

Examples of valid values:

box-shadow: 2 3 // single shadow with offset-x: 3, offset-y: 3
box-shadow: 2 2 5 // single shadow with offset-x: 2, offset-y: 2 and blur: 5
box-shadow: 4 3 6 7 // single grey shadow with blur: 6 and offset-radius: 7
box-shadow: 2 3, 3 4 9 4 // two box shadows example

Example:

.greeting(box-shadow='2 3 5 7, -5 -2') Hello world!

background-image

Sets a background image to containers.

Creates a Flutter BoxDecoration with the image property set using either NetworkImage or ExactAssetImage.

The background-image property can have one of two values:

  • url("<image-url>") : creates a NetworkImage for the given url

  • asset("<asset-name>"): uses an ExactAssetImage for the given name

Examples of valid values:

background-image: asset('images/background.jpg')
background-image: url('http://some/image/url.png')

Example:

.cover-image(background-image="asset('images/background.jpg')")

​background-color

Sets a background color to containers.

Creates a Flutter BoxDecoration with the color property set to the value you pass as a Color.

See the color property on valid values.

Example:

.redbox(width=200 height=200 background-color="red")

background-repeat

Sets how background images of a container should be repeated. Usually used together with background-image.

Creates a Flutter BoxDecoration with the repeat property of the image set to the value you pass.

Maps to Flutter ImageRepeat values in camelcase.

Valid values:

  • no-repeat: Leave uncovered portions of the box transparent

  • repeat: Repeat the image in both the x and y directions until the box is filled.

  • repeat-x: Repeat the image in the x direction until the box is filled horizontally.

  • repeat-y: Repeat the image in the y direction until the box is filled vertically.

Example:

.cover-image(
    background-image="asset('images/background.jpg')" 
    background-repeat='no-repeat')

background-size

Sets how background images of a container should be fitted in the container. Usually used together with background-image.

It does so by setting the fit property of the ImageDecoration that was created for the background-image.

See the fit property above for valid values and more information.

Example:

.cover-image(
    background-image="asset('images/background.jpg')" 
    background-fit='cover')

main-axis-alignment

Controls how a row or column aligns its children on the main axis. See the Flutter layout documentation for more information.

Maps to Flutter MainAxisAlignment enum values in camelcase.

Valid values:

  • start: Place the children as close to the start of the main axis as possible

  • end: Place the children as close to the end of the main axis as possible

  • center: Place the children as close to the middle of the main axis as possible

  • space-around: Place the free space evenly between the children as well as half of that space before and after the first and last child

  • space-between: Place the free space evenly between the children

  • space-evenly: Place the free space evenly between the children as well as before and after the first and last child

Example:

row(main-axis-alignment="space-evenly")
    .entry We
    .entry Are
    .entry Spaced
    .entry Evenly

cross-axis-alignment

Controls how a row or column aligns its children on the cross axis. See the Flutter layout documentation for more information.

Maps to Flutter CrossAxisAlignment enum values in camelcase.

Valid values:

  • start: Place the children with their start edge aligned with the start side of the cross axis

  • end: Place the children as close to the end of the cross axis as possible

  • center: Place the children so that their centers align with the middle of the cross axis

  • baseline: Place the children along the cross axis such that their baselines match

  • stretch: Require the children to fill the cross axis

Example:

column(cross-axis-alignment="center")
    .entry We
    .entry Are
    .entry Centered

main-axis-size

Controls how a row or column to deals with left-over free space in the main axis. See the Flutter layout documentation for more information.

Maps to Flutter MainAxisSize enum values in camelcase.

Valid values:

  • min: Minimize the amount of free space along the main axis, subject to the incoming layout constraints

  • max: Maximize the amount of free space along the main axis, subject to the incoming layout constraints

Example:

column(main-axis-size="max")
    .entry Some entry, left over space is maximized

color, ...-color

Assigns a Color to a property. It works on any property either named color, or ending with -color.

When a color is set on a Container, it will set the text color, much like you would set a color CSS property on a DIV in HTML. It does so by wrapping the container with DefaultTextStyle.merge and setting the text color in the TextStyle that is passed.

Valid values:

  • Any expression that evalutes to a Color. :color='Colors.red'

  • A dash-cased color name from Colors. color='deep-orange'

  • A dash-cased color name from Colors with a weight. color='deep-orange[400]'

  • A hex color ala CSS. color='#FF3499'

  • A hex color ala CSS with preceding transparency. color='#80FF3499'

Examples:

.red-text-container(color='red') This text is red
.red-container(:background-color='Colors.red')
.orange-container(background-color='deep-orange')
.green-container(background-color='green[300]')
.blue-container(background-color='#00F')
.blue-container2(background-color='#0000FF')

font-size

Sets the font size of text in the container and all its children. Only works on Containers.

It does so by wrapping the container with DefaultTextStyle.merge and setting the font size in the TextStyle that is passed.

Allowed values are ints, doubles and theme font sizes.

Example:

.test(font-size=12.5) Welcome!

font-weight

Sets the font weight of text in the container and all its children. Only works on Containers.

It does so by wrapping the container with DefaultTextStyle.merge and setting the font weight in the TextStyle that is passed.

Maps to Flutter FontWeight enum values in camelcase.

Valid values:

  • normal: The default font weight

  • bold: A commonly used font weight that is heavier than normal

  • w100: Thin, the least thick

  • w200: Extra light

  • w300: Light

  • w400: Normal / regular / plain

  • w500: Medium

  • w600: Semi bold

  • w700: Bold

  • w800: Extra bold

  • w900: Black, the most thick

Note: Instead of passing w100, you may also pass 100, etc.

Example:

.test(font-weight='bold') Welcome!

font-family

Sets the font family of text in the container and all its children. Only works on Containers.

It does so by wrapping the container with DefaultTextStyle.merge and setting the font family in the TextStyle that is passed.

Value must be a string.

Example:

.test(font-size='Arial') Welcome!

font-style

Sets the font style of text in the container and all its children. Only works on Containers.

It does so by wrapping the container with DefaultTextStyle.merge and setting the font style in the TextStyle that is passed.

Maps to Flutter FontStyle enum values in camelcase.

Valid values:

  • normal: The default font style

  • italic: Use glyphs designed for slanting

Example:

.test(font-style='italic') Welcome!

letter-spacing

The amount of space (in logical pixels) to add between each letter. A negative value can be used to bring the letters closer. Only works on Containers.

It does so by wrapping the container with DefaultTextStyle.merge and setting the letter spacing in the TextStyle that is passed.

Valid values are ints and doubles.

Example:

.test(letter-spacing=3) This text gets spaced out

line-height

Sets the line height text in the container and all its children. Only works on Containers.

It does so by wrapping the container with DefaultTextStyle.merge and setting the line height in the TextStyle that is passed.

Valid values are ints and doubles.

Example:

.test(line-height=20) Welcome!

text-decoration

A linear decoration to draw near the text.

It does so by wrapping the container with DefaultTextStyle.merge and setting the textDecoration in the TextStyle that is passed.

Maps to Flutter TextDecoration enum values in camelcase.

Valid values:

  • none: Do not draw a decoration

  • underline: Draw a line underneath each line of text

  • overline: Draw a line above each line of text

  • line-through: Draw a line through each line of text

Example:

.test(text-decoration='underline') Welcome!

text-decoration-color

The color of the text decoration you have set.

It does so by wrapping the container with DefaultTextStyle.merge and setting the decorationColor in the TextStyle that is passed.

The value must be a valid color property value.

Example:

.test(
    text-decoration='underline'
    text-decoration-color='red') 
    | Hello world!

text-decoration-style

The style in which to draw a text decoration.

It does so by wrapping the container with DefaultTextStyle.merge and setting the decorationStyle in the TextStyle that is passed.

Maps to Flutter TextDecorationStyle enum values in camelcase.

Valid values:

  • solid: Draw a solid line

  • double: Draw two lines

  • dotted: Draw a dotted line

  • dashed: Draw a dashed line

  • wavy: Draw a sinusoidal line

Example:

.test(
	text-decoration='underline'
	text-decoration-style='wavy') 
	| Hello world!

word-spacing

Sets the space between words in a text.

It does so by wrapping the container with DefaultTextStyle.merge and setting the wordSpacing in the TextStyle that is passed.

Valid values are ints and doubles.

Example:

.test(word-spacing=5.3) Welcome!

text-align

Whether and how to align text horizontally.

It does so by wrapping the container with DefaultTextStyle.merge and setting the textAlign in the TextStyle that is passed.

Maps to Flutter TextAlign enum values in camelcase.

Valid values:

  • start: Align the text on the leading edge of the container.

  • end: Align the text on the trailing edge of the container.

  • left: Align the text on the left edge of the container.

  • right: Align the text on the right edge of the container.

  • center: Align the text in the center of the container.

  • justify: Stretch lines of text that end with a soft line break to fill the width of the container.

Example:

.test(text-align='center') Welcome!

text-overflow

A linear decoration to draw near the text.

It does so by wrapping the container with DefaultTextStyle.merge and setting the overflow in the TextStyle that is passed.

Maps to Flutter TextOverflow enum values in camelcase.

Valid values:

  • clip: Clip the overflowing text to fix its container.

  • ellipsis: Use an ellipsis to indicate that the text has overflowed.

  • fade: Fade the overflowing text to transparent.

Example:

.test(text-overflow='ellipsis' width=200) 
    | This will be cut off nicely with ellipsis

text-transform

Changes the case of the text. It follows the CSS standards.

Valid values:

  • uppercase: changes the text to uppercase

  • lowercase: changes the text to lowercase

Example:

.test(text-transform='uppercase') 
    | This text will be shown in uppercase

max-lines

Sets an optional maximum number of lines for the text to span, wrapping if necessary. If the text exceeds the given number of lines, it will be truncated according to overflow.

It does so by wrapping the container with DefaultTextStyle.merge and setting the maxLines in the TextStyle that is passed.

Values must be positive integers.

Example:

.test(
    width=100
    max-lines=1
    text-overflow='ellipsis')
    | Only one line gets shown, truncated

line-clamp

Alias for max-lines.

display

CSS-like setting of how you want a widget to be displayed. This can be useful for removing layout elements through CSS.

Valid values:

  • none: this will remove the widget

Example:

.test
    .message(display="none") I never even become code

Last updated