--- nav-title: "flexbox-layout How-To" title: "flexbox-layout" environment: nativescript description: "Examples for using flexbox-layout" --- # FlexboxLayout Using a FlexboxLayout requires the FlexboxLayout module. {%snippet flexbox-layout-require%} Using the flexbox layout in the NativeScript framework requires the FlexboxLayout view with children. The FlexboxLayout will automatically serve as if it were a *div* with `{ display: flex; }`. [Here is a good guide on using flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/). The FlexboxLayout implementation is based on existing Apache-2 licensed flexbox implementation hosted on [github.com/google/flexbox-layout](https://github.com/google/flexbox-layout). ## Properties The flexbox properties supported at the moment can be set in JavaScript, the NativeScript markup or in CSS. The supported properties on the FlexboxLayout container are: - ~~**display:**~~ This works as if set to `flex` by default on the *FlexboxLayout* - **flex-direction:** - Set in CSS using `style="flex-direction: row;"` - Set in JavaScript using the property - `fb.flexDirection = FlexDirection.ROW` - Set in XML using the attribute - `` - **flex-wrap:** - Set in CSS using `style="flex-wrap: wrap;"` - Set in JavaScript using the property - `fb.flexWrap = FlexWrap` - Set in XML using the attribute - `` - **flex-flow:** - Set in CSS using `style="flex-flow: row wrap;"` - The shorthand property has no alternative in JavaScript or in the markup - **justify-content:** - Set in CSS using `style="justify-content: space-between;"` - Set in JavaScript using the property - `fb.justifyContent = JustifyContent.SPACE_BETWEEN` - Set in XML using the attribute - `` - **align-items:** - Set in CSS using `style="align-items: stretch;"` - Set in JavaScript using the property - `fb.alignItems = AlignItems.STRETCH` - Set in XML using the attribute - `` - **align-content:** - Set in CSS using `style="align-content: space-between;"` - Set in JavaScript using the property - `fb.alignContent = AlignContent.SPACE_BETWEEN` - Set in XML using the attribute - `` > **NOTE:** There is a limitation for `align-items` in **iOS**, the `baseline` option can **not** be used. The supported flexbox properties on child elements are as follow: - **order:** - Set in CSS using `style="order: 1;"` - Set in JavaScript using the method `flexbox.FlexboxLayout.setOrder(child, 1)` - Set in XML using the attribute `order="1"` - **flex-grow:** - Set in CSS using `style="flex-grow: 1;"` - Set in JavaScript using the method `flexbox.FlexboxLayout.setFlexGrow(child, 1)` - Set in XML using the attribute `flexGrow="1"` - **flex-shrink:** - Set in CSS using `style="flex-shrink: 1;"` - Set in JavaScript using the method `flexbox.FlexboxLayout.setFlexShrink(child, 1)` - Set in XML using the attribute `flexShrink="1"` - ~~**flex-basis:**~~ The NativeScript layout supports setting width or height as fixed values or percent, use them instead - **flex:** - Set in CSS using `style="flex: 1 1;"` - The shorthand property has no alternative in JavaScript or markup, set the `flex-grow`, `flex-shrink`, `width` or `height` instead - **align-self:** - Set in JavaScript using the method `flexbox.FlexboxLayout.setAlignSelf(child, AlignSelf.STRETCH)` - Set in XML using the attribute `