Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/msidolphin/postcss-px-to-viewport-units
A CSS post-processor that converts px to viewport units (vw, vh, vmin, vmax).
https://github.com/msidolphin/postcss-px-to-viewport-units
postcss postcss-plugin vh viewport-units vmax vmin vw
Last synced: 15 days ago
JSON representation
A CSS post-processor that converts px to viewport units (vw, vh, vmin, vmax).
- Host: GitHub
- URL: https://github.com/msidolphin/postcss-px-to-viewport-units
- Owner: msidolphin
- License: other
- Created: 2018-12-08T14:25:44.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2018-12-11T01:49:59.000Z (almost 6 years ago)
- Last Synced: 2024-08-09T14:56:02.677Z (3 months ago)
- Topics: postcss, postcss-plugin, vh, viewport-units, vmax, vmin, vw
- Language: JavaScript
- Size: 11.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# postcss-px-to-viewport-units [![NPM version](https://badge.fury.io/js/postcss-px-to-viewport-units.svg)](http://badge.fury.io/js/postcss-px-to-viewport-units)
Forked by evrone/postcss-px-to-viewport
A plugin for [PostCSS](https://github.com/ai/postcss) that generates viewport units (vw, vh, vmin, vmax) from pixel units.
## Usage
If your project involves a fixed width, this script will help to convert pixels into viewport units.
### Input/Output
```css
// input.class {
margin: -10px .5vh;
padding: 5vmin 9.5px 1px;
border: 3px solid black;
border-bottom-width: 1px;
font-size: 14px;
line-height: 20px;
}.class2 {
border: 1px solid black;
margin-bottom: 1px;
font-size: 20px;
line-height: 30px;
}@media (min-width: 750px) {
.class3 {
font-size: 16px;
line-height: 22px;
}
}// output
.class {
margin: -3.125vw .5vh;
padding: 5vmin 2.96875vw 1px;
border: 0.9375vw solid black;
border-bottom-width: 1px;
font-size: 4.375vw;
line-height: 6.25vw;
}.class2 {
border: 1px solid black;
margin-bottom: 1px;
font-size: 6.25vw;
line-height: 9.375vw;
}@media (min-width: 234.375vw) {
.class3 {
font-size: 5vw;
line-height: 6.875vw;
}
}
```### Example
```js
'use strict';var fs = require('fs');
var postcss = require('postcss');
var pxToViewport = require('..');
var css = fs.readFileSync('main.css', 'utf8');
var options = {
replace: false
};
var processedCss = postcss(pxToViewport(options)).process(css).css;fs.writeFile('main-viewport.css', processedCss, function (err) {
if (err) {
throw err;
}
console.log('File with viewport units written.');
});
```### Options
Default:
```js
{
unitToConvert: 'px',
viewportWidth: 320,
viewportHeight: 568, // not now used; TODO: need for different units and math for different properties
unitPrecision: 5,
viewportUnit: 'vw',
fontViewportUnit: 'vw', // vmin is more suitable.
selectorBlackList: [],
minPixelValue: 1,
mediaQuery: false,
exclude: [] // ignore some files
}
```
- `unitToConvert` (String) unit to convert, by default, it is px.
- `viewportWidth` (Number) The width of the viewport.
- `viewportHeight` (Number) The height of the viewport.
- `unitPrecision` (Number) The decimal numbers to allow the REM units to grow to.
- `viewportUnit` (String) Expected units.
- `fontViewportUnit` (String) Expected units for font.
- `selectorBlackList` (Array) The selectors to ignore and leave as px.
- If value is string, it checks to see if selector contains the string.
- `['body']` will match `.body-class`
- If value is regexp, it checks to see if the selector matches the regexp.
- `[/^body$/]` will match `body` but not `.body`
- `minPixelValue` (Number) Set the minimum pixel value to replace.
- `mediaQuery` (Boolean) Allow px to be converted in media queries.
- `exclude` (Array or Regexp) Ignore some files like 'node_modules'
- If value is regexp, will ignore the matches files.
- If value is array, the elements of the array are regexp.### Use with gulp-postcss
```js
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var pxtoviewport = require('postcss-px-to-viewport-units');gulp.task('css', function () {
var processors = [
pxtoviewport({
viewportWidth: 320,
viewportUnit: 'vmin'
})
];return gulp.src(['build/css/**/*.css'])
.pipe(postcss(processors))
.pipe(gulp.dest('build/css'));
});
```
### Use with webpack#### Install
```bash
npm install postcss-px-to-viewport-units -D
```#### webacpk config
```js
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader", "postcss-loader"]
}
]
}
}
```#### postcss config
And create .postcssrc.js
```js
module.exports = {
"plugins": {
"postcss-px-to-viewport-units": {
viewportWidth: 750,
viewportHeight: 1334,
unitPrecision: 5,
viewportUnit: 'vw',
selectorBlackList: [],
fontViewportUnit: 'vw',
minPixelValue: 1,
mediaQuery: false,
exclude: [/node_modules/]
}
}
}
```