container-queries

0.0.1 • Public • Published

ContainerQueries

A set of utilities for creating simple, width-based container queries.

Build status Coverage Status Maintained NPM version Dependency Status Dev Dependency Status Code Climate

Installation

Usage

First, import the ContainerQuery object from this package:

import ContainerQuery from 'container-queries';

Then, create the container queries around a given node using the create method:

let myNode = document.getElementById('MyNode');
let containerQuery = ContainerQuery.create(myNode);

Finally, add your container query conditions using the addQuery method of the returned object. You can specify a min and/ or max width for which the query is considered active. By default, these measures are considered inclusive. If you wish to make one or both exclusive, pass the inclusive option with a value of false (all exclusive), 'min' (max is exclusive), or 'max' (min is exclusive).

In addition, ensure that you pass an identifier; this is the value that must be used in your stylesheets to respond to the query. You can also provide a test method instead of a min/ max, which must take the current width and return a boolean indicating whether the query should match given that width.

containerQuery.addQuery({min: 320}, identifier: 'phone-up');
containerQuery.addQuery({min: 1000, max: 2000}, inclusive: 'min', identifier: 'big');
containerQuery.addQuery({
  test(width) { return (width % 2) === 0 },
  identifier: 'even',
})

These queries will automatically be updated as the parent of the node changes size.

Finally, in your CSS file, add a selector that will inform you of when a given query matches. This plugin uses the data-container-query-matches attribute to provide this information by populating it with a space-separated list of matching queries.

.my-component[data-container-query-matches="phone-up"] {} /* only phone query matches */
.my-component[data-container-query-matches~="big"] {} /* big query (and possibly more) matches */

This plugin includes styling utilities for a variety of pre- and post-processors to make these declarations more friendly.

Readme

Keywords

none

Package Sidebar

Install

npm i container-queries

Weekly Downloads

1

Version

0.0.1

License

MIT

Last publish

Collaborators

  • lemonmade