Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ignored -webkit-, -ms- prefix on @-moz-document rules for userstyles #1271

Open
denis-g opened this issue Dec 4, 2019 · 10 comments
Open

Ignored -webkit-, -ms- prefix on @-moz-document rules for userstyles #1271

denis-g opened this issue Dec 4, 2019 · 10 comments

Comments

@denis-g
Copy link

denis-g commented Dec 4, 2019

NodeJs v10.15.2
NPM v6.13.1

I'm testing postcss with autoprefixer, and also gulp-autoprefixer.
browserslist setting is default.

Source scss:

body {
    appearance: none;
    user-select: none;
}

@-moz-document domain('example.com') {
    body {
        appearance: none;
        user-select: none;
    }
}

Output css:

body {
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

@-moz-document domain('example.com') {
    body {
        -moz-appearance: none;
             appearance: none;
        -moz-user-select: none;
             user-select: none;
    }
}

Same result on http://autoprefixer.github.io/

@ai
Copy link
Member

ai commented Dec 4, 2019

Good idea. Do you want to send PR?

@denis-g denis-g changed the title Ignored -webkit-, -ms- prefix on @-moz-document rules Ignored -webkit-, -ms- prefix on @-moz-document rules for userstyles Dec 4, 2019
@ai
Copy link
Member

ai commented Dec 4, 2019

@denis-g seems like you need to fix this method https://github.com/postcss/autoprefixer/blob/master/lib/prefixer.js#L79-L107

@ai
Copy link
Member

ai commented Dec 8, 2019

@denis-g what is a problem here?

Current output seems like OK to me:

body {
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

@-moz-document domain('example.com') {
    body {
        -moz-appearance: none;
             appearance: none;
        -moz-user-select: none;
             user-select: none;
    }
}

@silverwind
Copy link

This is actually a bad idea, at least with stylus which parsers those @-moz-document into site-specific blocks and applies the contained styles on all browsers, not just Firefox.

@ai
Copy link
Member

ai commented Jan 17, 2020

@silverwind so stylus uses @-moz-document at-rule, but then require -webkit- prefixes inside? Why they do it? Do we need to report them an issue?

@silverwind
Copy link

@-moz-document is stripped entirely from the resulting style. What remains can and should be prefixed for all browsers.

@ai
Copy link
Member

ai commented Jan 17, 2020

Did stylus strip the inner content of @-moz-document too or just unwrap the content?

@silverwind
Copy link

silverwind commented Jan 17, 2020

Just unwrap to my understanding. Every body of a @-moz-document is put into its own "section" which finally results in a <style> tag being added to the document for each "section" if the @-moz-document conditions match the current URL.

The old and now defunct Stylish extension for Firefox did it differently, it did not unwrap as the browser supported @-moz-document natively. But to my knowledge this mechanism is no longer in use anywhere.

@silverwind
Copy link

silverwind commented Jan 17, 2020

Anyways, my point is autoprefixer should not do any special processing for @-moz-document as cutting out non-moz prefixes would be detrimental to other browsers.

@ai
Copy link
Member

ai commented Jan 20, 2020

Just unwrap to my understanding

I think we should report an issue to Stylish. It should not be just unwrapped because of the problem like this.

If Stylish developers will say that there is not any other way I can change Autoprefixer behavior for this specific case.

Anyways, my point is autoprefixer should not do any special processing for @-moz-document as cutting out non-moz prefixes would be detrimental to other browsers.

Right now Autoprefixer does not put -moz- prefixes to @-webkit-keyframes and any cases like this. To have different behavior in this case we need a good reason.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants