A modular web framework
with mobile in mind

Row Low is a dead simple modular web framework based on SCSS. What has started as a personal toolkit for fast web development finally became an open source project available to use and contribute for everyone. Row Low is equipped with everything you need to build and structure the layout of responsive websites but is not a UI framework.

Modular

Every component is shipped as a separate bower package. It is totally up to you which components you want to include with full control on the size of your project.

Customizeable

Almost everything in Row Low is configurable. You have full control on namespaces, column layouts, breakpoints and aspect ratios to name a few.

BEM-Syntax

Keeping things clear, Row Low was built following the approach of BEM-Syntax. This self explanatory naming scheme makes working with Row Low simple and future proof.

Open Source

Row Low is released under MIT Licence and avialable on Github. Feel free to fork it on GitHub.

Fork on GitHub

Getting started: rowlow.resources.kickstarter

Giving you a quick start into Row Low, kickstarter is the perfect an initial setup for your project with all Row Low components. Row Low works perfectly with Normalize.css and therefore it is additionally included into kickstarter.

Requirements

Working with Row Low's Kickstarter requires a small and easy to use technology stack and at least some knowledge in how to use it.

  • Node Package Manager
  • Bower
  • Gulp

Install

  1. Download/Clone the latest release of rowlow.resources.kickstarter
  2. Install nodeJS/ on your computer
  3. Install bower packages
    $ bower install
  4. Install node packages
    $ npm install
  5. Install and run gulp to build your project
    $ npm install --global gulp
    $ gulp

Folder Structure

    dist
    |`- assets
    |   `- css
    |   |   `- styles.min.js
    |   `- fonts
    |   `- img
    |   `- js
    |       `- plugins.min.js
    |       `- scripts.min.js
    |       `- vendor.min.js
    |`- index.html
    |
    src
    |`- assets
    |   `- fonts
    |   `- img
    |   `- js
    |   |   `- plugins
    |   |   `- scripts
    |   |   |   `- main.js
    |   |   `- plugins.js
    |   |   `- scripts.js
    |   |   `- vendor.js
    |   `- sass
    |       `- generic
    |       `- specific
    |       `- settings.scss
    |       `- styles.scss
    |`- index.html
    |
    bower.js
    |
    gulpfile.js
    |
    package.js

gulp is used to build everything that is located in the src directory and move it to dist.

You don't have to follow the rules on how to split up your javascript and scss files. If you change this, please don't forget to edit your gulpfile.


rowlow.layout.grid

The grid module of Row Low is probably one of the most powerful and complex modules in this framework. Basically it helps you build nice responsive grid layouts, but additionally it provides you tools to shift and offset columns plus to add the right gutter to your grid.

The grid is strongly connected with the breakpoints you've configured in the rowlow.utils.breakpoints module. Not only the name of your breakpoints, but also the total number of breakpoitns an their value will affect your responsive grid.

Additionally Row Low gives you the possibility to not just use one grid layout at a time, you are able to run a 10-column-based layout in parallel to a 12-column-based layout if your project requires this.

But please be careful. With every breakpoint and column-layout you add, you multiply the CSS selectors that will be generated by this module.

Install

bower install --save rowlow.layout.responsive-grid

Settings


$rowlow-grid-namespace: "";             // Specific module namespace
$rowlow-grid-columns:   12;             // List of columns for your layout
$rowlow-grid-gutter:    20;             // The gutter width

Usage

Rows & Columns

CSS Selector Naming Scheme

.{rowlow-grid-namespace}column--{breakpoint-name}--{column}of{total-columns}

Usage


<div class="row">
   	<div class="column--m--6of12 column--l--4of12">

    </div>
    <div class="column--m--6of12 column--l--4of12">

    </div>
</div>

Column Offset

CSS Selector Naming Scheme

.{rowlow-grid-namespace}column-offset--{breakpoint-name}--{column}of{total-columns}

Usage


<div class="row">
    <div class="column--m--4of12 column-offset--m--4of12"></div>
</div>

Column Shifting

CSS Selector Naming Scheme


.{rowlow-grid-namespace}column-push--{breakpoint-name}--{column}of{total-columns}
.{rowlow-grid-namespace}column-pull--{breakpoint-name}--{column}of{total-columns}

Usage


<div class="row">
    <div class="column--m--4of12 column-push--m--4of12"></div>
    <div class="column--m--4of12 column-pull--m--4of12"></div>
    <div class="column--m--4of12"></div>
</div>

Column Gutter

CSS Selector Naming Scheme


.gutter--{breakpoint-name}--{gutter-multiplier}
.gutter-top--{breakpoint-name}--{gutter-multiplier}
.gutter-right--{breakpoint-name}--{gutter-multiplier}
.gutter-bottom--{breakpoint-name}--{gutter-multiplier}
.gutter-left--{breakpoint-name}--{gutter-multiplier}
.gutter-vertical--{breakpoint-name}--{gutter-multiplier}
.gutter-horizontal--{breakpoint-name}--{gutter-multiplier}

