npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fast-grid

v0.2.5

Published

Sass grid system designed for speed

Downloads

3,014

Readme

fast-grid

NPM version

Sass grid system designed for speed.

Install

Install sass in your preferred way, then install fast-grid:

npm install fast-grid --save-dev

Get started

Import fast-grid in your sass/scss file, and make grid!

<div class="cols">
    <div class="cols__item">1</div>
    <div class="cols__item">2</div>
    <div class="cols__item">3</div>
    <div class="cols__item">4</div>
    <div class="cols__item">5</div>
</div>
@import "~fast-grid/fast-grid";

* {
  box-sizing: border-box; // recommend
}

.cols {
  @include grid-row();

  &__item {
    @include grid-col(12 6 4 (1 of 5));
    
    @include grid-breakpoint(md) {
      letter-spacing: 0.5em;
    }
  }
}

Note: 12 6 4 (1 of 5) - list of span columns for default breakpoints

Compiled to:

.cols {
  display: flex;
  flex-flow: row wrap;
  margin-left: -15px;
  margin-right: -15px; }
  .cols__item {
    padding-left: 15px;
    padding-right: 15px;
    width: 100%; }
    @media (min-width: 768px) {
      .cols__item {
        width: 50%; } }
    @media (min-width: 992px) {
      .cols__item {
        width: 33.3333333333%;
        letter-spacing: 0.5em; } }
    @media (min-width: 1200px) {
      .cols__item {
        width: 20%; } }

Examples

See grid in action by examples:

https://paulzi.github.io/fast-grid/

Documentation

Settings

fast-grid set the global variable $grid. It is sass map.

You can redefine this variable after import fast-grid for change global default settings.

@import "~fast-grid/fast-grid";

$grid: (
  // ... redefine ALL (!) properties here
);

If you want to change only some properties, use map-merge:

@import "~fast-grid/fast-grid";

$grid: map-merge($grid, (
  columns: 15  
));

Alternatively, you can specify another (including local) variable, and transfer it to mixins:

@import "~fast-grid/fast-grid";

.component {
  $component-grid: (
    columns: 15
  );
  
  &__item {
    @include grid-col(5 3, $component-grid);
  }
}

Global $grid is sass map, with properties:

breakpoints (map) [(xs: 0px, sm: 768px, md: 992px, lg: 1200px, xl: 1600px)]

List of breakpoints. The list should be sorted from a smaller to a larger value.

columns (integer) [12]

Number of columns

gap (length|list|map) [15px]

Length the of the half gap between the columns.

If gap is a list, it lists the values for the each breakpoints, sorted from a smaller to a larger. A list can contain fewer breakpoints. You can also skip values by null:

@import "~fast-grid/fast-grid";

.component {
  $grid: (
    gap: 15px null 30px
  );
}

If gap is a map, it specifies the values for each specified breakpoint:

@import "~fast-grid/fast-grid";

.component {
  $grid: (
    gap: (
      xs: 15px,
      md: 30px
    )
  );
}

container (length|list|map) [15px]

Specifies padding for the grid-container().

If container is a list, it lists the values for the each breakpoints, sorted from a smaller to a larger. A list can contain fewer breakpoints. You can also skip values by null:

@import "~fast-grid/fast-grid";

.component {
  $grid: (
    container: 15px null 5%
  );
}

If container is a map, it specifies the values for each specified breakpoint:

@import "~fast-grid/fast-grid";

.component {
  $grid: (
    container: (
      xs: 15px,
      md: 5%
    )
  );
}

box-sizing (string) ['border-box']

If you do not specify globally * { box-sizing: border-box }, fill the global value of box-sizing in this property:

@import "~fast-grid/fast-grid";

$grid: map-merge($grid, (
  box-sizing: content-box
));

mode (string) ['flex']

Select flex or float mode for the grid. flex is a more modern way, and provides more features, but not supported by older browsers. float is supported by all browsers.

@import "~fast-grid/fast-grid";

$grid: map-merge($grid, (
  mode: float
));

grid-container([$from, $to, $settings])

Apply container mixin. Container has a given padding, and in the specified breakpoints have a fixed width.

@import "~fast-grid/fast-grid";

.container {
  @include grid-container(sm, lg);
}

$from (null|string|list) [null]

Start breakpoint for fixed width. If $from is list - it specifies the breakpoints for fixed width. If $from is null - disable fixed width.

$to (null|string) [null]

The end breakpoint for fixed width. If $to is null - use last breakpoint.

grid-row([$settings])

Apply row of columns mixin. It enable row behavior and correct the margins of the edge columns.

@import "~fast-grid/fast-grid";

.row {
  @include grid-row();
}

grid-col($spans[, $settings])

Apply column mixin. It enable column behavior.

@import "~fast-grid/fast-grid";

.row {
  @include grid-row();
}

.col {
  @include grid-col(12 6 4 3);
}

$spans (list|map)

If $spans is a list, it lists the values for the each breakpoints, sorted from a smaller to a larger. A list can contain fewer breakpoints. You can set auto for width: auto in this breakpoint. You can also skip values by null:

.col {
  @include grid-col(12 null 4); // sm is null, lg equal md
}

If $spans is a map, it specifies the values for each specified breakpoint:

.col {
  @include grid-col((
    xs: 12,
    md: 4
  ));
}

Each span can be list $x of $y, where $x - is span, $y - is override number of columns:

.col {
  @include grid-col(12 6 null (1 of 5));
}

.col2 {
  @include grid-col((
    xs: 12,
    sm: 6,
    md 1 of 5
  ));
}

$spans can be ended by of $y, where $y - is override locally number of columns:

.col {
  @include grid-col(30 15 6 of 30);
}

.col2 {
  @include grid-col((xs: 30, sm: 15, md: 6) of 30);
}

grid-prop($prop, $spans[, $settings])

Apply calculated span value (see grid-col $spans param) for $prop.

.col {
  @include grid-prop('margin-right', null 1);
}

grid-offset($spans[, $settings])

Move column by the specified number of columns by $spans with content stream (see grid-col $spans param).

.col__right {
  @include grid-offset(null 2 of 5);
}

grid-move($spans[, $settings])

Move column by the specified number of columns by $spans without changing content stream (see grid-col $spans param).

.col__left {
  @include grid-col(5 2 of 5);
  @include grid-move(null 3 of 5);
}

.col__right {
  @include grid-col(5 3 of 5);
  @include grid-move(null -2 of 5);
}

grid-width($breakpoint[, $settings])

Return min-width of named breakpoint:

.visible-sm {
  display: none;

  @media (min-width: grid-width(sm)) {
    display: block;
  }
}

grid-breakpoint($breakpoint[, $settings]) {}

Apply rules for named breakpoint:

.visible-sm {
  display: none;

  @include grid-breakpoint(sm) {
    display: block;
  }
}

$breakpoint can be map from to:

.visible-xs-sm-only {
  display: none;

  @include grid-breakpoint(xs sm) {
    display: block;
  }
}

You can skip from with null:

.visible-xs-only {
  display: none;

  @include grid-breakpoint(null xs) {
    display: block;
  }
}

Browser support

In flex mode - all browsers support flexible box layout:

In float mode - all alive browsers.