Libsass: рдирдИ рд╕реАрдПрд╕рдПрд╕ рдлрд┐рд▓реНрдЯрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реИрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЕрдЧре░ 2013  ┬╖  26рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sass/libsass

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб:

foo {
  -webkit-filter: grayscale(100%);
}

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде sass 3.2.10:

foo {
  -webkit-filter: grayscale(100%); }

рд▓реЗрдХрд┐рди рд▓рд┐рдмрд╛рд╕ рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд (4dd61de67aa0284cd8da1e8f13e2f6b63b990041 рд╡рд░реНрддрдорд╛рди рдореЗрдВ):

/private/tmp/test/grayscale.scss:2: error: argument `$color` of `grayscale($color)` must be a color
Backtrace:
    /private/tmp/test/grayscale.scss:2, in function `grayscale`
    /private/tmp/test/grayscale.scss:2

рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдШрд░реНрд╖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

Bug - Confirmed Dev - Test Written

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдХ рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓: рдХреЗ рдмрдЬрд╛рдп filter: invert() рдХрд╛ рдЙрдкрдпреЛрдЧ filter: #{"invert()"} ред рдЖрдк рдЬреЛ рдЪрд╛рд╣реЗрдВ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рднреАрддрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рд╢рдмреНрджрд╢рдГ рд╣реЛрдЧрд╛ред

рд╕рднреА 26 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдВ, рдореИрдВрдиреЗ рднреА рдпрд╣реА рдорд╛рд░рд╛ рд╣реИред

рдпрд╣ рднреА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рд░ рд░рд╣рд╛ рд╣реИред

: +1:

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЦрдмрд░?

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ @extend рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛!

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рднреА рд░рд╣рд╛ред

: +1:

рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ darken() рдФрд░ saturate() рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рдо рд╣реИ?

рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛, рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдмреАрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдбреНрд░реЙрдк-рдЗрди рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

<strong i="6">@function</strong> grayscale($value) {
  <strong i="7">@return</strong> #{ "grayscale(" + $value + ")" };
}

рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЙрдкрд╕рд░реНрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<strong i="11">@mixin</strong> filter($properties) {
  // Your vendor prefixing stuff here, I am using Bourbon:
  <strong i="12">@include</strong> prefixer(filter, $properties, webkit moz spec);
}

рдлрд┐рд░, рдЖрдк рдмрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

<strong i="16">@include</strong> filter(grayscale(100%));

рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдбрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ:
https://developer.mozilla.org/en-US/docs/Web/CSS/filter

@kennethormandy рдХреНрдпрд╛ рдЖрдкрдХреЛ SASS рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдо рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ?

<strong i="7">@function</strong> darken($color, $amount) {
  <strong i="8">@return</strong> #{ "darken(" + $color + "," + $amount ")" };
}

.selector {
    border: 1px solid darken(#f0f1f4, 3);
}

рдЖрдЙрдЯрдкреБрдЯ:

border: 1px solid darken(#f0f1f4,3"");

... рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ darken рдЖрдЙрдЯрдкреБрдЯ рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдирдпрд╛ рд░рдВрдЧ рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╣, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ darken() рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред @restlessdesign , рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ darken() рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рддреЛ рдмрд╕ рд▓рд┐рдЦреЗрдВ:

.selector {
    border: 1px solid darken(#f0f1f4, 3);
}

рдФрд░ рдЖрдкрдХреЛ рдорд┐рд▓реЗрдЧрд╛

.selector {
  border:1px solid #e7e9ee;
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реАрдПрд╕рдПрд╕ рдлрдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рд╛рд╕ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЬреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рд╡рд╣ рдХреЗрд╡рд▓ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ ред рдпрджрд┐ рдЖрдк Sass рдХреЗ рдбрд╛рд░реНрдХрдиреЗрд╕ рдпрд╛ рд╕реИрдЪреБрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ Sass рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ greyscale() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА рдЯреНрд░реИрдХ рдкрд░ рд╣реИрдВред CSS darken() рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рдУрд╡рд░рд╕реН рд▓рд╛рдЗрдХрд╕ 'рдмрд┐рд▓реНрдЯ-рдЗрди рдбрд╛рд░реНрдХрди рдлрд╝рдВрдХреНрд╢рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореЗрд░реА рдЧрд▓рддреАред рдореИрдВ рдШреЛрдВрд╕рд▓реЗ рддрд░реАрдХреЛрдВ рдерд╛, рдФрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ adjust_hue рдХреЗ рдмрдЬрд╛рдп adjust-hue рд╣реИ, рдЬреЛ рдореЗрдВ рд╕реЛрдкрд╛рдиреА darken() ред рдХреНрд░реВрд░, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдмрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ рдпрд╛ рдЪреБрдкрдЪрд╛рдк рдЕрдирджреЗрдЦреА рдХреЙрд▓ рдХреЗ рдмрдЬрд╛рдп рдЕрдорд╛рдиреНрдп рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛! рдЭреВрдареЗ рдЕрд▓рд╛рд░реНрдо рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

+1
рдпрджреНрдпрдкрд┐ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдзрдиреНрдпрд╡рд╛рдж @kennethormandy) рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЦрдмрд░ рд╣реИ? рдКрдкрд░ рджрд┐рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ =)

+1

+1

+1

рдзрдиреНрдпрд╡рд╛рдж @kennethormandy рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП

+1ред рд╡реИрд╕реЗ: рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @kennethormandy ред

рдмрд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ (рдФрд░ рдмрдВрдж) рдЦреЛрд▓рд╛ред рдпрд╣ рд╕рд╛рдл рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдУрд╡рд░рд▓реИрдк рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдХреА рдПрдХ рдореМрд▓рд┐рдХ рдкрд╛рд░реА рд╣реИред

рд╣рд╛рдБ @kennethormandy , рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ grayscale() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдмреЗрдХрд╛рд░ рд╣реИ! рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдкрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рдЖ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓: рдХреЗ рдмрдЬрд╛рдп filter: invert() рдХрд╛ рдЙрдкрдпреЛрдЧ filter: #{"invert()"} ред рдЖрдк рдЬреЛ рдЪрд╛рд╣реЗрдВ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рднреАрддрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рд╢рдмреНрджрд╢рдГ рд╣реЛрдЧрд╛ред

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рджреЗрдЦрдиреЗ рджреЛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ 3.0 рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╢реБрдХреНрд░рд┐рдпрд╛ @tamlyn! рдореИрдВ рд╕реНрдХрд╛рдЙрдЯ.рдПрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднреА рднреА рд╕реИрд╕ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рддреЗрдЬ, рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИред

@ рдлрд╝рд┐рд▓реНрдЯрд░ рдлрд╝рд┐рд▓реНрдЯрд░ ($ рдлрд╝рд┐рд▓реНрдЯрд░, $ рдореВрд▓реНрдп) {
@ рдЧреНрд░реЗрдЯ # {$ рдлрд╝рд┐рд▓реНрдЯрд░} # {"(" + $ рдореВрд▓реНрдп + ")"}
}

рдЙрдкрд╕рд░реНрдЧреЛрдВ $:
"-Webkit-",
"-Moz-",
"-рдПрдордПрд╕-",
"-O-",
рд╢реВрдиреНрдп;

@mixin рдЙрдкрд╕рд░реНрдЧрдХрд░реНрддрд╛ ($ рд╕рдВрдкрддреНрддрд┐, $ рдореВрд▓реНрдп) {
@ $ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдореЗрдВ $ рдЙрдкрд╕рд░реНрдЧ {
{{$ рдЙрдкрд╕рд░реНрдЧ} # {$ рд╕рдВрдкрддреНрддрд┐}: $ рдореВрд▓реНрдп;
}
}

@restlessdesign рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдпрд╣ рдмрд╣реБрдд рджреЗрд░ рд╕реЗ рдкрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдмрд╕ рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдореЗрд░рд╛ рдХрд╛рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдлрдВрдХреНрд╢рди рдХреЛ рдХреЛрдЯ рдХрд░рдирд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рдЙрд╕ рдкрд░ unquote () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛:
* { filter: unquote("filter-function(values)") }

рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

JohnMica picture JohnMica  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

c0d3xpl0it picture c0d3xpl0it  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

holmesmr picture holmesmr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xzyfer picture xzyfer  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AlexisVK picture AlexisVK  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