You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# PostCSS Calc [<img src="https://postcss.github.io/postcss/logo.svg" alt="PostCSS" width="90" height="90" align="right">][PostCSS]
[![NPM Version][npm-img]][npm-url][![Support Chat][git-img]][git-url]
[PostCSS Calc] lets you reduce `calc()` references whenever it's possible.When multiple units are mixed together in the same expression, the `calc()`statement is left as is, to fallback to the [W3C calc() implementation].
## Installation
```bashnpm install postcss-calc```
## Usage
```js// dependenciesvar fs = require("fs")var postcss = require("postcss")var calc = require("postcss-calc")
// css to be processedvar css = fs.readFileSync("input.css", "utf8")
// process cssvar output = postcss() .use(calc()) .process(css) .css```
Using this `input.css`:
```cssh1 { font-size: calc(16px * 2); height: calc(100px - 2em); width: calc(2*var(--base-width)); margin-bottom: calc(16px * 1.5);}```
you will get:
```cssh1 { font-size: 32px; height: calc(100px - 2em); width: calc(2*var(--base-width)); margin-bottom: 24px}```Checkout [tests] for more examples.
### Options
#### `precision` (default: `5`)
Allow you to define the precision for decimal numbers.
```jsvar out = postcss() .use(calc({precision: 10})) .process(css) .css```
#### `preserve` (default: `false`)
Allow you to preserve calc() usage in output so browsers will handle decimalprecision themselves.
```jsvar out = postcss() .use(calc({preserve: true})) .process(css) .css```
#### `warnWhenCannotResolve` (default: `false`)
Adds warnings when calc() are not reduced to a single value.
```jsvar out = postcss() .use(calc({warnWhenCannotResolve: true})) .process(css) .css```
#### `mediaQueries` (default: `false`)
Allows calc() usage as part of media query declarations.
```jsvar out = postcss() .use(calc({mediaQueries: true})) .process(css) .css```
#### `selectors` (default: `false`)
Allows calc() usage as part of selectors.
```jsvar out = postcss() .use(calc({selectors: true})) .process(css) .css```
Example:
```cssdiv[data-size="calc(3*3)"] { width: 100px;}```
---
## Related PostCSS plugins
To replace the value of CSS custom properties at build time, try [PostCSS Custom Properties].
## Contributing
Work on a branch, install dev-dependencies, respect coding style & run testsbefore submitting a bug fix or a feature.
```bashgit clone git@github.com:postcss/postcss-calc.gitgit checkout -b patch-1npm installnpm test```
## [Changelog](CHANGELOG.md)
## [License](LICENSE)
[git-img]: https://img.shields.io/badge/support-chat-blue.svg[git-url]: https://gitter.im/postcss/postcss[npm-img]: https://img.shields.io/npm/v/postcss-calc.svg[npm-url]: https://www.npmjs.com/package/postcss-calc
[PostCSS]: https://github.com/postcss[PostCSS Calc]: https://github.com/postcss/postcss-calc[PostCSS Custom Properties]: https://github.com/postcss/postcss-custom-properties[tests]: src/__tests__/index.js[W3C calc() implementation]: https://www.w3.org/TR/css3-values/#calc-notation
|