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.
153 lines
3.0 KiB
153 lines
3.0 KiB
# 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 |
|
|
|
```bash |
|
npm install postcss-calc |
|
``` |
|
|
|
## Usage |
|
|
|
```js |
|
// dependencies |
|
var fs = require("fs") |
|
var postcss = require("postcss") |
|
var calc = require("postcss-calc") |
|
|
|
// css to be processed |
|
var css = fs.readFileSync("input.css", "utf8") |
|
|
|
// process css |
|
var output = postcss() |
|
.use(calc()) |
|
.process(css) |
|
.css |
|
``` |
|
|
|
Using this `input.css`: |
|
|
|
```css |
|
h1 { |
|
font-size: calc(16px * 2); |
|
height: calc(100px - 2em); |
|
width: calc(2*var(--base-width)); |
|
margin-bottom: calc(16px * 1.5); |
|
} |
|
``` |
|
|
|
you will get: |
|
|
|
```css |
|
h1 { |
|
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. |
|
|
|
```js |
|
var out = postcss() |
|
.use(calc({precision: 10})) |
|
.process(css) |
|
.css |
|
``` |
|
|
|
#### `preserve` (default: `false`) |
|
|
|
Allow you to preserve calc() usage in output so browsers will handle decimal |
|
precision themselves. |
|
|
|
```js |
|
var out = postcss() |
|
.use(calc({preserve: true})) |
|
.process(css) |
|
.css |
|
``` |
|
|
|
#### `warnWhenCannotResolve` (default: `false`) |
|
|
|
Adds warnings when calc() are not reduced to a single value. |
|
|
|
```js |
|
var out = postcss() |
|
.use(calc({warnWhenCannotResolve: true})) |
|
.process(css) |
|
.css |
|
``` |
|
|
|
#### `mediaQueries` (default: `false`) |
|
|
|
Allows calc() usage as part of media query declarations. |
|
|
|
```js |
|
var out = postcss() |
|
.use(calc({mediaQueries: true})) |
|
.process(css) |
|
.css |
|
``` |
|
|
|
#### `selectors` (default: `false`) |
|
|
|
Allows calc() usage as part of selectors. |
|
|
|
```js |
|
var out = postcss() |
|
.use(calc({selectors: true})) |
|
.process(css) |
|
.css |
|
``` |
|
|
|
Example: |
|
|
|
```css |
|
div[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 tests |
|
before submitting a bug fix or a feature. |
|
|
|
```bash |
|
git clone git@github.com:postcss/postcss-calc.git |
|
git checkout -b patch-1 |
|
npm install |
|
npm 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
|
|
|