postcss-ie11

PostCSS plugin pack making it easier to work with IE 11

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
postcss-ie11
100.0.15 years ago5 years agoMinified + gzip package size for postcss-ie11 in KB

Readme

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 */
}

Usage

postcss([
    require('postcss-ie11'),
])

Options

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:

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,
        },
    }),
])

Advanced usage

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.