You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

@liaoyinglong/postcss-px-to-viewport

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@liaoyinglong/postcss-px-to-viewport

A CSS post-processor that converts px to viewport units (vw, vh, vmin, vmax).

0.0.2
latest
Source
npmnpm
Version published
Maintainers
1
Created
Source

postcss-px-to-viewport NPM version

  • A plugin for PostCSS that generates viewport units (vw, vh, vmin, vmax) from pixel units.
  • fork from evrone/postcss-px-to-viewport

Install

$ npm i @liaoyinglong/postcss-px-to-viewport -D

Usage

If your project involves a fixed width, this script will help to convert pixels into viewport units.

Input/Output

// input

.class {
  margin: -10px 0.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 0.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

'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:

{
  viewportWidth: 750,
  viewportHeight: 1334,
  unitPrecision: 3,
  viewportUnit: 'vw',
  selectorBlackList: ['.ignore'],
  minPixelValue: 1,
  mediaQuery: false,
}
  • viewportWidth (Number) 视窗的宽度,对应的是我们设计稿的宽度,一般是 750
  • viewportHeight (Number) 视窗的高度,根据 750 设备的宽度来指定,一般指定 1334,也可以不配置。
  • unitPrecision (Number) 指定px转换为视窗单位值的小数位数(很多时候无法整除)。
  • viewportUnit (String) 指定需要转换成的视窗单位,建议使用 vw
  • selectorBlackList (Array) 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名。
    • 如果 value 是 string,则检查 selector 是否包含字符串。
      • ['body'] 将会匹配 .body-class
    • 如果 value 是 regexp,它会检查选择器是否与正则表达式匹配。
      • [/^body$/] 将会匹配 body 并不是 .body
  • minPixelValue (Number) 小于或等于1px不转换为视窗单位,你也可以设置为你想要的值。
  • mediaQuery (Boolean) 允许在媒体查询中转换px
  • exclude (RegExp) 排除路径不参与转换 eg:/(\/|\\)(node_modules)(\/|\\)/

Use with gulp-postcss

var gulp = require('gulp');
var postcss = require('gulp-postcss');
var pxtoviewport = require('postcss-px-to-viewport');

gulp.task('css', function() {
  var processors = [
    pxtoviewport({
      viewportWidth: 750,
      viewportUnit: 'vmin'
    })
  ];

  return gulp
    .src(['build/css/**/*.css'])
    .pipe(postcss(processors))
    .pipe(gulp.dest('build/css'));
});

Keywords

css

FAQs

Package last updated on 02 Aug 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts