CSSGrid: Difference between revisions
(17 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
== Description == | == Description == | ||
The | The CSSGrid control provides a grid-based layout system, with rows and columns, making it easier to design web pages without having to use floats and positioning. | ||
While regular controls (such as Buttons and Labels) can be added directly to a CSSGrid, there is a special control called [[CSSGridItem]] which is used to define sections within the Grid. CSSGridItems can be combined to make irregular sections in the CSSGrid. In the above example, the top row of the CSSGrid has been merged into a single control called Header. | While regular controls (such as Buttons and Labels) can be added directly to a CSSGrid, there is a special control called [[CSSGridItem]] which is used to define sections within the Grid. CSSGridItems can be combined to make irregular sections in the CSSGrid. In the above example, the top row of the CSSGrid has been merged into a single control called Header. | ||
Line 11: | Line 11: | ||
CSSGrids can contain other CSSGrids. | CSSGrids can contain other CSSGrids. | ||
To add a CSSGrid control to your app, choose the CSSGrid icon in the | To add a CSSGrid control to your app, choose the CSSGrid icon in the Toolbox, then position it on the Design Screen. Use the Property Editor to set the properties you need. Right click in the CSSGrid to add children. | ||
At runtime, controls can be added as children to the CSSGrid or CSSGridItems using the addChild() function: <code>CSSGrid.addChild(Button1)</code>. | At runtime, controls can be added as children to the CSSGrid or CSSGridItems using the addChild() function: <code>CSSGrid.addChild(Button1)</code>. | ||
Here are some useful resources for learning more about using | Here are some useful resources for learning more about using CSSGrid: | ||
* https://www.w3schools.com/css/css_grid.asp | * https://www.w3schools.com/css/css_grid.asp | ||
* https://css-tricks.com/snippets/css/complete-guide-grid/ | * https://css-tricks.com/snippets/css/complete-guide-grid/ | ||
* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout | * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout | ||
===== NOTE ===== | |||
The CSSGrid will not appear properly in the Design Screen of AppStudio on Windows. The Design Screen uses IE11 to render images: IE11 does not handle the CSSGrid properly. If you run your app in Chrome, it will render properly. MacOS is fine. | |||
=== alignContent and justifyContent === | === alignContent and justifyContent === | ||
Line 25: | Line 28: | ||
[[File:CSSGrid2.png|frameless|666px]] | [[File:CSSGrid2.png|frameless|666px]] | ||
The alignContent and justifyContent properties define how the CSSGrid will look. | The alignContent and justifyContent properties define how the CSSGrid will look. Both have the same possible values. | ||
To see their effect, run the CSSGrid sample which comes with AppStudio. It has Select boxes which let you play with both settings so you can see the effect. | |||
{| class="wikitable" | {| class="wikitable" | ||
| start || The items are packed flush to each other toward the start edge of the alignment container in the cross axis | | start || The items are packed flush to each other toward the start edge of the alignment container in the cross axis | ||
|- | |- | ||
| end || | | end || Aligns the grid to be flush with the end edge of the grid container. | ||
|- | |- | ||
| center || The items are packed flush to each other toward the center of the alignment container along the cross axis. | | center || The items are packed flush to each other toward the center of the alignment container along the cross axis. | ||
Line 41: | Line 43: | ||
| space-around || The empty space before the first and after the last item equals half of the space between each pair of adjacent items. | | space-around || The empty space before the first and after the last item equals half of the space between each pair of adjacent items. | ||
|- | |- | ||
| space-between || | | space-between || Place an even amount of space between each grid item, with no space at the far ends. | ||
|- | |- | ||
| space-evenly || | | space-evenly || Place an even amount of space between each grid item, including the far ends. | ||
|} | |} | ||
== Properties == | == Properties == | ||
=== | === CSSGrid Properties === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| alignContent || | | alignContent || The align-content property is used to align the whole grid vertically inside the container. See above for options. | ||
|- | |- | ||
| | | gridTemplateColumns || Defines the line names and track sizing functions of the grid columns.<br> | ||
example: auto auto auto | |||
|- | |- | ||
| | | gridTemplateRows || Defines the line names and track sizing functions of the grid rows.<br> | ||
example: auto auto auto | |||
|- | |- | ||
| | | gridTemplateAreas || Specifies named grid areas. Each line of the grid has a list of area names. The line are grouped by single quote signs. example:<br> | ||
'header header header header header header' 'menu main main main right right' 'menu footer footer footer footer footer' | |||
''' | |||
|- | |- | ||
| | | gridColumnGap || Sets the size of the gap between an element's columns. Can be 'normal', px, %, etc. | ||
'' | |- | ||
| gridRowGap || Sets the size of the gap between an element's rows. Can be 'normal', px, %, etc. | |||
|} | |} | ||
Line 123: | Line 82: | ||
|- | |- | ||
| content || The text to use in between the HTML tags. Can be text or HTML. Design time. At runtime, use .innerHTML. | | content || The text to use in between the HTML tags. Can be text or HTML. Design time. At runtime, use .innerHTML. | ||
|- | |- | ||
| innerHTML || The text to use in between the HTML tags. Can be text or HTML. Run time. At Design Time,, use content. | | innerHTML || The text to use in between the HTML tags. Can be text or HTML. Run time. At Design Time,, use content. | ||
|- | |- | ||
| position || How children positioned. Default is 'relative': elements are positioned relative to each other and the size of the | | position || How children positioned. Default is 'relative': elements are positioned relative to each other and the size of the CSSGrid. With 'absolute', controls are positioned within the CSSGrid set by width and height. Other options are 'fixed' and 'static'. Design time. | ||
|- | |- | ||
| style || A list of [[style]] properties, each in the form styleName:value; Example: "height:40px; width:100px".Design time. | | style || A list of [[style]] properties, each in the form styleName:value; Example: "height:40px; width:100px".Design time. | ||
Line 138: | Line 95: | ||
== Examples == | == Examples == | ||
[[Category:Language Reference]] | [[Category:Language Reference]] | ||
[[Category:Controls]] | [[Category:Controls]] | ||
[[Category:Common]] | |||
[[Category:General]] | [[Category:General]] |
Latest revision as of 12:51, 28 November 2019
Description
The CSSGrid control provides a grid-based layout system, with rows and columns, making it easier to design web pages without having to use floats and positioning.
While regular controls (such as Buttons and Labels) can be added directly to a CSSGrid, there is a special control called CSSGridItem which is used to define sections within the Grid. CSSGridItems can be combined to make irregular sections in the CSSGrid. In the above example, the top row of the CSSGrid has been merged into a single control called Header.
The CSSGrid control can be used as a wrapper for other controls you have set up in your project. Add them to the Design Screen as usual, then right click in a CSSGrid and use Add Child. The control will then move into the CSSGrid. If you reposition the CSSGrid, the included controls ("children") will move with it. Use right click Remove Child to take a child out of a CSSGrid.
CSSGrids can contain other CSSGrids.
To add a CSSGrid control to your app, choose the CSSGrid icon in the Toolbox, then position it on the Design Screen. Use the Property Editor to set the properties you need. Right click in the CSSGrid to add children.
At runtime, controls can be added as children to the CSSGrid or CSSGridItems using the addChild() function: CSSGrid.addChild(Button1)
.
Here are some useful resources for learning more about using CSSGrid:
- https://www.w3schools.com/css/css_grid.asp
- https://css-tricks.com/snippets/css/complete-guide-grid/
- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout
NOTE
The CSSGrid will not appear properly in the Design Screen of AppStudio on Windows. The Design Screen uses IE11 to render images: IE11 does not handle the CSSGrid properly. If you run your app in Chrome, it will render properly. MacOS is fine.
alignContent and justifyContent
The alignContent and justifyContent properties define how the CSSGrid will look. Both have the same possible values.
To see their effect, run the CSSGrid sample which comes with AppStudio. It has Select boxes which let you play with both settings so you can see the effect.
start | The items are packed flush to each other toward the start edge of the alignment container in the cross axis |
end | Aligns the grid to be flush with the end edge of the grid container. |
center | The items are packed flush to each other toward the center of the alignment container along the cross axis. |
stretch | The items are shown so that the combined size exactly fills the alignment container along the cross axis. |
space-around | The empty space before the first and after the last item equals half of the space between each pair of adjacent items. |
space-between | Place an even amount of space between each grid item, with no space at the far ends. |
space-evenly | Place an even amount of space between each grid item, including the far ends. |
Properties
CSSGrid Properties
alignContent | The align-content property is used to align the whole grid vertically inside the container. See above for options. |
gridTemplateColumns | Defines the line names and track sizing functions of the grid columns. example: auto auto auto |
gridTemplateRows | Defines the line names and track sizing functions of the grid rows. example: auto auto auto |
gridTemplateAreas | Specifies named grid areas. Each line of the grid has a list of area names. The line are grouped by single quote signs. example: 'header header header header header header' 'menu main main main right right' 'menu footer footer footer footer footer' |
gridColumnGap | Sets the size of the gap between an element's columns. Can be 'normal', px, %, etc. |
gridRowGap | Sets the size of the gap between an element's rows. Can be 'normal', px, %, etc. |
Other Properties
Standard properties are supported, plus:
addChild(control) | control is added to the Control. Runtime. |
attributes | A list of HTML attributes. To prevent jQuery Mobile from styling the element, use data-role=none. Attributes are separated by spaces. Design time. |
center | Centers the contents, horizontally and vertically. Only works if HTMLTag is 'div'. |
class | List of CSS classes to apply to the element. Class names are separated by spaces. Design time. |
content | The text to use in between the HTML tags. Can be text or HTML. Design time. At runtime, use .innerHTML. |
innerHTML | The text to use in between the HTML tags. Can be text or HTML. Run time. At Design Time,, use content. |
position | How children positioned. Default is 'relative': elements are positioned relative to each other and the size of the CSSGrid. With 'absolute', controls are positioned within the CSSGrid set by width and height. Other options are 'fixed' and 'static'. Design time. |
style | A list of style properties, each in the form styleName:value; Example: "height:40px; width:100px".Design time. |
Events
Standard events are supported.