UNPKG

rucksack-css

Version:

A little bag of CSS superpowers

289 lines (207 loc) 7.49 kB
<p align="center"> <img src="http://simplaio.github.io/rucksack/logo.png" alt="rucksack logo" height="325" /> </p> <p align="center"> <a href="https://npmjs.org/package/rucksack-css"><img src="https://img.shields.io/npm/v/rucksack-css.svg" alt="NPM version" /></a> <a href="https://www.npmjs.com/package/rucksack-css"><img src="https://img.shields.io/npm/dm/rucksack-css.svg" alt="Downloads" /></a> <a href="https://travis-ci.org/simplaio/rucksack"><img src="https://travis-ci.org/simplaio/rucksack.svg?branch=master" alt="Build satus" /></a> </p> A little bag of CSS superpowers, built on [PostCSS][postcss]. Rucksack makes CSS development less painful, with the features and shortcuts it should have come with out of the box. **Read the full docs at [simplaio.github.io](https://simplaio.github.io/rucksack)** ### Contents - [Install](#install) - [Usage](#usage) - [Gulp](#gulp) - [Grunt](#grunt) - [Broccoli](#broccoli) - [CLI](#cli) - [PostCSS](#postcss) - [Stylus](#stylus) - [Features](#features) - [Responsive typography](#responsive-typography) - [Shorthand positioning syntax](#shorthand-positioning-syntax) - [Native clearfix](#native-clearfix) - [Automatic font src generation](#automatic-font-src-generation) - [Extra input pseudo-elements](#extra-input-pseudo-elements) - [Hex shortcuts for RGBA](#hex-shortcuts-for-rgba) - [More easing functions](#more-easing-functions) - [Quantity pseudo-selectors](#quantity-pseudo-selectors) - [CSS property aliases](#css-property-aliases) - [Addons](#addons) - [Autoprefixer](#autoprefixer) - [Legacy Fallbacks](#legacy-fallbacks) - [Options](#options) ## Install Rucksack is available on NPM under `rucksack-css`, install it with Yarn or NPM ```sh $ yarn add rucksack-css --dev ``` ```sh $ npm i rucksack-css --save-dev ``` ## Usage Rucksack can be used as a PostCSS plugin, direclty on the command line, and has helpers available for most build tools. #### Gulp Use [gulp-rucksack][gulp-rucksack] ```js const gulp = require('gulp'); const rucksack = require('gulp-rucksack'); gulp.task('rucksack', () => { return gulp.src('src/style.css') .pipe(rucksack()) .pipe(gulp.dest('style.css')); }); ``` #### Grunt Use [grunt-rucksack][grunt-rucksack] ```js require('load-grunt-tasks')(grunt); grunt.initConfig({ rucksack: { compile: { files: { 'style.css': 'src/style.css' } } } }); grunt.registerTask('default', ['rucksack']); ``` #### Broccoli Use [broccoli-rucksack][broccoli-rucksack] ```js const rucksack = require('broccoli-rucksack'); tree = rucksack(tree, [options]); ``` #### CLI Process CSS directly on the command line ```sh $ rucksack src/style.css style.css [options] ``` #### PostCSS Rucksack is built on PostCSS, and can be used as a PostCSS plugin ```js const postcss = require('postcss'); const rucksack = require('rucksack-css'); postcss([ rucksack() ]) .process(css, { from: 'src/style.css', to: 'style.css' }) .then(result => { fs.writeFileSync('style.css', result.css); if ( result.map ) fs.writeFileSync('style.css.map', result.map); }); ``` See the [PostCSS Docs][postcss] for examples for your environment. #### Stylus Rucksack can be used as a Stylus plugin with [PostStylus][poststylus] ```js stylus(css).use(poststylus('rucksack-css')) ``` See the [PostStylus Docs][poststylus] for more examples for your environment. ## Features #### Responsive typography Automagical fluid typography with new `responsive` arguments to `font-size`, `line-height`, and `letter-spacing` properties ```css .foo { font-size: responsive; } ``` ![Responsive Type Demo][type-demo] #### Shorthand positioning syntax Use the shorthand syntax from `margin` and `padding` on `position` properties ```css .foo { position: absolute 0 20px; } ``` #### Native clearfix Generate bulletproof clearfixes with a new argument on the `clear` property ```css .foo { clear: fix; } ``` #### Automatic font src generation Automatically generate `src` sets for `@font-face` based on the path to your font files ```css @font-face { font-family: 'My Font'; font-path: '/path/to/font/file'; } ``` #### Extra input pseudo-elements Standardize the unweidly `<input type="range">` element across browsers with new `::track` and `::thumb` pseudo elements ```css input[type="range"]::track { height: 2px; } ``` #### Hex shortcuts for RGBA Generate RGBA colors from a hex color + alpha value ```css .foo { color: rgba(#fff, 0.8); } ``` #### More easing functions Use a whole library of modern easing functions in transitions and animations ```css .foo { transition: all 250ms ease-out-cubic; } ``` #### Quantity pseudo-selectors Create truly responsive designs with powerful content quantity selectors ```css li:at-least(4) { color: blue; } li:between(4,6) { color: red; } ``` #### CSS property aliases ```css @alias { fs: font-size; bg: background; } .foo { fs: 16px; bg: #fff; } ``` ## Addons #### Autoprefixer Automatically apply vendor prefixes to relevant properties based on data from [CanIUse][caniuse], via [autoprefixer][autoprefixer]. #### Legacy Fallbacks Automatically generate CSS fallbacks for legacy browsers, via [laggard][laggard]. ## Options All features in Rucksack can be toggled by passing options on initialization. By default core features are set to `true`, and optional addons are set to `false` Option | Type | Default | Description ------------------- | ------- | ------- | ----------- `responsiveType` | Boolean | `true` | Whether to enable responsive typography `shorthandPosition` | Boolean | `true` | Whether to enable shorthand position properties `quantityQueries` | Boolean | `true` | Whether to enable quantity query psuedo selectors `alias` | Boolean | `true` | Whether to enable to enable property aliases `inputPseudo` | Boolean | `true` | Whether to enable whether to enable extra input pseudo elements `clearFix` | Boolean | `true` | Whether to enable native clear fix `fontPath` | Boolean | `true` | Whether to enable font `src` set generation `hexRGBA` | Boolean | `true` | Whether to enable hex RGBA shortcuts `easings` | Boolean | `true` | Whether to enable extra easing functions `fallbacks` | Boolean | `false` | Whether to enable CSS fallbacks addon `autoprefixer` | Boolean | `false` | Whether to enable autoprefixer addon `reporter` | Boolean | `false` | Whether to enable error reporting from plugins used inside Rucksack *** MIT © [Sean King][sean] [postcss]: https://github.com/postcss/postcss [gulp-rucksack]: https://github.com/simplaio/gulp-rucksack [grunt-rucksack]: https://github.com/simplaio/grunt-rucksack [broccoli-rucksack]: https://github.com/simplaio/broccoli-rucksack [poststylus]: https://github.com/seaneking/poststylus [type-demo]: http://simplaio.github.io/rucksack/img/type-demo.gif [caniuse]: http://caniuse.com [autoprefixer]: https://github.com/postcss/autoprefixer [laggard]: https://github.com/seaneking/laggard [sean]: https://twitter.com/seaneking