Less.js: рдЧрд╛рд░реНрдб рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЬреБрд▓ре░ 2013  ┬╖  46рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: less/less.js

.guard () when (@variable) {
  a {
    color: red;
  }
}

рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИред

<strong i="8">@variable</strong>: true;

.guard () when (@variable) {
  a {
    color: red;
  }
}

рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ:

a {
  color: red;
}
feature request low priority support as plugin

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

рдХреНрдпрд╛ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреЛрдИ рдЖрдВрджреЛрд▓рди рд╣реБрдЖ рд╣реИ? рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╕рдордп рд╕реЗ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд┐рдд рд╣реВрдВред рдлрд┐рд▓рд╣рд╛рд▓, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдХрд╛рдо рд╣реИ рдЬреЛ рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ...

p {
  & when not (@body-text-color = null) {
    color: @body-text-color;
  }
}

рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ null рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА/рд▓рдЪреАрд▓рд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЪрд░ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рднреА рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред

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

+1
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░ рд░рдВрдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ:
рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдРрдк рдХреЗ рд▓рд┐рдП рдХрдо рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐рд╕реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдореБрдЦреНрдп рдореЗрдиреВред
рдЖрдк рдЗрд╕ рдХрдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореБрдЦреНрдп рдХрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рдЖрдкрдХреЗ рдореВрд▓ рд░рдВрдЧреЛрдВ рдХреЛ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рдпрджрд┐ рдЖрдк рдореБрдЦреНрдп рдореЗрдиреВ рдХреА рдХрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрди рдореВрд▓ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЪрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореЙрдбреНрдпреВрд▓-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд░рдВрдЧреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдореЗрдиреВ рдХрдо рдлрд╝рд╛рдЗрд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ:

@menu-base-color: white;
@menu-base-color: @base-color when (@base-color);
...or...
@menu-base-color: @base-color when isset(@base-color);

+1, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА istext , isnumber рд╣реИ рдЬрд┐рд╕рдореЗрдВ isdefined рд╣реИ рдФрд░ isundefined рдХрдо рдХреЗ рд╕рд╛рде рдереАрдорд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░реЗрдЧрд╛ред

рдпрд╛рдиреА value рдпрд╛ userValue рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрджрд┐ isdefined

рдХрдо рд╕реЗ рдХрдо рдЕрд░реНрдердкреВрд░реНрдг рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдереАрдорд┐рдВрдЧ рд╕рдореНрдореЗрд▓рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕ рдкрд░ +1 - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рднреА +1

is-defined рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ v2 рдЬрд╛рд░реА рд╣реЛрддреЗ рд╣реА рдкрд╣рд▓реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рджреБрдЦрдж рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ (рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде) w/o рдЙрд╕ рддрд░рд╣ рдХреА рдХреЛрдИ рднреА рд╕реБрд╡рд┐рдзрд╛ред

@InitArt рдХрд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛:

// library.less
<strong i="9">@variable</strong>: false;

a when (@variable) {
    color: red;
}

// ......................................
// user.less
<strong i="10">@import</strong> "library.less"
<strong i="11">@variable</strong>: true;

@ nemesis13 рдХрд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛:

// library.less
@base-color: green;
@menu-base-color: @base-color;

.menu {
    background-color: @menu-base-color;
}

// ......................................
// user.less
<strong i="16">@import</strong> "library.less"
@base-color: white;
// or:
@menu-base-color: black;
// or whatever...

рдпрд╛рдиреА рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрдЬрд╛рдп рдпрджрд┐ рдПрдХ рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЙрд╕ рдЪрд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдорд╛рди рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред

рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдХреНрд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдореЗрдВ рд╣реА рд╕рд┐рд░реНрдл
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЪрд░ рдХреЛ рдКрдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛
рдЖрдпрд╛рдд рдХреЗ рдиреАрдЪреЗ? рдпрд╛ рдпрд╣ рдХреБрдЫ рдФрд░ рд╣реИ?
рд╣рдо рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдирд╣реАрдВ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
рддреНрд░реБрдЯрд┐ред рд╣рдо рдЗрд╕ рдкрд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рд╣реИ
рдЙрджреНрджреЗрд╢реНрдп рдЖрдк рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ .. рдЗрд╕рдХреЗ рд╕рд╛рде рдореЗрд░реА рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ
рд╕реБрдЭрд╛рд╡ред

рдкрд░рд┐рдгрд╛рдореА рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдереАрдо рдмрдирд╛рддреЗ рд╕рдордп рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдХреЛ рд╣реА рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВ рдФрд░ рдмрд╛рдХреА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╕реЗрдЯ рди рдХрд░реЗрдВред рдмреЗрд╢рдХ рдЙрдиреНрд╣реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрдВрддрд┐рдо рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдлреВрд▓рд╛рддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореВрд▓ рд╡рд┐рд╖рдп (рдЯреЗрдореНрдкрд▓реЗрдЯ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

.my-class {
    color: @text-color;
    background-color: @background-color;
    border-color: @border-color;
}

рд╡рд┐рд╖рдп рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реЗрд╖ рдЧреБрдгреЛрдВ рдХреЛ рдмрд┐рдирд╛ рд╕реЗрдЯ рдХрд┐рдП рдЫреЛрдбрд╝рдХрд░ рдХреЗрд╡рд▓ рдЯреЗрдХреНрд╕реНрдЯ рд░рдВрдЧ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ "рдкреНрд░рд╛рд░рдВрднрд┐рдХ", "рдкрд╛рд░рджрд░реНрд╢реА", "рд╡рд┐рд░рд╛рд╕рдд", рдЖрджрд┐ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рдЕрдВрддрд┐рдо рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рдереАрдо рдореЗрдВ рдРрд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред

@JechoJekov

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд┐рдВрджреБ рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрди рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЧрд╛рд░реНрдб рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЬреЛ рддрд░реНрдХ рдКрдкрд░ рджреЛ рдкрджреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЕрднреА рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ # 1400 рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдореВрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ "рдЫреЛрдбрд╝реЗрдВ рд╕рдВрдкрддреНрддрд┐ рдпрджрд┐ рдЙрд╕рдХреЗ рд╕рднреА рдорд╛рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рд╣реИрдВ" рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рд╣реИ рдмрдбрд╝реА рдХрд╣рд╛рдиреА)ред

@ рд╕рд╛рдд-рдЪрд░рдг-рдЕрдзрд┐рдХрддрдо

рд╢рд╛рдпрдж рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрдХ рдЪрд░ рдХреЛ "рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд" рдпрд╛ "рдЕрдирд╕реЗрдЯ" рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛред рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдВрддрд┐рдо рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@JechoJekov

рд╢рд╛рдпрдж рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрдХ рдЪрд░ рдХреЛ "рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд" рдпрд╛ "рдЕрдирд╕реЗрдЯ" рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯрд┐рдХрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЕрдкрдиреА рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рде)ред

рд░реЛрдбрдореИрдк рдХреЗ рд▓рд┐рдП рдмрд╕ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рдЗрд╕реЗ "рд░реЗрдбреАрдлреЙрд░ рдЗрдореНрдкреНрд▓рд┐рдореЗрдВрдЯреЗрд╢рди" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЖрдо рд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ рд╕реЗрд╡рди-рдлреЗрдЬ-рдореИрдХреНрд╕ рдиреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рдпрд╛ рд╣реИред @lukeapage @ рд╕рд╛рдд-рдЪрд░рдг-рдЕрдзрд┐рдХрддрдо, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@ рдореИрдереНрдпреВ-рдбреАрди рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ "рд░реЗрдбреАрдлреЙрд░рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди" рдЕрднреА рднреА рд╡реИрдз рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрдХрд╛рд░ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рддреЛ рдРрд╕реА рдЪреАрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдкреНрд░рддрд┐рд░реЛрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛" рдпрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ :)

рд╕реЛ рдХреИрд╕реЗ? (рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди)

рдореЗрд░реЗ рд▓рд┐рдП, "рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдо рд╕рд╣рдорддрд┐ рд╣реИ (рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рд╕рд░реНрд╡рд╕рдореНрдордд) рдХрд┐ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди" рдЖрдкрдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред

рд╕реНрдХреЛрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

<strong i="6">@foo</strong>: 'bar';
& { 
  // not sure if <strong i="7">@foo</strong> is defined
}

isDefined . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ

рдЬрдмрдХрд┐ is-defined рдЬреИрд╕рд╛ рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдПрдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдХреЗ рд░реВрдк рдореЗрдВ), рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдмрд╕ _always_ @foo рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (рдЬреЛ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП), рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рддреЛ рдЖрдк _can_ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

// in a far far away galaxy of your library default variables:
<strong i="8">@foo</strong>: undefined;

