Amaze UI use 12 divisions responsive grid system. To use grid, add the .am-g
class to container and add .am-u-[sm|md|lg]-[1-12]
to columns. Then setting width for different screens. (u
represents unit
. we consulted naming in Pure CSS).
Responsive Breakpoints is listed below:
Class | Interval |
---|---|
am-u-sm-* | 0 - 640px |
am-u-md-* | 641px - 1024px |
am-u-lg-* | 1025px + |
Amaze UI follows the Mobile first concept. If grid for larger screen is not defined, setting will be inherited from smaller screens.
.doc-am-g
Class only for Demo. Don't use it in your page.In <table>
, tables are divided in to rows with <tr>
tag, and rows are divided into columns with <td>
tag. Grids work in the similar way:
.am-g
: Rows in the Grid;.am-u-xx-n
: Columns in the grid, where xx
is the size of viewport, and n
is the number of divisions the column takes. For example, replacing n
by 3
means this column takes 3 divisions, namely 1/4
of the row.Example 1:A Basic Grid
In the following example, there are two columns in the row. The first column takes 1/3
of the row, and the second one takes 2/3
. We only use .am-u-sm-n
here, so it will be applied to all screens.
<div class="am-g">
<div class="am-u-sm-4">4</div>
<div class="am-u-sm-8">8</div>
</div>
Example 2:Responsive Width
In this example, row will be responsively divided in different ratio on different screens. It's divided evenly in sm
interval, divided by 1:2
in md
interval, and divided by 1:3
in lg
interval.
<div class="am-g doc-am-g">
<div class="am-u-sm-6 am-u-md-4 am-u-lg-3">sm-6 md-4 lg-3</div>
<div class="am-u-sm-6 am-u-md-8 am-u-lg-9">sm-6 md-8 lg-9</div>
</div>
In Amaze UI, width of row is 100%
, and max width is not set, so it will scale according to the window.
You may want to give a max width to your rows. Then you can use .am-g-fixed
class to set the max width to 1000px
. You may also set your own max width.
CSS in source codes of Amaze UI:
.am-g {
margin: 0 auto;
width: 100%;
}
.am-g-fixed {
max-width: 1000px;
}
Example 3:Max Width of Grid (View)
Please view this example in a window with width larger than 1000px
.
<h2>Grid without Max Width</h2>
<div class="am-g">
<div class="am-u-sm-4">4</div>
<div class="am-u-sm-8">8</div>
</div>
<h2>Grid with Max Width</h2>
<div class="am-g am-g-fixed">
<div class="am-u-sm-4">4</div>
<div class="am-u-sm-8">8</div>
</div>
Unlike some other frameworks, grid in Amaze UI is not required to be put inside a container.
Some rows may need to be full width, we can make a full-width row with following HTML:
<div class="am-g am-g-fixed">
<div class="am-u-sm-12">全宽限制最大宽度的行</div>
</div>
This is fine, but a little bit redundant. It time to use container .am-container
:
.am-container
has the same padding
with grid columns, so there will be no problem using them together.
Example 4: Container
Grid with blue border is .am-container
.
<!--Only Container-->
<div class="am-container">
I'm in the .am-container.
</div>
<!--Grid with Fixed Width-->
<div class="am-g am-g-fixed">
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
</div>
<!--If you don't hate nesting, you can also do this-->
<div class="am-container">
<div class="am-g">
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
</div>
</div>
Styles of .am-container
:
.am-container {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin-left: auto;
margin-right: auto;
padding-left: 1rem;
padding-right: 1rem;
width: 100%;
max-width: 1000px;
}
@media only screen and (min-width:641px) {
.am-container {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
}
<div class="am-g am-g-fixed">
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
</div>
<div class="am-g am-g-fixed">
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
</div>
<div class="am-g am-g-fixed">
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
</div>
Or
<div class="am-g am-g-fixed">
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
</div>
Both styles are fine, but we recommand the first style because it's easier to control the style of each row.
We divided the grid with non-integer percentage, so the sum of width of all columns can possibly not be 100%, which results in the small gap on the right side of the grid, so we let the last column to flow right.
If the total division is smaller than 12
, the .am-u-end
class should be added to the last column.
Example 5:Grid with less than 12 divisions
<!-- 未添加 .am-u-end 的情形 -->
<div class="am-g">
<div class="am-u-sm-3">3</div>
<div class="am-u-sm-3">3</div>
<div class="am-u-sm-3">3</div>
</div>
<!-- 添加 .am-u-end 后 -->
<div class="am-g">
<div class="am-u-sm-3">3</div>
<div class="am-u-sm-3">3</div>
<div class="am-u-sm-3 am-u-end">3</div>
</div>
The basic usage of grid ends here
Amaze UI has some responsive utility classes, find more detail in Utillity Class。
Example 6: Use Responsive Utility classes to help show/hide the elements
Adjust browser window to check the responsive effect.
<div class="am-g">
<div class="am-u-sm-2 am-u-lg-4">
<span class="am-show-md-down">sm-2</span>
<span class="am-show-lg-only">lg-4</span>
</div>
<div class="am-u-sm-4 am-u-lg-4">sm4 lg4</div>
<div class="am-u-sm-6 am-u-lg-4">
<span class="am-show-md-down">sm-6</span>
<span class="am-show-lg-only">lg-4</span>
</div>
</div>
<div class="am-g">
<div class="am-u-lg-3">
<span class="am-show-md-down">sm-full</span>
<span class="am-show-lg-only">lg-3</span>
</div>
<div class="am-u-lg-6">
<span class="am-show-md-down">sm-full</span>
<span class="am-show-lg-only">lg-6</span>
</div>
<div class="am-u-lg-3">
<span class="am-show-md-down">sm-full</span>
<span class="am-show-lg-only">lg-3</span>
</div>
</div>
<div class="am-g">
<div class="am-u-sm-6 am-u-lg-2">
<span class="am-show-md-down">6</span>
<span class="am-hide-md-down">2</span>
</div>
<div class="am-u-sm-6 am-u-lg-8">
<span class="am-show-md-down">6</span>
<span class="am-hide-md-down">8</span>
</div>
<div class="am-u-sm-12 am-u-lg-2">
<span class="am-show-md-down">full</span>
<span class="am-hide-md-down">2</span>
</div>
</div>
<div class="am-g">
<div class="am-u-sm-3">3</div>
<div class="am-u-sm-9">9</div>
</div>
<div class="am-g">
<div class="am-u-lg-4">
<span class="am-show-md-down">full</span>
<span class="am-hide-md-down">4</span>
</div>
<div class="am-u-lg-8">
<span class="am-show-md-down">full</span>
<span class="am-hide-md-down">8</span>
</div>
</div>
<div class="am-g">
<div class="am-u-sm-6 am-u-lg-5">
<span class="am-show-md-down">6</span>
<span class="am-hide-md-down">5</span>
</div>
<div class="am-u-sm-6 am-u-lg-7">
<span class="am-show-md-down">6</span>
<span class="am-hide-md-down">7</span>
</div>
</div>
<div class="am-g">
<div class="am-u-lg-6">
<span class="am-show-md-down">full</span>
<span class="am-hide-md-down">6</span>
</div>
<div class="am-u-lg-6">
<span class="am-show-md-down">full</span>
<span class="am-hide-md-down">6</span>
</div>
</div>
Add am-u-sm-offset-*
, am-u-md-offset-*
or am-u-lg-offset-*
classes to set the offsetting.
Example 7: Column Offsetting
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-11">11</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-10 am-u-sm-offset-1">10, offset 1</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-9 am-u-sm-offset-2">9, offset 2</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-8 am-u-sm-offset-3">8, offset 3</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-7 am-u-sm-offset-4">7, offset 4</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-6 am-u-sm-offset-5">6, offset 5</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-5 am-u-sm-offset-6">5, offset 6</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-4 am-u-sm-offset-7">4, offset 7</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-3 am-u-sm-offset-8">3, offset 8</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-2 am-u-sm-offset-9">2, offset 9</div>
</div>
<div class="am-g">
<div class="am-u-sm-1">1</div>
<div class="am-u-sm-1 am-u-sm-offset-10">1, offset 10</div>
</div>
Add the .am-u-xx-centered
class to center a row:
.am-u-sm-centered
to center the row on all devices;.am-u-xx-uncentered
to uncenter the row in some interval.Example 8:Center
<!-- .am-u-sm-centered 始终居中 -->
<div class="am-g">
<div class="am-u-sm-3 am-u-sm-centered">3 centered</div>
</div>
<!-- .am-u-lg-centered 大于 1024 时居中 -->
<div class="am-g">
<div class="am-u-sm-6 am-u-lg-centered">6 centered</div>
</div>
<!-- 大于 1024 时不居中 -->
<div class="am-g">
<div class="am-u-sm-9 am-u-sm-centered am-u-lg-uncentered">9 md-down-centered </div>
</div>
<!-- 始终居中 -->
<div class="am-g">
<div class="am-u-sm-11 am-u-sm-centered">11 centered</div>
</div>
In consider of the SEO, we sometimes need the HTML to be different from its display. For instance, in a layout with main content and sidebar, the sidebar should follows the main content, while we need the sidebar to be on the left when display. We can use .am-u-xx-push-*
/.am-u-xx-pull-*
to do this.
Example 9:Difference Between HTML and Display
Adjust the browser to check effect.
<!--
Using push/pull to push main to the right and pull the sidebar to the left.
reset the order in large interval
-->
<div class="am-g">
<div class="am-u-md-8 am-u-md-push-4 am-u-lg-reset-order">8 main</div>
<div class="am-u-md-4 am-u-md-pull-8 am-u-lg-reset-order">4 sidebar</div>
</div>
Some users told us that the padding is too large for them, so we made the .am-g-collapse
class to remove the padding in the columns.
Example 10: Columns without Padding
Add the .am-g-collapse
class to .am-g
to remove padding
.
<div class="am-g am-g-collapse">
<div class="am-u-sm-6">.am-u-sm-6</div>
<div class="am-u-sm-6">.am-u-sm-6</div>
</div>