UnMQ removes media queries from CSS while preserving rules that match a hard-coded viewport. This can be useful for outputting desktop CSS for older browsers like Internet Explorer 8.
/* before */
body {
font-size: 12px;
}
@media screen and (max-width: 767px) {
body {
font-size: 16px;
}
}
@media screen and (min-width: 768px) {
body {
color: #444;
}
}
/* after */
body {
font-size: 12px;
}
body {
color: #444;
}
Add UnMQ to your build tool:
npm install postcss-unmq --save-dev
require('postcss-unmq')({ /* options */ }).process(YOUR_CSS);
Add PostCSS to your build tool:
npm install postcss --save-dev
Load UnMQ as a PostCSS plugin:
postcss([
require('postcss-unmq')({ /* options */ })
]);
Add Gulp PostCSS to your build tool:
npm install gulp-postcss --save-dev
Enable UnMQ within your Gulpfile:
var postcss = require('gulp-postcss');
gulp.task('css', function () {
return gulp.src('./css/src/*.css').pipe(
postcss([
require('postcss-unmq')({ /* options */ })
])
).pipe(
gulp.dest('./css')
);
});
Add Grunt PostCSS to your build tool:
npm install grunt-postcss --save-dev
Enable UnMQ within your Gruntfile:
grunt.loadNpmTasks('grunt-postcss');
grunt.initConfig({
postcss: {
options: {
processors: [
require('postcss-unmq')({ /* options */ })
]
},
dist: {
src: 'css/*.css'
}
}
});
You can define your own viewport for media queries to be evaluated against. Think of the options as the current state of a device and browser.
require('postcss-unmq')({
// these are already the default options
type: 'screen',
width: 1024,
height: 768,
resolution: '1dppx',
color: 3
})
If it’s not defined, device-width
will be given the value of width
, and device-height
will be given the value of height
. Similarly, aspect-ratio
will be given the value of device-width
divided by device-height
.