PostCSS plugin pack making it easier to work with IE 11.
This plugin pack adds a few hacks & utilities that make it easier to work with IE 11.
Example input:
@supports (display: grid) {
.box {
/* Grid styles, applied to modern browsers. */
}
}
@supports not (display: grid) {
.box {
/* Fallback styles, applied to older browsers, including IE 11. */
}
}
:ie11 .box {
/* IE 11 only hacks */
}
Example output:
@supports (display: grid) {
.box {
/* Grid styles, applied to modern browsers. */
}
}
@supports not (display: grid) {
.box {
/* Fallback styles, applied to older browsers, including IE 11. */
}
}
_:-ms-fullscreen, .box {
/* Fallback styles, applied to older browsers, including IE 11. */
}
_:-ms-fullscreen, .box {
/* IE 11 only hacks */
}
postcss([
require('postcss-ie11'),
])
You can selectively disable or enable each of the included plugins by setting a proper key to false
inside of the plugins
option object. All plugins are enabled by default.
Usage:
postcss([
require('postcss-ie11')({
plugins: {
pluginToBeDisabled: false,
pluginToBeEnabled: true,
},
}),
])
The possible plugin ids are:
supports
: represents postcss-ie11-supportspseudoClass
: represents postcss-ie11-pseudo-class
For example, the following invocation will disable all plugins, effectively disabling the whole postcss-ie11
plugin pack:
postcss([
require('postcss-ie11')({
plugins: {
supports: false,
pseudoClass: false,
},
}),
])
Many of plugins this plugin encompasses rely on a behavior of CSS that if browsers don't recognize a certain selector they drop the whole rule even if other selectors after the unrecognized one match. The default selector used in many of those plugins, '_:-ms-fullscreen'
, is recognized only by IE 11. You can change it to a different one that is recognized by other browsers by passing a ieSelector
option, e.g.:
postcss([
require('postcss-ie11')({
ieSelector: '_:-ms-lang(x)',
}),
])
will match IE 10 and 11. Note, however, that IE 10 support is not official so bugs affecting only that browser (and not affecting IE 11) may not be fixed.
See PostCSS docs for examples for your environment.