// the code where you need it
& when not(<strong i="9">@foo</strong> = undefined) { 
    // <strong i="10">@foo</strong> is defined by user    
}

// some user code
<strong i="11">@foo</strong>: bar;

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ (рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рддрдереНрдп рдХреЛ рдЖрд╡рд╛рдЬ рджреЗрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдХрдореА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╢реЛ-рд╕реНрдЯреЙрдкрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╣реИ рдПрдХ, рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ)ред

рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдереАрдо рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ less.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд░рди-рдЯрд╛рдЗрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ @theme рдЪрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрд▓рд╛

window.less.modifyVars({
  theme: 'someOtherValue'
})

рдореЗрд░реЗ LESS рдореЗрдВ рдореИрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ theme.less рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ

<strong i="14">@theme</strong>: undefined;

.setTheme {
  <strong i="15">@theme</strong> : 'default';
}
.setTheme;

рдореИрдВрдиреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ

<strong i="19">@theme</strong>: 'default';

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдп undefined рд╣реИ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣рдореЗрд╢рд╛ default рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА modifyVars рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдереАрдо рдбреНрд░реЙрдкрдбрд╛рдЙрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред

рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп (рдЬреЛ рд▓рд╛рдЗрд╡ рд╕рд╛рдЗрдЯ рдкрд░ рд╣реИ) рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЖрдпрд╛рдд рдкрде рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ regexp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИ, рдлрд┐рд░ рдЙрди рд╕рднреА рдЪрд░реЛрдВ рдХреЛ modifyVars рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЧрдиреНрджрд╛ рд╣реИ

@ рд╕рд╛рдд-рдЪрд░рдг-рдЕрдзрд┐рдХрддрдо рдореИрдВрдиреЗ рдЗрд╕реЗ @import рдореБрджреНрджреЛрдВ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╛рди рд▓реЗрдВ:

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ

window.less.modifyVars({
  theme: 'changedValue'
});

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ theme.less рдореЗрдВ, outer рд╕рд╣реА рдврдВрдЧ рд╕реЗ changedValue . рдкрд░ рд╕реЗрдЯ рд╣реИ

рдШрдЯрдХ рд░рд╣рд┐рдд

<strong i="17">@import</strong> 'theme.less';

рд╡рд┐рд╖рдп.рд╡рд┐рд╣реАрди

<strong i="22">@theme</strong>: 'default';
.outer {
  value: @theme; // value is set to changedValue
}

рдЗрд╕ рд╡рд┐рдлрд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдереАрдо.рд▓реЗрд╕ @theme рдореЗрдВ default рдкрд░ рд╕реЗрдЯ рд╣реИ рди рдХрд┐ changedValue рдкрд░

рдШрдЯрдХ рд░рд╣рд┐рдд

<strong i="32">@import</strong> 'theme.less';

рд╡рд┐рд╖рдп.рд╡рд┐рд╣реАрди

<strong i="37">@theme</strong>: 'default';
<strong i="38">@import</strong> "@{theme}"; // theme is set to default not changedValue

"var in mixin" рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:

// defaults:
.setTheme {
   <strong i="6">@theme</strong>: undefined;
}

// custom:
.setTheme {
  <strong i="7">@theme</strong>: 'default';
}
.setTheme;

рд╣рд╛рд▓рд╛рдВрдХрд┐ modifyVars рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдЬрдорд╛рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд▓рд┐рдП 'someOtherValue' рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ modifyVars рд╕реАрдзреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рд╛рджреЗ <strong i="14">@theme</strong>: 'someOtherValue'; рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕реЛрд░реНрд╕ рдХреЛрдб)ред рддреЛ рдЕрдЧрд░ modifyVars рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдореИрдВрдиреЗ button рдкреГрд╖реНрда рдХреЛрдб рджреЗрдЦрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рдирд╛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рд╕рдВрднрд╡рддрдГ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдореЗрдВ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ (рдпрд╛ рд╢рд╛рдпрдж рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрддрд╛) рдХреИрд╕реЗ рдХрдо рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реАрдПрд╕рдПрд╕ рдХреЛ modifyVars рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рд░рд▓ рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдпрд╣ less.refreshStyles рдХреЗ рдмрд╛рдж modifyVars less.refreshStyles рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ modifyVars )ред


рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВред, рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдХрдИ is-default рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ:

.setTheme when not(is-defined(@theme)) {
  <strong i="26">@theme</strong>: 'default';
}
.setTheme;

? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреЛрдб рд╕реАрдзреЗ рдЖрд▓рд╕реА-рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реЗрдЧрд╛ ( is-defined рдпрджрд┐ рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЭреВрдареА рд╡рд╛рдкрд╕реА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ _will_ рдЙрд╕ рджрд╛рдпрд░реЗ рдореЗрдВ рддреБрд░рдВрдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ , is-defined рдореЗрдВ рднреА рд╣реИ рд╕рдЪ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП -> рдЕрдШреБрд▓рдирд╢реАрд▓ рд░рд┐рдХрд░реНрд╕рдиред (рд╕рд╢рд░реНрдд рдЕрдирд┐рд╡рд╛рд░реНрдп-рдЬреИрд╕реЗ рдкреБрдирд░реНрд╡рд┐рддрд░рдгреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрдо # 2072 рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП)ред
рдпрд╛рдиреА рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ is-defined рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХрд░реНрд╕рди рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЬрдорд╛рдирдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ/рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рджреГрд╢реНрдпрддрд╛ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рднреА рдмрдирд╛ рд░рд╣реА рд╣реИ рдЕрдзрд┐рдХ рдЧрдбрд╝рдмрдбрд╝ред

@jlukic

<strong i="8">@theme</strong>: 'default';
<strong i="9">@import</strong> "@{theme}"; // theme is set to default not changedValue

рд╣рд╛рдВ, рдпрд╣ рдореЗрд░реЗ рд╕рдВрджреЗрд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдЕрднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рди рд╣реА рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рдВ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдпрд╛рдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЙрдкрдпреЛрдЧ рдЕрд╕рд▓реА рдХрд╛рд▓рд╛ рдЬрд╛рджреВ рд╣реИред рдореИрдВ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдмрдирд╛рдКрдВрдЧрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЬрд╛рд░реА рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ)ред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрд╕ рдЕрджреНрднреБрдд рдХрд╛рд▓реЗ рдЬрд╛рджреВ рд╕реЗ рдХреБрдЫ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИред

рдореИрдВ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрдо рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рддрдХ рдЯреЗрд╕реНрдЯ-рдХреЗрд╕ рд░реЗрдкреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рд╡рд┐рдлрд▓рддрд╛ рдЖрдпрд╛рдд рдореЗрдВ {@variable} рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдореЗрдВ рдирд╣реАрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдо рдХреЗ рд╕рд╛рде рдереАрдо рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд░рд╣реЗ рд╣реИрдВ, рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдБ рдПрдХ рдордЬреЗрджрд╛рд░ рдереАрдорд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рд╣реИ LESS рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ Meteor DevShop рдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдерд╛ (рдКрдкрд░ рджрд╛рдИрдВ рдУрд░ рдкреЗрдВрдЯрдмрдХреЗрдЯ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)

@jlukic рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ modifyVars рдЖрдпрд╛рдд рдореЗрдВ vars рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ lessc рдФрд░ less.js рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ ( рдХреЛрдбрдкреЗрди рдбреЗрдореЛ рджреЗрдЦреЗрдВ, рдпрд╣ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рдХреЛрдб рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХрд░рдирд╛ рдерд╛ рднрдпрд╛рдирдХ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ ... рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╣реИ)ред

рдореЗрд░реЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рдХрдЯ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ.. рдореБрдЭреЗ рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА

рдХреНрдпрд╛ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреЛрдИ рдЖрдВрджреЛрд▓рди рд╣реБрдЖ рд╣реИ? рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╕рдордп рд╕реЗ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд┐рдд рд╣реВрдВред рдлрд┐рд▓рд╣рд╛рд▓, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдХрд╛рдо рд╣реИ рдЬреЛ рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ...

p {
  & when not (@body-text-color = null) {
    color: @body-text-color;
  }
}

рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ null рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА/рд▓рдЪреАрд▓рд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЪрд░ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рднреА рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред

+1

рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рднреАрддрд░ is-defined(name) (рдФрд░/рдпрд╛ get-value-of(var-name, fallback-value-if-not-defined) ) рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА 15 рд╕реЗ рдХрдо рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддреЛ рдмрд╕ рдРрд╕рд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдХрд╛рдлреА рдмрд╣рд╛рджреБрд░ рд╣реИрдВред

рдЗрд╕рдХреЗ рд▓рд┐рдП +1ред рдХреНрдпрд╛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, @ рд╕рд╛рдд-рдЪрд░рдг-рдЕрдзрд┐рдХрддрдо рдЖрдк рдЕрдзрд┐рдХрд╛рдВрд╢ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдХреЛрдб рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 15 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрднреА рддрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдпрджрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 15 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрднреА рддрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ? рдЬрдм рдХреЛрдИ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рд░ рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдВрдд рдФрд░ "рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА" рд╣реЛрддреА рд╣реИ ... рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЖрдкрдХреЗ рдЕрдкрдиреЗ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛ;)

рдЖрдк рдЕрдзрд┐рдХрд╛рдВрд╢ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕реА рдФрд░ рдХреА рд░реБрдЪрд┐ рдХреЗ рдмрд╛рдж рдЕрдкрдиреА рд░реБрдЪрд┐ рдХрд╛ рдХреБрдЫ рднреА рд░рдЦрдирд╛ рд╣реИ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ (рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рджреБрд░реБрдкрдпреЛрдЧ/рдЦрд░рд╛рдм-рдХреЛрдб-рд╢реИрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ)ред

рдЦрд╛рд▓реА рдЖрд╡рд╛рдЬ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, @ashenden рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП: рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдХрд┐рд╕реА рднреА рдирд┐рдпрдо рдХреЛ "рдЕрдЬреНрдЮрд╛рдд" рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХрд╛ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рд╣реИ (рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рдорд╛рдирддреЗ рд╣реБрдП рдЬрд╣рд╛рдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдПрд╕рдПрд╕ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИ) рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдХреЗ рдмрд┐рдирд╛ "рдмреНрд▓рд╛рдЗрдВрдб-рдореВрд╡-рд╣рд░-рд╕реАрдПрд╕рдПрд╕-рд╡реИрд▓реНрдпреВ-рдЯреВ-рдП-рд╡реЗрд░рд┐рдПрдмрд▓-рдкреНрд▓рд╕-рдпреВрдЬ-рдХреБрдЫ-рджреИрдЯ-рдпреВ-рди-рдпреВрдЬ" рдХрд╛ рд╡рд┐рдЪрд╛рд░ (рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпреЛрдВ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдХрд╣рд╛рдиреА рд╣реИ рдПрдХ рд▓рдВрдмрд╛ рдмреНрд▓реЙрдЧ-рдкреЛрд╕реНрдЯ)ред

рдЖрдорддреМрд░ рдкрд░ "рд╣реБрдХ" рдирд╛рдо рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд "рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдХреЛ рддреНрдпреЛрд╣рд╛рд░ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ":

// .............................................
// base code:

p {
    & when not (is-defined(@body-text-color)) {
        color: @body-text-color;
    }
    & when not (is-defined(@body-text-color)) {
        background-color: @body-back-color;
    }
}

span {
    & when not (is-defined(@body-text-color)) {
        color: @body-text-color;
    }
    & when not (is-defined(@body-text-color)) {
        background-color: @body-back-color;
    }
}

// .............................................
// customization:

@body-back-color: blue; // how about gradient?

рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

// .............................................
// base code:

p {
    .body-text();
    .body-back();
    // ^ it's actually better to group all this into a singe entity, e.g. .p()
    // so that as you don't know WHAT or HOW to be customized
    // you don't pre-enforce any limitations and/or hardcoded approach
    // for something YOU do not even write
}

span {
    .body-text();
    .body-back();
}

.body-text() {}
.body-back() {}

// .............................................
// customization:

.body-back() {background-color: blue}

рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдЧрд┐рдиреЗрдВ, рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЧрд┐рдиреЗрдВ, рд╕реАрдорд╛рдУрдВ рдХреЛ рдЧрд┐рдиреЗрдВред
рдпрд╛рдиреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдХреБрдЫ CSS рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВ рдЬреЛ .

рджреЛрд╕реНрддреЛрдВ, рдпрд╣рд╛рдБ рдореИрдВ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдХреГрдкрдпрд╛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╡реИрдз рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдереАрдо рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

рдореЗрд░реЗ рдореВрд▓ рдРрдк рдореЗрдВ рдореИрдВ рд╡реИрд░рд┐рдПрдмрд▓ @theme : 'рдкреАрд▓рд╛' рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдо рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВред

рдФрд░ рдпрд╣рд╛рдБ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреМрди рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдо рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:

@import 'рдереАрдо/@{рдереАрдо}';

рддрди {
рдкреГрд╖реНрдарднреВрдорд┐: @ рдкреНрд░рд╛рдердорд┐рдХ рд░рдВрдЧ;
}

рдЗрд╕ рддрд░рд╣ рдореИрдВ @primaryColor : рдкреАрд▓реЗ рдФрд░ @primaryColor : red рдХреЗ рд╕рд╛рде рдпреЗрд▓реЛ.рд▓реЗрд╕ рдФрд░ рдбрд┐рдлреЙрд▓реНрдЯ.рд▓реЗрд╕ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдкреНрд░рд╛рдердорд┐рдХ рд░рдВрдЧ рдЬреИрд╕реЗ рдЕрд░реНрдердкреВрд░реНрдг рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдереАрдо рдХрд╛ рдирд╛рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛ред

рдареАрдХ рд╣реИ, рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛, рдореБрдЭреЗ рдмрд╕ рдЗрд╕ рддрд░рд╣ рдПрдХ рдЖрдпрд╛рдд рдорд┐рд╢реНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

<strong i="6">@theme</strong>: 'default';

.imports(@theme) when (<strong i="7">@theme</strong> = 'yellow') {
    <strong i="8">@import</strong> "themes/yellow";
}
.imports(@theme) when (<strong i="9">@theme</strong> = 'default') {
    <strong i="10">@import</strong> "themes/default";
}
.imports(@theme);

@waterplea рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

<strong i="7">@theme</strong>: default;

.imports(yellow) {<strong i="8">@import</strong> "themes/yellow";}
.imports(default) {<strong i="9">@import</strong> "themes/default";}
.imports(@theme);

рд╣рдЯрд╛рдП рдЧрдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЙрджреНрдзрд░рдгреЛрдВ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдХреИрд╕реЗ <strong i="13">@theme</strong>: yellow; (+ рд╕рднреА рдорд┐рд╢реНрд░рдг рдХреЛрдб) рдмреЗрд╣рддрд░ рд╣реИ рддреЛ рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯ <strong i="15">@import</strong> "themes/yellow"; рд▓рд╛рдЗрдиред рдпрд╛рдиреА рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдЖрдк рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ? рдпрд╛рдиреА рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ <strong i="18">@import</strong> "themes/default"; рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ yellow рд╕рд╛рдорд╛рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╡рд╣ рд╕рд┐рд░реНрдл рдЖрдкрдХреА рдкреАрд▓реА рдереАрдо (рдЖрдкрдХреА рдореБрдЦреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рдж рдХрд╣реАрдВ рднреА рдЖрдпрд╛рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рднреА рдпрд╣ рд╣реИ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐) рдФрд░ рд╡реЙрдпрд▓рд╛ - рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреАрд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЪрд░ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рдореИрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ рдЬреЛ рдереАрдо рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдкреНрд░реАрд╕реЗрдЯ рдереАрдо рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереАрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛ рдпрд╛ рдЬреЛ рдЖрдкрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ рд╡рд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдВрдЧреБрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдпреВрдЖрдИ рдХрд┐рдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рд╣реИред рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рдмрдЯрди рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреА рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд╕рд╛рдеред рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рд╕реЗ рдЦреБрд╢ рд╣реВрдВред

рдЖрдкрдиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рд╣реИ рд╡рд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдВрдЧреБрд▓рд░ рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИ рдХрд┐рдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рдЕрдирдВрдд рдмрд╛рд░ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рд╣реИ - рдпрд╣ рд╕рдмрд╕реЗ рджреБрдЦрдж рдХрдо (рдЧрд▓рдд) рд╕рдордЭрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рд▓реЛрдЧ рдХреЗрд╡рд▓ рдореМрд▓рд┐рдХ рдХрдо рдЖрд▓рд╕реА-рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдХрдо рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рднрд╛рд░реА рдлрд╝рд╛рдЗрд▓-рдЗрдВрдЬреЗрдХреНрд╢рди рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ- рд╕реАрдзреЗ рд╡рд┐рдкрд░реАрдд рдЪрд░ рд╢рдмреНрджрд╛рд░реНрде (рдЬреИрд╕реЗ PHP, Sass рдЖрджрд┐) рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдХреА рдЖрджрддреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдХреВрд▓рди рдкреИрдЯрд░реНрдиред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЖрджрдореА рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдЪрд┐рд▓реНрд▓рд╛рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП "рджреЛрд╕реНрддреЛрдВ, рдЖрдк рдЗрд╕реЗ рдЧрд▓рдд рдХрд░рддреЗ рд╣реИрдВ!"

рдореБрдЭреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рдореИрдВ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╕рдмрдХреБрдЫ рд╕рдордЭрддрд╛ рд╣реВрдВ :) рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЕрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░реЗрдВ? рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ рд╣реИ:

рдпрд╣рд╛рдВ рдПрдХ рдиреНрдпреВрдирддрдо рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдкреБрд╕реНрддрдХрд╛рд▓рдп:

  • рдЖрдпрд╛рдд рд░рд╣рд┐рдд
    <strong i="10">@import</strong> 'theme-default';
    <strong i="13">@import</strong> 'mixins';
  • рдорд┐рд╢реНрд░рдг рд░рд╣рд┐рдд
    some mixins here like resetting default browser button styles
  • рд╡рд┐рд╖рдп-рдбрд┐рдлрд╝реЙрд▓реНрдЯред рд░рд╣рд┐рдд
    <strong i="20">@primary</strong>: red;
    <strong i="23">@secondary</strong>: blue;
  • рд╡рд┐рд╖рдп-рдорд╛рдзреНрдпрдорд┐рдХ.рд╡рд┐рд╣реАрди
    <strong i="27">@primary</strong>: green;
    <strong i="30">@secondary</strong>: yellow;
  • рдмрдЯрдирдШрдЯрдХ
    <strong i="34">@import</strong> 'import';
    .button { color: @primary; }

рдкреНрд░реЛрдЬреЗрдХреНрдЯ 1 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдереАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП):

  • рдЕрд╡рдпрд╡
    <strong i="42">@import</strong> 'import';
    body { background: @secondary; }

рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2 (рджреНрд╡рд┐рддреАрдпрдХ рд╡рд┐рд╖рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП):

  • рдЕрд╡рдпрд╡
    <strong i="50">@import</strong> 'import';
    body { background: @secondary; }

рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдПрдХ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╕рд┐рд░реНрдл рдмрдЯрди рдШрдЯрдХ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рдЙрд╕ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдгреАрдп рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЬрд┐рд╕рдХреА рдЕрдкрдиреА рдХрдо рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЗрд╕реЗ рдмрд╛рдХреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ 1 рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2 рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 1 рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2 рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрд╛ рдХрд┐ рджреЛрдиреЛрдВ рдШрдЯрдХреЛрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рд╕ рдереАрдо рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдореБрдЭреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХреЛрдб рдХреЗ рднреАрддрд░ рд╕реЗ рдмрдЯрди рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреИрд╕реЗ import.less рд▓рд┐рдЦрд╛:
<strong i="58">@import</strong> 'theme-default';
<strong i="61">@import</strong> 'mixins';
<strong i="64">@import</strong> (optional) '~custom-theme';

рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рднреАрддрд░, рдЕрдЧрд░ рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдШрдЯрдХреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдереАрдо рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдирд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ @ рдкреНрд░рд╛рдЗрдорд░реА рдпрд╛ рд╕реЗрдХреЗрдВрдбрд░реА рдереАрдо рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
<strong i="69">@import</strong> '~myLibrary/styles/theme-secondary';

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ - рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ "рдЖрдкрдХреА рдореБрдЦреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рдж рдХрд╣реАрдВ рднреА" рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдШрдЯрдХ рдХреЛрдб рдХреЗ рдмреАрдЪ рдореЗрдВ рдЖрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рдХрд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдмрд┐рдирд╛ рд╕реНрдЯрд╛рдЗрд▓ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдВрдЧреБрд▓рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрд╛ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╕рдордЭрд╛ред

рд╕рдордЭрд╛ред рддрдм рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдмрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдореЗрдВ)ред рдЬреИрд╕реЗ рд╣реА buttonComponent (рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдШрдЯрдХ) рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, "рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди рдорд╛рд╕реНрдЯрд░" import.less рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдиреЗ рдареАрдХ рд╡рд╣реА рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рд╕реБрдЭрд╛рдпрд╛ рдерд╛ред (рдЬрдмрдХрд┐ Project 1 рдФрд░ Project 2 buttonComponent рдХреЗ рд╕рдорд╛рди рд╕реНрддрд░ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдФрд░ "рдХреБрдЫ рдФрд░" (рдпрд╛ "рдСрд▓-рдЗрди-рд╡рди"?) рдШрдЯрдХ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд╣реАрдВ рдХрд╛рдлреА "рдкреНрд░реЛрдЬреЗрдХреНрдЯ")ред

рдпрд╛рдиреА рдЗрд╕ рддрд░рд╣ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдиреЗ рдореЗрд░реЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП "рдЗрд╕реЗ рд╕рд╣реА рдХрд┐рдпрд╛"ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@ рд╕реНрдЯреЗрд▓ рдкрд┐рдВрдЧред

рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреНрд▓рдЧрдЗрди 2015 рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдХрднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рджреЛрд╖ рди рджреЗрдВ (рдпрд╣ рд╕рд┐рд░реНрдл рдПрдлрд╡рд╛рдИрдЖрдИ рд╣реИ)ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рддреЛ... рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдкрд╕ рд╕реНрдХрд┐рдореНрдб рд╣реЛ рдЧрдпрд╛ рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рдЧрд▓рдд рд╕рдордЭрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдХрдо рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ рдХрд┐ рд╡рд░реНрд░реНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╡реЗ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡рд╛рд░реНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

<strong i="7">@import</strong> "library";  // contains @library-color: blue;

@library-color: red;

.box {
  color: @library-color;
}

рдореБрдЭреЗ _Change__ рдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣реА рд╣реИред рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдПрдХ рдЪрд░ рдкрд░ рд╕реЗрдЯ рд╣реИ, рддреЛ рдмрд╕ рдЪрд░ рдХрд╛ рдорд╛рди рдмрджрд▓реЗрдВред

рдпрд╣реА рд╣реИ, рдЕрдЧрд░ library.less рдореЗрдВ рдпрд╣ рд╣реИ:

@library-color: blue;
.box {
  color: @library-color;
}

рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

<strong i="16">@import</strong> "library";
@library-color: red;

рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛:

.box {
  color: red;
}

рдХреНрдпрд╛ рдЙрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдУрдкреА рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдХреНрдпрд╛ var рдореМрдЬреВрдж рд╣реИ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдЭрдВрдбреЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕реАрдзрд╛-рдЖрдЧреЗ "рдЭреВрдард╛" рд╣реИред рдпрд╛ рдпреЛрдВ рдХрд╣реЗрдВ, рдпрд╣ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ true рд╣реА рдПрдХрдорд╛рддреНрд░ "рд╕рддреНрдп" рдорд╛рди рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рдмрдЬрд╛рдп рд╢рд┐рдХреНрд╖рд╛ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рддрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рдорд╛рди рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдХрдо v3.5 рдЕрдзрд┐рдХ рдЕрдиреБрдореЛрджрд┐рдд рд╕реМрджреЗ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧрд╛рд░реНрдб рдХреЗ рдЕрдВрджрд░ рдЪрд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдЕрдзрд┐рдХ рдЕрдиреБрдореЛрджрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП?

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рд╡реЛрдЯ рдирд╣реАрдВ рд╣реИред @the-variable: false; рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдУрдкреА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред


рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХрдо рдЧрдбрд╝рдЧрдбрд╝рд╛рд╣рдЯ рдФрд░ @ рдореБрдЭреЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдареАрдХ рд╣реИ рдмрдВрдж рдХрд░рдирд╛, рдзрдиреНрдпрд╡рд╛рдж @calvinjuarezред

рдпрд╣ рдЦреБрд▓рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдХреНрдпрд╛ рд╣реБрдЖ рд╣реИ if() рдлрд╝рдВрдХреНрд╢рдиред рддреЛ рдЖрдк color: if((@variable), green, red); рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@ рдореИрдереНрдпреВ-рдбреАрди рдЗрд╕ рдЯрд┐рдк рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ 3.0 рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдореЗрдВ if() рдХреЛ рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдиреВрдард╛ рдорд╛рдорд▓рд╛ рдерд╛ (рд▓реЗрдХрд┐рди рдХрдо рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ)ред рдлрд┐рд░ рд╕реЗ, рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреАред рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛, рдХрдо рдЯреАрдоред

@kbav рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ! рдЙрд╕ рдЯрд┐рдк рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдФрд░ рдпреБрдХреНрддрд┐: рдЬрдм if() рдкрд╣рд▓реА рдмрд╛рд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЙрд╕реЗ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ "рдПрдореНрдмреЗрдбрд┐рдВрдЧ" рдерд╛ рдЬрдм рдЧрд╛рд░реНрдб (рдЬреИрд╕рд╛ рдХрд┐, when рдХреЗ рдмрд╛рдж рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ when (@variable) рдореЗрдВ

color: if(<strong i="10">@variable</strong>, green, red);
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

bassjobsen picture bassjobsen  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

seven-phases-max picture seven-phases-max  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

renoth picture renoth  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

chricken picture chricken  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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