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

squid-css

v1.0.3

Published

A light, vw-based CSS framework for a square grid

Downloads

2

Readme

squid.css

squid.css is a configurable, vw-based square grid system written in Sass. Conventional grid systems are one dimensional, that is, they typically only define sizes along one axis. squid is two dimensional, meaning it allows you to define both the width and height of a "column".

squid.css does this by using vw for width and height. This enables responsive proportional rectangles.

Features

  • Uses vw for responsive proportionality
  • Built with Flexbox
  • Highly configurable through Sass variables
  • Mobile first
  • 2.3KB (minified+gzip)

Browser Support

squid requires support for vw and display: flex. This means no UC Browser for Android and no Opera Mini, since they don't support vw.

Installation

Clone from GitHub

$ git clone [email protected]:madsfaerch/squid-css.git

Use squid.css for development and squid.min.css for production

NPM

$ npm install --save squid-css

Then add squid-css to your workflow.

Usage

I highly recommend you configure squid.css to suit your needs. Check out the configuration chapter to see what's available to you.

Note: Since squid uses vw, and not percentages, putting grid-items in a container with a width or max-width will not stop the elements from growing, since their width is not based on the parent. Instead, use the variable $squid-max-width to set a maximum width on the grid.

Containers

squid uses two types of containers:

.container

For larger sections. This keeps your content centered if you use squid with a maxmimum width.

.row

For rows of content. Use the modifier class .row--vertical for vertical rows.

Width and height

To specify a rectangle's dimensions use w-<size-value> for width and h-<size-value> for height.

For example, add the classes w-1 and h-1 for a 1 by 1 square. By default squid uses 12-column system, so w-1 and h-1 will equate to a width and height of 8.333vw (100vw/12 * 1).

<div class="row">
  <div class="grid-item w-1 h-1">
    I'm a perfect square!
  </div>
</div>

Make rectangles with other proportions simply by changing the width or height class:

<div class="row">
  <div class="grid-item w-2 h-1">
    I'm a 2 by 1 rectangle!
  </div>
</div>

Adding multiple items is just like any other grid:

<div class="row">
  <div class="grid-item w-1 h-1">
    I'm a perfect square!
  </div>
  <div class="grid-item w-2 h-1">
    I'm a 2 by 1 rectangle!
  </div>
</div>

Offsets

squid offsets content by using classes that add margin to the element. By default, these classes are named t-<offset-value>, r-<offset-value>, b-<offset-value> and l-<offset-value> corresponding to margin-top, margin-right, margin-bottom and margin-left respectively.

For a 2 by 2 square that is left offset by 2:

<div class="row">
  <div class="grid-item w-2 h-2 l-2">
    I'm offset by 2!
  </div>
</div>

Media Queries

With squid you can add (and name) as many breakpoints as you would like. By default, squid ships with 3: sm , md and lg.

For a offset-by-1 10x4 rectangle that is offset-by-2 and 8x6 after the medium breakpoint:

<div class="row">
  <div class="grid-item w-10 h-4 l-1 w-8-md h-4-md l-2-md">
    I change sizes!
  </div>
</div>

The offset classes include the 0 value for completely removing offsets at specific breakpoints. E.g. class="l-2 l-0-md" will remove the left offset after the medium breakpoint.

Show/hide on breakpoint

To show and hide elements at specific breakpoints you can utilise show-<breakpoint> and hide-<breakpoint>.

The show-classes will hide an element before the specified breakpoint. The hide-classes will hide an element after the specified breakpoint.

<div class="row">
  <div class="grid-item w-12 h-1 show-lg">
    I'm visible after the large breakpoint!
  </div>
  <div class="grid-item w-12 h-1 hide-lg">
    I'm visible before the large breakpoint!
  </div>
  <div class="grid-item w-12 h-1 show-sm hide-md">
    I'm visible between the small and medium breakpoint!
  </div>
</div>

Helpers

By default, squid ships with a set helpers that helps you layout quickly. They mostly change margins Flexbox values. There are reasons not to include the helpers. Maybe you have your own or prefer to use less classes and write more CSS.

To disable: $compile-helpers: false

| Class name | Function | | ------------------------ | ---------------------------------------- | | .flex | display: flex | | .align-start | margin-right: auto | | .align-end | margin-left: auto | | .center-self | margin-left: auto margin-right: auto | | .align-top | align-self: flex-start | | .align-center | align-self: center | | .align-bottom | align-self: flex-end | | .align-items-end | align-items: flex-end | | .align-items-center | align-items: center | | .justify-content-between | justify-content: space-between | | .justify-content-end | justify-content: flex-end | | .justify-content-center | justify-content: center | | .flex-wrap | flex-wrap: wrap |

Configuration

Customizing squid requires a Sass compiler.

To configure squid, create a .scss/.sass file and populate it with the variables from this section.

Import it before your '@import "squid-css" statement.

Global prefix

All squid classes will be prefixed with this string, making it ideal for namespacing.

$prefix: ''

Max width of site

Specify 'none' for a completely fluid layout. Enter 90em, 1440px, 21cm etc., it's all good to squid. $squid-max-width: 90em

Columns

Amount of columns in the grid.

$columns: 12

Width and height

Specify the desired name for the width and height of squid's classes.

'w' for "w-3-small"
'col' for "col-3-small"

$dimension-prefixes: (width: 'w', height: 'h')

Specify the desired offset directions

By default squid will generate offset classes in all directions.

Removing a key/value pair in the following map will stop squid from generating it. Change the values to change the generated class name

'left' for "left--2--large"
'l' for "l--2--large"
'push' for "push--2--large"

$offset-prefixes: (top: 't', right: 'r', bottom: 'b', left: 'l')

Breakpoints

Specify your desired breakpoints. Add as many as required. Names of keys will be used in generation of squid classes.

'lg' for "width--3--lg"
'desktop' for "width--3--desktop"

$breakpoints: ( sm: 30em, md: 45em, lg: 64em)

Delimiters

Specify the wanted delimiter.

'-' for "width-3-medium"
'--' for "width--3--medium"
'_' for "width_3_medium"

$size-delimiter: '-'

Breakpoint delimiter

By default the size delimiter and the breakpoint delimiter are identical. Override that, by providing a specific string for the breakpoint delimiter.

"width_3_medium" -> "width_3--medium"

$breakpoint-delimiter: $size-delimiter

Compile grid helper classes

$compile-helpers: true

License

MIT