Fork me on GitHub

_objects.layout.scss

Source code

View source

Package Name

inuit-layout

Version

0.3.2

The layout object is the basic grid system. It is used alongside with trumps.widths and trumps.widths-responsive.

As Inuit.css grids are positioned using display: inline-block;, you must strip whitespace from between .layout__item elements to get the grids to properly line up.
Or use one of these solutions:

https://css-tricks.com/fighting-the-space-between-inline-block-elements

I personally use this solution:

        layout {
            letter-spacing: -.325rem;
            // -------
            // Element
            // -------
            &__item {
                letter-spacing: normal;
            }
        
        <div class="layout">
            <div class="layout__item   u-1/3">
                Foo
            </div>
            <div class="layout__item  u-1/3">
                Bar
            </div>
            <div class="layout__item  u-1/3">
                Baz
            </div>
        </div>
        
.layout

1/3

1/3

1/3

see HTML code
<div class="layout">
                <div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div>
            </div>
            

.layout--tiny

1/3

1/3

1/3

see HTML code
<div class=" layout  layout--tiny ">
                <div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div>
            </div>
            

.layout--small

1/3

1/3

1/3

see HTML code
<div class=" layout  layout--small ">
                <div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div>
            </div>
            

.layout--large

1/3

1/3

1/3

see HTML code
<div class=" layout  layout--large ">
                <div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div>
            </div>
            

.layout--huge

1/3

1/3

1/3

see HTML code
<div class=" layout  layout--huge ">
                <div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div>
            </div>
            

.layout--flush

1/3

1/3

1/3

see HTML code
<div class=" layout  layout--flush ">
                <div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>1/3</p>
                </div>
            </div>
            

.layout--rev

1

2

3

see HTML code
<div class=" layout  layout--rev ">
                <div class=" layout__item  u-1/3 ">
                    <p>1</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>2</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>3</p>
                </div>
            </div>
            

.layout--middle

Foo
Bar
Baz

Bar

Baz

see HTML code
<div class=" layout  layout--middle ">
                <div class=" layout__item  u-1/3 ">
                    <p>Foo <br> Bar <br> Baz</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>Bar</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>Baz</p>
                </div>
            </div>
            

.layout--bottom

Foo
Bar
Baz

Bar

Baz

see HTML code
<div class=" layout  layout--bottom ">
                <div class=" layout__item  u-1/3 ">
                    <p>Foo <br> Bar <br> Baz</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>Bar</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>Baz</p>
                </div>
            </div>
            

.layout--right

Foo

Bar

see HTML code
<div class=" layout  layout--right ">
                <div class=" layout__item  u-1/3 ">
                    <p>Foo</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>Bar</p>
                </div>
            </div>
            

.layout--center

Foo

Bar

see HTML code
<div class=" layout  layout--center ">
                <div class=" layout__item  u-1/3 ">
                    <p>Foo</p>
                </div><!--
                --><div class=" layout__item  u-1/3 ">
                    <p>Bar</p>
                </div>
            </div>
            

.layout--auto

Foo

Bar

Baz

see HTML code
<div class=" layout  layout--auto ">
                <div class=" layout__item ">
                    <p>Foo</p>
                </div><!--
                --><div class=" layout__item ">
                    <p>Bar</p>
                </div><!--
                --><div class=" layout__item ">
                    <p>Baz</p>
                </div>
            </div>
            

The layout object provides the following modifiers:

  • .layout--tiny
  • .layout--small
  • .layout--large
  • .layout--huge
  • .layout--flush
  • .layout--rev
  • .layout--middle
  • .layout--bottom
  • .layout--right
  • .layout--center
  • .layout--auto

.layout--tiny, .layout--small, .layout--large, .layout--huge all vary the spacing between the layout-items. Each one has its own dedicated variable to control that spacing:

          $inuit-layout-gutter--tiny:       quarter($inuit-layout-gutter) !default;
          $inuit-layout-gutter--small:        halve($inuit-layout-gutter) !default;
          $inuit-layout-gutter--large:       double($inuit-layout-gutter) !default;
          $inuit-layout-gutter--huge:     quadruple($inuit-layout-gutter) !default;
          

.layout--flush will eliminate the spacing completely.

.layout--rev reverses the order of the layout-items.

.layout--middle aligns the layout-items vertically.

.layout--bottom aligns the layout-items on the bottom.

.layout--right makes the layout-items fill up the .layout container from the right. This just makes sense if a .layout row is not full-width, e.g.:

          <div class="layout  layout--right">
              <div class="layout__item  u-1/3">
                  Foo
              </div>
              <div class="layout__item  u-1/3">
                  Bar
              </div>
          </div>
          

.layout--center makes the layout-items fill up the .layout container from the center outward. This also just makes sense if a .layout row is not full-width as above. (Check demo for clarification).

.layout--auto causes the layout-items to take up a non-explicit amount of width. It is critical not to assign a width-class here!

          <div class="layout  layout--auto">
              <div class="layout__item">
                  Foo
              </div>
              <div class="layout__item">
                  Bar
              </div>
              <div class="layout__item">
                  Baz
              </div>
          </div>
          
                // Predefine the variables below in order to alter and enable specific features.
                $inuit-layout-namespace:        $inuit-namespace !default;
                
                $inuit-layout-gutter:           $inuit-base-spacing-unit !default;
                $inuit-layout-gutter--tiny:       quarter($inuit-layout-gutter) !default;
                $inuit-layout-gutter--small:        halve($inuit-layout-gutter) !default;
                $inuit-layout-gutter--large:       double($inuit-layout-gutter) !default;
                $inuit-layout-gutter--huge:     quadruple($inuit-layout-gutter) !default;
                
                $inuit-enable-layout--tiny:     false !default;
                $inuit-enable-layout--small:    false !default;
                $inuit-enable-layout--large:    false !default;
                $inuit-enable-layout--huge:     false !default;
                $inuit-enable-layout--flush:    false !default;
                $inuit-enable-layout--rev:      false !default;
                $inuit-enable-layout--middle:   false !default;
                $inuit-enable-layout--bottom:   false !default;
                $inuit-enable-layout--right:    false !default;
                $inuit-enable-layout--center:   false !default;
                $inuit-enable-layout--auto:     false !default;
                
                // Here we set a variable assuming that `box-sizing: border-box;` is not set
                // globally. If it has been previously been defined, the following variable will
                // be overriden and will be set to `true`.
                $inuit-global-border-box: false !default;