c9s / c6

Compile SASS Faster ! C6 is a SASS-compatible compiler
Other
431 stars 27 forks source link

built-in vendor prefix expansion #40

Open c9s opened 9 years ago

c9s commented 9 years ago
  1. Proposal 1: Reuse the interpolation to expand the properties
#{$vendor}border-radius:  3px
  1. Proposal 2: Use new symbol to expand the properties
**border-radius: 3px;
%border-radius: 3px;
&border-radius: 3px;
~border-radius: 3px;
jimmyfrasche commented 9 years ago

I don't care for either proposal.

If you're writing CSS and want to do prefixing, you want it done everywhere applicable, which means you don't want to have to specify it each time. Too easy to miss something.

Prefixing is complicated and wrought with special cases. Most can just be prepended with the browser prefix, but some require rewriting to old syntax or duplicating blocks for each prefixed selector or at-rule.

Prefixing can be done mechanically by something like https://github.com/postcss/autoprefixer after preprocessing. This solves both of the above issues.

My counter proposals would be:

Proposal 3: Do not support this. Let another tool that specializes in handling prefixing handle prefixing.

Proposal 4: Automatically prefix, with config options for people who don't need support to go back that far.

c9s commented 9 years ago

Prefixing is complicated and wrought with special cases. Most can just be prepended with the browser prefix, but some require rewriting to old syntax or duplicating blocks for each prefixed selector or at-rule.

Can you give me some example of the complicated special cases?

Proposal 3: Do not support this. Let another tool that specializes in handling prefixing handle prefixing.

C6 is the "tool" actually. the mechanism can be a plugin or a built-in. it's by design.

jimmyfrasche commented 9 years ago

Can you give me some complicated special cases?

Old and new flexbox syntax and the changes to the default of flex: that need to be taken into account to make sure the prefixed css behaves the same as the unprefixed. The various forms of gradient (especially if you want to drop down to IE filters for really old IEs). Selector and at rule prefixing where the blocks have to be copied. The readme for autoprefixer shows some of the troublesome cases. There was actually one browser that didn't recognize the boder-radius shorthand but did support the longhand

C6 is the "tool" actually. the mechanism can be a plugin or a built-in.

That was proposal 4.

My argument is that it would be better to not include it then to do so in a way that would make it easier to use a separate tool rather than having to decorate everything than needs to be prefixed by hand.