Usage


<div class="row">
    <div class="column--m--6of12">
        <div class="gutter--s--2 gutter--m--1"></div>
    </div>
    <div class="column--m--6of12">
        <div class="gutter-top--s--2 gutter-top--m--1"></div>
    </div>
    <div class="column--m--6of12">
        <div class="gutter-right--s--2 gutter-right--m--1"></div>
    </div>
    <div class="column--m--6of12">
        <div class="gutter-bottom--s--2 gutter-bottom--m--1"></div>
    </div>
    <div class="column--m--6of12">
        <div class="gutter-left--s--2 gutter-left--m--1"></div>
    </div>
    <div class="column--m--6of12">
        <div class="gutter-vertical--s--2 gutter-vertical--m--1"></div>
    </div>
    <div class="column--m--6of12">
        <div class="gutter-horizontal--s--2 gutter-horizontal--m--1"></div>
    </div>
</div>

Examples

Basic Grid

three of twelve
three of twelve
three of twelve
three of twelve
five of ten
five of ten
four of twelve
eight of twelve

Nested Grid

one
one:one
one:two
two
two:one
two:two
two:three

Shift Columns

one (was pushed)
two (was pulled)
three

Offset Columns

one
two (was offset)

rowlow.layout.horizontal-align

This module adds CSS selectors in order to align block or inline-block elements in HTML

Install

bower install --save rowlow.layout.horizontal-align

Variables

$rowlow-horizontal-align-namespace // Specific module namespace

Usage

Setup


/* Set modules namespace (optional) */
$rowlow-horizontal-align-namespace: "namespace-";

@import "bower_components/rowlow.layout.horizontal-align/main.scss"

CSS Selector Naming Scheme


.{rowlow-horizontal-align-namespace}horizontal-align--{breakpoint}--{left, center, right}

HTML

<div class="horizontal-align--s--center horizontal-align--m--left"></div>

Examples

left
center
right

rowlow.layout.layer-group

This module can eaily be used to create overlays or layerstacks in HTML.

Install

bower install --save rowlow.layout.layer-group

Variables

$rowlow-layer-group-namespace // Specific module namespace

Usage

Setup


/* Set modules namespace (optional) */
$rowlow-layer-group-namespace: "namespace-";

@import "bower_components/rowlow.layout.layer-group/main.scss"

HTML


<div class="layer-group">
    <img src="http://placehold.it/840x560" alt=""/>
    <div class="layer">[...]</div>
    <div class="layer">[...]</div>
    [...]
</div>

Examples

Layer 0
Layer 1

rowlow.layout.ratio-container

A module for creating DOM container with a defined aspect ratio. Preconfigured ratios are 1by1, 4by3, 16by9 and 21by9, but can be extended upon your needs.

Install

bower install --save rowlow.layout.ratio-container

Settings

rowlow-ratio-container-namespace // Specific module namespace
    rowlow-ratios // List of ratios

Usage

SCSS

/* Set modules namespace (optional) */
$rowlow-ratio-container-namespace: "namespace-";

/* Overwrite ratio list (optional) */
$rowlow-ratios: (
    (1,1),
    (4,3),
    (16,9),
    (21,9)
)

@import "bower_components/rowlow.layout.ratio-container/main.scss"

HTML

<div class="ratio-container--s--21by9 ratio-container--l--16by9"></div> 

Examples

1 by 1
4 by 3
16 by 9
21 by 9

rowlow.layout.vertical-align

This module adds functionality to vertical align not just inline or table elements. A vertical align wrapper in combinations with the rowlow.layout.layer-groupmodule helps you to vertically align things with an unknown height.

You can take control of the vertical alignment for any responsive breakpoint separately.

Install

bower install --save rowlow.layout.vertical-align

Variables

$rowlow-vertical-align-namespace // Specific module namespace

Usage

Setup

/* Set modules namespace (optional) */
$rowlow-vertical-align-namespace: "namespace-";

@import "bower_components/rowlow.layout.vertical-align/main.scss"

CSS Selector Naming Scheme


.{rowlow-vertical-align-namespace}vertical-align--{breakpoint}--{top, middle, bottom}
.{rowlow-vertical-align-namespace}vertical-align-helper

HTML

<table>
    <tr>
        <td class="vertical-align--s--top"></td>
        <td class="vertical-align--s--middle"></td>
        <td class="vertical-align--s--bottom"></td>
    </tr>
</table>

<div class="vertical-align-helper" style="height: 200px">
    <div class="vertical-align--s--middle">
        [...]
    </div>
</div>

Examples

Top Middle Bottom
Top
Middle
Bottom

rowlow.media.image

A module for displaying responsive images

Install

bower install --save rowlow.media.image

Settings

rowlow-image-namespace // Specific module namespace

Usage

HTML

<img src="" alt="" class="responsive"/>

Example


rowlow.motion.easing

A easing module with loads of easing functions for Row Low framework

Install

bower install --save rowlow.motion.easing

Functions

rowlow-ease() // Returns the easing function by a given name

Usage

SCSS

a:hover{
    transition: all .1s rowlow-ease("in-out-quad") .2s;
}

Easing Functions


linear
ease
in
out
in-out
in-sine
out-sine
in-out-sine 
in-quad
out-quad
in-out-quad
in-cubic  
out-cubic 
in-out-cubic
in-quart 
out-quart  
in-out-quart 
in-quint
out-quint  
in-out-quint
in-expo
out-expo 
in-out-expo 
in-circ
out-circ
in-out-circ
in-back"
out-back 
in-out-back

rowlow.settings.default

Row Low default settings hold important generic settings that can be overwritten depending on your needs.

$rowlow-namespace

Row Low's mixins, variables and functions are prefixed with rowlow- per se. Generated CSS selectors however, are not prefixed by default. In order to change this behavior, you can define a generic namespace that will be prefixed to any CSS selector using $rowlow-namespace. Additionally, every Row Low module that is generating CSS selectors will have a additional variable to set a specific namespace. By default this specific namespace is equal to the generic namespace. Please look up the module's documentation for more details.

Usage

$rowlow-namespace: "rowlow-";

rowlow.type.font-face

A font-face wrapper to quickly define custom fonts for Row Low framework

Install

bower install --save rowlow.type.font-face

Functions

/**
 * $font-name Name of the font-family
 * $class-name The name of the class that will be generated
**/
rowlow-font-face($font-name, $class-name, $file, $fallback: sans-serif, $weight: normal, $style: normal)

Usage

SCSS

/* Set modules namespace (optional) */
$rowlow-font-face-namespace: "namespace-";

@import "bower_components/rowlow.type.font-face/main.scss"

@include rowlow-font-face('Futura Medium', 'futura-medium', '../fonts/futura-medium/futura-medium');

/* preferred method */
h1{
    @extend .font-face--futura-medium;
}

/* alternate method */
h1{
    font-family: "Futura Medium", sans-serif
}

HTML

<h1 class="font-face--futura-medium">This is Futura</h1>

rowlow.type.text-align

This text util helps you to fully control text aligns amog all responsive breakpoints.

Install

bower install --save rowlow.type.text-align

Variables

$rowlow-text-align-namespace // Specific module namespace

Usage

Setup

/* Set modules namespace (optional) */
    $rowlow-text-align-namespace: "namespace-";

    @import "bower_components/rowlow.type.text-align/main.scss"

CSS Selector Naming Scheme

{rowlow-text-align-namespace}text-align--{breakpoint-name}--{left, right, center, justify}

HTML

<p class="text-align--s--center text-align--m--right"></p>

Examples

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam asperiores eligendi soluta maiores officia, sequi, tempore ipsa. Sint, exercitationem, perferendis. Temporibus id eius natus sapiente quas cum rem nihil distinctio.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam asperiores eligendi soluta maiores officia, sequi, tempore ipsa. Sint, exercitationem, perferendis. Temporibus id eius natus sapiente quas cum rem nihil distinctio.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam asperiores eligendi soluta maiores officia, sequi, tempore ipsa. Sint, exercitationem, perferendis. Temporibus id eius natus sapiente quas cum rem nihil distinctio.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam asperiores eligendi soluta maiores officia, sequi, tempore ipsa. Sint, exercitationem, perferendis. Temporibus id eius natus sapiente quas cum rem nihil distinctio.


rowlow.type.text-transform

A little util to take control over text transforms via CSS selectors

Install

    bower install --save rowlow.type.text-transform

Variables

    $rowlow-text-transform-namespace // Specific module namespace

Usage

Setup

    /* Set modules namespace (optional) */
    $rowlow-text-transform-namespace: "namespace-";

    @import "bower_components/rowlow.type.text-transform/main.scss"

HTML

    <h1 class="text-transform--uppercase"></h1>
    <h1 class="text-transform--lowercase"></h1>
    <h1 class="text-transform--none"></h1>

Examples

Hamburgefontensiv

Hamburgefontensiv

Hamburgefontensiv


rowlow.type.text-decoration

A text util to take control over text decorations via CSS selectors

Install

bower install --save rowlow.type.text-decoration

Variables

$rowlow-text-decoration-namespace // Specific module namespace

Usage

Setup

/* Set modules namespace (optional) */
$rowlow-text-decoration-namespace: "namespace-";

@import "bower_components/rowlow.type.text-decoration/main.scss"

HTML

<h1 class="text-decoration--underline"></h1>
<h1 class="text-decoration--overline"></h1>
<h1 class="text-decoration--line-through"></h1>
<h1 class="text-decoration--none"></h1>

Examples

Hamburgefontensiv

Hamburgefontensiv

Hamburgefontensiv

Hamburgefontensiv


rowlow.type.text-spacing

A little util to take control over text spacing via CSS selectors

Install

bower install --save rowlow.type.text-spacing

Variables

$rowlow-text-spacing-namespace // Specific module namespace

Usage

Setup

/* Set modules namespace (optional) */
$rowlow-text-spacing-namespace: "namespace-";

@import "bower_components/rowlow.type.text-spacing/main.scss"

HTML

<h1 class="text-spacing--subtitled"></h1>
<h1 class="text-transform--line-collapse"></h1>

Examples

Hamburgefontensiv

This is the subtitle

Hamburgefontensiv
Hamburgefontensiv


rowlow.utils.breakpoints

Defining a map of breakpoint names and value pairs, this module generates will help you maintain responsive breakpoints for your project. By default, this module will give you breakpoints at 1px, 768px, 992px and 1200px.

Install

bower install --save rowlow.utils.breakpoints

Variables

$rowlow-breakpoints: (
    "s":    1,
    "m":    768,
    "l":    992,
    "xl":   1200
);

Functions

rowlow-breakpoint()         // Returns a breakpoint value by a given name
rowlow-breakpoint-min()     // Returns the breakpoint's min value by a given name
rowlow-breakpoint-max()     // Returns the breakpoint's max value by a given name

Usage

Setup

/* Overwrite breakpoint map (optional) */
$rowlow-breakpoints: (
    "s":    1,
    "m":    992,
    "l":    1200,
    "xl":   1400,
    "xxl":  1600
);

@import "bower_components/rowlow.utils.breakpoints/main.scss"

SCSS

@media (min-width: rowlow-breakpoint-min("s") + px) {

}

@media (min-width: rowlow-breakpoint-min("m") + px) {

}

@media (min-width: rowlow-breakpoint-min("l") + px) {

}

@media (min-width: rowlow-breakpoint-min("xl") + px) {   

}

rowlow.utils.clearfix

A clearfix helper for Row Low framework. Clearfixes help you to clear floats in your layout.

Settings

$rowlow-clearfix-namespace //Specific module namespace

Mixins

rowlow-clearfix // Add clearfix specification

Usage

Setup

/* Set module namespace (optional) */
$rowlow-clearfix-namespace: "namespace-";

@import "bower_components/rowlow.utils.clearfix/main.scss"

SCSS

.some-element{
    @include rowlow-clearfix;
}

.some-element{
    @extend .clearfix;
}

HTML

<div class="clearfix"></div>

rowlow.utils.colors

Defining a map of color name and color code pairs, this module generates css selectors for each background, border and text colors.

Install

bower install --save rowlow.utils.colors

Variables

$rowlow-colors-namespace // Specific module namespace
$rowlow-colors // Map of colors

Functions

$rowlow-color()

Usage

Setup

/* Set modules namespace (optional) */
$rowlow-colors-namespace: "namespace-";

/* Define color map */
$rowlow-colors: (
    "white":    #ffffff,
    "black":    #000000,
    "grey":     #cccccc
);

@import "bower_components/rowlow.utils.colors/main.scss"

SCSS

/* Get color code using a function */
body{
    background-color: rowlow-color("grey");
}

HTML

<!-- Setting a background color via selector -->
<body class="background-color--grey"></body>

<!-- Setting a text color via selector -->
<h1 class="text-color--grey"></h1>

<!-- Setting a border color via selector -->
<h1 class="border-color--grey"></h1>

rowlow.utils.visibility

Take full control of the visibility of elements among all repsonisve breakpoints.

Install

bower install --save rowlow.utils.visibility

Variables

$rowlow-visibility-namespace // Specific module namespace

Usage

Setup

/* Set modules namespace (optional) */
$rowlow-visibility-namespace: "namespace-";

@import "bower_components/rowlow.utils.visibility/main.scss"

CSS Selector Naming Scheme

{rowlow-visibility-namespace}visible--{breakpoint-name}
{rowlow-visibility-namespace}hidden--{breakpoint-name}

HTML

<div class="hidden--s"></div>
<div class="visible--m visible--l"></div>

Examples

Visible
visible--s
visible--s
visible--m
visible--m
visible--l
visible--l
visible--xl
visible--xl
Hidden
hidden--s
hidden--s
hidden--m
hidden--m
hidden--l
hidden--l
hidden--xl
hidden--xl