ΠœΠΈΠΊΡΠΈΠ½Ρ‹ css: Π Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎΠ΅ руководство ΠΏΠΎ Sass/SCSS

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… | ДокумСнтация ΠΏΠΎ Sass Π½Π° русском языкС

Иногда ΠΈΠΌΠ΅Π΅Ρ‚ смысл миксину ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ нСизвСстноС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². НапримСр, миксин для создания Ρ‚Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ любоС количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Π΅Π½ΠΈ. Для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуаций Sass ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²» — это Ρ‚Π°ΠΊΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ послСдними Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ миксин, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ… Π² список. Π­Ρ‚ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ выглядят ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅, Π½ΠΎ послС Π½ΠΈΡ… слСдуСт ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅. НапримСр:

scss

@mixin box-shadow($shadows.
..) { -moz-box-shadow: $shadows; -webkit-box-shadow: $shadows; box-shadow: $shadows; } .shadows { @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999); }
@mixin box-shadow($shadows...)
  -moz-box-shadow: $shadows
  -webkit-box-shadow: $shadows
  box-shadow: $shadows

.shadows
  @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999)

css

.shadows {
  -moz-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
  -webkit-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
  box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
}

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ содСрТат Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ миксин. К Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

keywords($args), которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… ΠΊΠ°ΠΊ соотвСтствиС ΠΈΠΌΡ‘Π½ (Π±Π΅Π· Π·Π½Π°ΠΊΠ° $) значСниям.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² миксинах. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ синтаксис, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ каТдая ΠΏΠ°Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. НапримСр:

scss

@mixin colors($text, $background, $border) {
  color: $text;
  background-color: $background;
  border-color: $border;
}

$values: #ff0000, #00ff00, #0000ff;
.primary {
  @include colors($values...);
}

$value-map: (text: #00ff00, background: #0000ff, border: #ff0000);
.secondary {
  @include colors($value-map...);
}
@mixin colors($text, $background, $border)
  color: $text
  background-color: $background
  border-color: $border

$values: #ff0000, #00ff00, #0000ff
. primary
  @include colors($values...)

$value-map: (text: #00ff00, background: #0000ff, border: #ff0000)
.secondary
  @include colors($value-map...)

css

.primary {
  color: #ff0000;
  background-color: #00ff00;
  border-color: #0000ff;
}

.secondary {
  color: #00ff00;
  background-color: #0000ff;
  border-color: #ff0000;
}

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΊΠ°Ρ€Ρ‚Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли список пСрСдаётся ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΠ°ΠΏΠΎΠΌ, ΠΊΠ°ΠΊ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: @include colors($values..., $map...).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ миксин ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ стили, Π½Π΅ мСняя сигнатуру Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² этого миксина. Если Π²Ρ‹ это сдСлаСтС, Ρ‚ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² ΠΎΠ±Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ миксин:

scss

@mixin wrapped-stylish-mixin($args...) {
  font-weight: bold;
  @include stylish-mixin($args...);
}

.stylish {
  
  @include wrapped-stylish-mixin(#00ff00, $width: 100px);
}
@mixin wrapped-stylish-mixin($args...)
  font-weight: bold
  @include stylish-mixin($args...)

.stylish
  
  @include wrapped-stylish-mixin(#00ff00, $width: 100px)

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ LESS.

Π‘Ρ‚Π°Ρ‚ΡŒΡ «ΠœΠΈΠΊΡΠΈΠ½Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ»

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ с Π’Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ примСси ΠΈ научимся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… вмСстС с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ), это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π’Π°ΠΌ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство ΠΊΠΎΠ΄Π° ΠΈ ускорит процСсс вСрстки Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π·Π° счСт ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования, созданных Π’Π°ΠΌΠΈ примСсСй для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π·Π°Π΄Π°Ρ‡.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² миксины

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ научимся с Π’Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ миксины Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΡ‹ смоТСм ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния Ρ†Π²Π΅Ρ‚Π°, ΡˆΠΈΡ€ΠΈΠ½Ρ‹, высоты элСмСнтов, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π½Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств. Если Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с использованиСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² LESS, Ρ‚ΠΎ для Вас Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π° ΠΏΠΎΠ½ΡΡ‚ΡŒ этот простой синтаксис.

Для создания примСси с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… скобках имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости (доступна Π²Π½ΡƒΡ‚Ρ€ΠΈ примСси), ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ) Π΅Ρ‘ Π² качСствС значСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ свойства. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

. blur(@length) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ
	-webkit-filter: blur(
@length
); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² качСствС значСния свойства filter: blur(@length); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² качСствС значСния свойства } .my-element { width: 50px; height: 50px; .blur(5px); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° }

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ выступаСт Π² качСствС значСния радиуса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° (эффСкта) размытия изобраТСния CSS свойства filter. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΌΡ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ создали свойство с индСксом производитСля -webkit-.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	width: 50px;
	height: 50px;
	-webkit-filter: blur(5px);  
	filter: blur(5px); // радиус эффСкта размытия изобраТСния 
}

ЗначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ полСзная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ парамСтричСских примСсСй Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² возмоТности ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ значСния для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ написании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

.blur(@length:5px) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎΠ΅ 5 пиксСлям
	-webkit-filter: blur(@length); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² качСствС значСния свойства
	filter: blur(@length); // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² качСствС значСния свойства
}
.my-element {
	width: 50px;
	height: 50px;
	.blur(); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°
}
.my-another-element {
	width: 50px;
	height: 50px;
	.blur(10px); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ c ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ
}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ смотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ элСмСнта с классом my-element ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства послС компиляции Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 5 пиксСлям, ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² качСствС значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ с классом

my-another-element ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС использовано Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	width: 50px;
	height: 50px;
	-webkit-filter: blur(5px);  
	filter: blur(5px); // радиус эффСкта размытия изобраТСния 
}
.my-another-element {
	width: 50px;
	height: 50px;
	-webkit-filter: blur(10px);  
	filter: blur(10px); // радиус эффСкта размытия изобраТСния 
}

ΠœΠΈΠΊΡΠΈΠ½Ρ‹ с нСсколькими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ использованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² примСси, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ это ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ значСния для Ρ€Π°Π·Π½Ρ‹Ρ… свойств Π² ΠΎΠ΄Π½ΠΎΠΉ примСси. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ CSS свойства прСдусмотрСна запятая, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² примСси, компилятор Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ провСсти ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, это ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ экранированиС, Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой послС значСния (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚):

.myMixin(~'10px, 10px')
.myMixin(10px, 10px;) // Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

Для создания примСси с нСсколькими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой. ΠžΠ±Ρ€Π°Ρ‰Π°ΡŽ Π’Π°ΡˆΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой, это связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ символ запятая ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ компилятором ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² примСси, ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ значСния CSS свойства.

НиТС прСдставлСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈ объявлСния примСсСй:

.myMixin(1, 2, 3; something, else) // Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… содСрТит список, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запятыми 
.myMixin(1, 2
, 3) // Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… содСрТит ΠΎΠ΄Π½ΠΎ число .myMixin(1, 2, 3;) // ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, пСрСчислСнноС Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ (Ρ‚ΠΎΡ‡ΠΊΠ° с запятой ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°, ΠΈΠ½Π°Ρ‡Π΅ интСрпритируСтся ΠΊΠ°ΠΊ Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°) .myMixin(@param1: red, blue;) // ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, пСрСчислСнноС Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ .myMixin(@param1: red, blue; @param2: 10, 20;) // Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, пСрСчислСнноС Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ создадим ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ выступят Π² качСствС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ прСобразования ΠΏΡƒΡ‚Π΅ΠΌ Π½Π°ΠΊΠ»ΠΎΠ½Π° элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ осСй X ΠΈ Y CSS свойства transform:

. skew (@x-angle; @y-angle:0) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎΠ΅ 0 
	webkit-transform: skew(@x-angle, @y-angle);
	moz-transform: skew(@x-angle, @y-angle);
	ms-transform: skew(@x-angle, @y-angle);
	-o-transform: skew(@x-angle, @y-angle);
	transform: skew(@x-angle, @y-angle);
}
.my-element {
	width: 50px;
	height: 50px;
	.skew(-10deg; 10deg); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ c Π΄Π²ΡƒΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}
.my-another-element {
	width: 50px;
	height: 50px;
	.skew(10deg); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ c ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ
}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	width: 50px;
	height: 50px;
	webkit-transform: skew(-10deg, 10deg);
	moz-transform: skew(-10deg, 10deg);
	ms-transform: skew(-10deg, 10deg);
	-o-transform: skew(-10deg, 10deg);
	transform: skew(-10deg, 10deg); // Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ Π½Π°ΠΊΠ»ΠΎΠ½Π° элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ осСй X ΠΈ Y
}
. my-another-element {
	width: 50px;
	height: 50px;
	webkit-transform: skew(10deg, 0);
	moz-transform: skew(10deg, 0);
	ms-transform: skew(10deg, 0);
	-o-transform: skew(10deg, 0);
	transform: skew(10deg, 0); // Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ Π½Π°ΠΊΠ»ΠΎΠ½Π° элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ осСй X ΠΈ Y
}

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… примСсСй

Если Π²Ρ‹ создадитС примСси с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ содСрТаниСм, Ρ‚ΠΎ Π² этом случаС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ объСдинСниС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… свойств:

.mixin(@color) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ
	color: @color;
}
.mixin(@color; @padding: 2px) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎΠ΅ 2px 
	color: @color;
	padding: @padding;
}
.mixin(@color; @padding; @margin:2px) {  // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎΠ΅ 2px
	color: @color;
	padding: @padding;
	margin: @margin;
}
.my-element {
	. mixin(#000); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ c ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ
}
.my-another-element {
	.mixin(#000; 2px); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}

ΠžΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ примСси ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ примСси Π² зависимости ΠΎΡ‚ количСства ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²), это с ΠΎΠ΄Π½ΠΎΠΉ стороны Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ возмоТности ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмым ошибкам, поэтому ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ этой Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ LESS ΠΎΠ±Π΄ΡƒΠΌΠ°Π½Π½ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π° ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ, которая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС это пСрвая ΠΈ вторая ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ всС Ρ‚Ρ€ΠΈ. ΠœΡ‹ Π΅Ρ‰Π΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π² этом ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ созданию ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… примСсСй, рассмотрим Π½Π΅ΠΊΠΎΡ‚Ρ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	color: #000;
	padding: 2px;
}
.my-another-element {
	color: #000;
	padding: 2px;
	margin: 2px;
}

Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ примСси допускаСтся ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ порядок слСдования ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ создании этой примСси. Для этого достаточно ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ примСси ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ вмСстС со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ имя ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

.myMixin(@color: #fff; @width: 100px; @height: 50px) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
	color: @color;
	width: @width;
	height: @height;
}
.my-element {
	.myMixin(@width: 100%; @height: 100%) // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}
.my-another-element {
	.myMixin(#000; @height: 20px) // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, всС эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для элСмСнта с классом .my-element ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, указывая Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ высоты. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ вмСстС с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΈ имя свойства для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ установлСно. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ с классом .my-another-element ΠΌΡ‹ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Π·Π°Π΄Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ тСкста ΠΈ высоту, вызывая ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	color: #fff;
	width: 100%;
	height: 100%;
}
.my-another-element {
	color: #000;
	width: 100px;
	height: 20px;
}

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ @arguments

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ @arguments Π² LESS ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ примСсСй, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ вызываСтся, Ρ‚ΠΎ пСрСмСнная @arguments Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ значСния. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π’Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

.orangeShadow(@h-shadow:0; @v-shadow:0; @blur-radius:3px; @color: orange) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
	text-shadow: @arguments;
}
.my-element {
	.orangeShadow(2px; 3px) // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}
. my-another-element {
	.orangeShadow(-2px; 3px; @color:red) // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ, которая Π² качСствС значСния свойства text-shadow устанавливаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ @arguments, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ значСния. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄Π²Π° значСния, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ‚Ρ€ΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	text-shadow: 2px 3px 3px orange;
}
.my-another-element {
	text-shadow: -2px 3px 3px red;
}

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ @rest ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ @rest… Π² LESS позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ компилятору Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ компилятору, щас Ρ‚ΡƒΡ‚ Π΅Ρ‰Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Ρ‹ Ρ‚Π°ΠΌ сам ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡΡŒ, это всС Ρ‚Π΅Π±Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ собираСт значСния всСх ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎ ΠΈ устанавливаСт Π² качСствС значСния. Магия здСсь Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² использовании ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π² использовании троСточия, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ имя

.mixin(@color: #000; @shadow...) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
	color: @color;
	text-shadow: @shadow;
}
.my-element {
	.mixin(red; -2px; 3px; 1px; #777) // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с ΠΏΡΡ‚ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ, которая Π² качСствС значСния свойства text-shadow устанавливаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ @rest…. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ примСси ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² Π½Π΅Ρ‘ 5 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ установлСн для свойства color, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ благодаря ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ @rest… Π±ΡƒΠ΄ΡƒΡ‚ установлСны Π² качСствС значСния свойства text-shadow.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	color: red;
	text-shadow: -2px 3px 1px #777;
}

ДопускаСтся ΠΏΡ€ΠΈ использовании троСточия Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… миксин, Π³Π΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ установлСно для свойств рассчитываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, написанной Π½Π° языкС программирования JavaScript, ΠΊ этому ΠΌΡ‹ с Π’Π°ΠΌΠΈ Π΅Ρ‰Π΅ вСрнСмся Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования:

.mixin(...) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ 0 Π΄ΠΎ N
	border: @arguments; // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ всСх Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ @arguments
}
.anotherMixin(@color, ...) { // создаСм ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с  количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ 1 Π΄ΠΎ N
	color: @color;
	border: @arguments; // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ всСх Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ @arguments
}

.my-element {
	.mixin(1px; solid; green) // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}
.my-another-element {
	.anotherMixin(red; 1px; solid) // Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали Π΄Π²Π΅ примСси, пСрвая ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ @arguments ΠΌΡ‹ устанавливаСм всС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ свойству border.

Вторая ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ количСства Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ @color ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ свойства color. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹, Π±ΡƒΠ΄ΡƒΡ‚ установлСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ @arguments свойству color.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

.my-element {
	border: 1px solid green;
}
.my-another-element {
	color: red;
	border: red 1px solid;
}

ΠœΡ‹ с Π’Π°ΠΌΠΈ рассмотрСли основныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с примСсями, Π½ΠΎ это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Π½Π°ΠΌ мСтаязык LESS для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ, Π΄Π°Π»Π΅Π΅ Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ ΠΌΡ‹ вСрнСмся ΠΊ ΠΈΡ… ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ.

9 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Mixin для Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ² Sass Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Sass Π² своСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ миксинов. Когда Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ написаны ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² CSS, Π²ΠΎΡ‚ Π³Π΄Π΅ миксины ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Миксин содСрТит CSS-объявлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° своСм сайтС.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ мноТСство миксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Sass Π² вашСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π² CSS. ΠžΡ‚ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΊ нСскольким Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌ Π΄ΠΎ создания ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ эффСктов ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° – Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ это ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… 11 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… миксинов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Sass.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅: простоС ΠΈ понятноС руководство ΠΏΠΎ пониманию Sass

  1. Π‘ΡƒΡ€Π±ΠΎΠ½
    Π±ΡƒΡ€Π±ΠΎΠ½ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Sass, которая содСрТит миксины, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ дополнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ созданиС Ρ‚Π°Π±Π»ΠΈΡ† стилСй для кросс-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠ³ΠΎ использования. Для мСня это самый ΠΈΠ·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ миксин Sass. Он содСрТит ΠΏΠΎΡ‡Ρ‚ΠΈ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ для стилизации вашСго сайта, сохраняя ΠΏΡ€ΠΈ этом Π²Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй Π»Π΅Π³ΠΊΠΈΠΌ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ полная докумСнтация ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ доступный миксин ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

2. Sass CSS3 Mixins
Sass CSS3 Mixins ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ миксины, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ мноТСство Π»ΡƒΡ‡ΡˆΠΈΡ… миксов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΠΎΠ½, Ρ€Π°ΠΌΠΊΠ°, Ρ€Π°ΠΌΠΊΠ°, столбСц, ΡˆΡ€ΠΈΡ„Ρ‚, трансформация, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈ анимация. Π­Ρ‚ΠΎΠ³ΠΎ достаточно для Π²Π°ΡˆΠΈΡ… потрСбностСй Π² ΡƒΠΊΠ»Π°Π΄ΠΊΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ css3-mixins.scss ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ mixin Π² своСм классС CSS.

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ этот миксин Π’ΠΎΡ‚,

3. CssOwl
CssOwl прСдоставляСт ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ миксины для установки полоТСния элСмСнта (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ) ΠΈ добавлСния содСрТимого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ псСвдо-сСлСктора (: after ΠΈ: before). Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ элСмСнты спрайта: миксин Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ изобраТСния Π² вашСм спрайтС. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Sass доступна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° смСшивания CssOwl для LESS ΠΈ Stylus.
4. Π’ΠΎΡ‡ΠΊΠ° останова Sass
Ρ‚ΠΎΡ‡ΠΊΠ° остановки ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°-запросы Ρ‡Π΅Ρ€Π΅Π· Sass простым способом. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠΌ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ мСдиазапросов. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ созданная Π²Π°ΠΌΠΈ пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ осмыслСнноС имя, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΅ для использования Π² Sass.
5. Scut
ΠΏΠΎΠ΄Π»Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ содСрТит Π½Π°Π±ΠΎΡ€ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… миксинов, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π΅ΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Sass, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠ΄Π° стиля. Он прСдоставляСт ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ΄ для создания Π²Π΅Π±-ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ страниц ΠΈ стилизация ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ Ρ‡Π°Ρ‰Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, помогая Π²Π°ΠΌ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π² процСссС.


6. Π¨Π°Ρ„Ρ€Π°Π½
Π‘ Π¨Π°Ρ„Ρ€Π°Π½Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ CSS3. Доступны дСсятки Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС постСпСнноС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ / ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅, скольТСниС / ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ / ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ эффСкты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ встряхиваниС, ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠ΅, отскок ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Saffron, просто Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ миксин Π² объявлСниС Sass ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ имя эффСкта Π²Π½ΡƒΡ‚Ρ€ΠΈ вашСго класса CSS. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Saffron, установив Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Bower ΠΈΠ»ΠΈ Gem, ΠΈΠ»ΠΈ просто Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ с Github.
7. Настройки Ρ‚ΠΈΠΏΠ°
TypeSettings Ρ‚ΠΈΠΏ инструмСнтария для Sass. Он установит Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ em (вмСсто rems ΠΈΠ»ΠΈ пиксСлСй), Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€ΠΈΡ‚ΠΌ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот с Bower, ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎ. Для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π³ΠΎ страница,

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅: взгляд Π² CSS-Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ – пиксСли, EM, ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚

8. Sass Line
Sass Line это миксин Sass, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ³Ρ€Π°Ρ„ΠΈΠΊΡƒ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ rems unit Π² вашСм ΡˆΡ€ΠΈΡ„Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠΉ сСтки. Sass Line ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€ΠΈΡ‚ΠΌ основанный Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΉ сСткС, ΠΈ позволяСт Π²Π°ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ ΡˆΠΊΠ°Π»Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π°ΡˆΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ останова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ Π²ΠΎ всСх аспСктах вашСго сайта.

Π˜Π΄Ρ‚ΠΈ Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
9. Andy.scss
Andy.scss это коллСкция ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… миксов Sass, созданная, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ внСшний Π²ΠΈΠ΄ Π²Π΅Π±-сайта ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΈΠΌ. Доступны дСсятки миксов Sass, ΠΎΡ‚ Ρ„ΠΎΠ½ΠΎΠ² Π΄ΠΎ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΠΎΡ‡Ρ‚ΠΈ всС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ свойства CSS описаны здСсь. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ это Π² Github,
Π•Ρ‰Π΅ сообщСния Π½Π° Sass:

Руководство ΠΏΠΎ SASS для Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ: The Absolute Beginner’s Guide to Sass.
Автор: Andrew Chalkley.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SASS?

SASS являСтся Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΎΡ‚ Syntactically Awesome Stylesheets β€” мСтаязык Π½Π° основС CSS, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти ΠΊΠ°ΠΊ Β«CSS c прСвосходным синтаксисом», Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π₯Π΅ΠΌΠΏΡ‚ΠΎΠ½ΠΎΠΌ ΠšΡΡ‚Π»ΠΈΠ½ΠΎΠΌ (Hampton Catlin).

Он являСтся срСдством упрощСния процСсса формирования CSS стилСй, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ обслуТивания ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π»ΠΈ Π²Π°ΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, угоТдая ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π½Π΅Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ просмотром всСго содСрТимого Ρ„Π°ΠΉΠ»Π° стилСй для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ‹ΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ HEX-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° с Ρ†Π΅Π»ΡŒΡŽ Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅? Или ΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ всСгда находящСмуся ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ-ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ для ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ шаблона?

Π’ распоряТСнии SASS ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ срСдства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ избавят вас ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€ΡƒΡ‚ΠΈΠ½Ρ‹. К Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, миксины, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ наслСдованиС сСлСкторов.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΊΠΎΠ΄ SASS ΠΏΠΎΡ…ΠΎΠΆ Π½Π° CSS, Π½ΠΎ основной ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ, которая сразу ΠΆΠ΅ бросаСтся Π² Π³Π»Π°Π·Π° являСтся отсутствиС Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ свойство-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ CSS ΠΊΠΎΠ΄Π°:

#skyscraper_ad
{
display: block;
width: 120px;
height: 600px;
}

#leaderboard_ad
{
display: block;
width: 728px;
height: 90px;
}

ΠšΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ эквивалСнтСн Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΌΡƒ SASS:

#skyscraper_ad
display: block
width: 120px
height: 600px

#leaderboard_ad
display: block
width: 728px
height: 90px

Π’ SASS для обозначСния влоТСнности Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» (отступ Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки) Ρ€Π°Π²Π½Ρ‹ΠΉ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ. ()

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, имСя прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ создаСтся SASS ΠΊΠΎΠ΄, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ‚Π΅ вопросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠΌ прСвосходным.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π’ SASS для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символ Π΄ΠΎΠ»Π»Π°Ρ€Π° $. И Ссли имя вашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, допустим, red, Ρ‚ΠΎ послС двоСточия ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π΅ΠΉ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

$red: #FF4848

Π’ SASS прСдусмотрСны встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° darken ΠΈ lighten, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для модифицирования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’Π°ΠΊ, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠΆΠ΅ красным, Π½ΠΎ Ρ‚Π΅ΠΌΠ½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² h2 Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ…:

$red: #FF4848
$fontsize: 12px
h2
color: $red

p
color: darken($red, 10%)

Π‘ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ арифмСтичСскиС дСйствия, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для этого значСния ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Если, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π΅ΠΌΠ½Ρ‹ΠΉ ΠΎΡ‚Ρ‚Π΅Π½ΠΎΠΊ, Ρ‚ΠΎ всС Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ ΠΈΠ· ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΊΠΎΠ΄Π΅ значСния Ρ†Π²Π΅Ρ‚Π°, хранящСгося Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, нСбольшоС ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ HEX-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅, скаТСм, #101. Π­Ρ‚ΠΎ ΠΆΠ΅ касаСтся ΠΈ случая, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°, допустим, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π½Π° 10 пиксСлСй, для этого ΠΌΡ‹ просто прибавляСм Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ пиксСли:

p.addition_and_subtraction
color: $red β€” #101
font-size: $fontsize + 10px

Π’Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ.

Π’ SASS Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ².

Π’Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ сСлСкторов.

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ влоТСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ схоТ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для структурирования HTML ΠΊΠΎΠ΄Π°:

$fontsize: 12px

.speaker
.name
font:
weight: bold
size: $fontsize + 10px
.position
font:
size: $fontsize

Если Π²Ρ‹ взглянитС Π½Π° сгСнСрированный Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ CSS ΠΊΠΎΠ΄, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ излишни. ΠŸΡƒΡ‚Π΅ΠΌ влоТСнности класса .name Π² класс .speaker () создаСтся CSS сСлСктор .speaker.name. Π­Ρ‚ΠΎ ΠΆΠ΅ касаСтся ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса .position, располоТСнного послС дСкларирования свойств для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ сСлСктора, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ влоТСнности ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ образуСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСлСктор .speaker.position:

.speaker.name {
font-weight: bold;
font-size: 22px; }
.speaker.position {
font-size: 12px; }

Π’Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ свойств.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΈΠΏ влоТСнности позволяСт ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свойства с ΠΎΠ΄Π½ΠΈΠΌ прСфиксом ():

$fontsize: 12px

.speaker
.name
font:
weight: bold
size: $fontsize + 10px
.position
font:
size: $fontsize

Π’ прСдставлСнном Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ объявлСниС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ свойства font: ΠΈ Π΄Π°Π»Π΅Π΅ Π½Π° Π½ΠΎΠ²ΠΎΠΉ строкС послС Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ отступа ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ свойства, которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находится послС дСфиса.

Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ свойство font:, Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС послС Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² свойство weight:, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡƒ Π½Π°ΠΌ свойству font-weight.

.speaker.name {
font-weight: bold;
font-size: 22px; }
.speaker.position {
font-size: 12px; }

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ обСспСчиваСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° всСх дСфис-содСрТащих свойств.

Π’Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ являСтся Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ способом ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ структурирования вашСго CSS ΠΊΠΎΠ΄Π° ΠΈ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ повторСния. ().

ΠœΠΈΠΊΡΠΈΠ½Ρ‹.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ прСкрасной Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ SASS ΡΠ²Π»ΡΡŽΡ‚ΡΡ миксины.

ΠœΠΈΠΊΡΠΈΠ½Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ SASS ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΈ нСобходимости Π΄Π°ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. И Ρ‡Ρ‚ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΎ, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… исходныС значСния.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ миксин ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² SASS ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово @mixin, Π° послС Π½Π΅Π³ΠΎ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π²Π°ΠΌΠΈ имя миксина. Если Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, Ρ‚ΠΎ пСрСчислитС ΠΈΡ… Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках. ЗначСния, устанавливаСмыС для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ миксина Ρ‡Π΅Ρ€Π΅Π· Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅. ()

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° использования миксинов ΠΎΡ‡Π΅Π½ΡŒ проста – послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова @include ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ имя Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ миксина ΠΈ пСрСчислитС Π² скобках Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ.

ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

@mixin border-radius($amount: 5px) /* опрСдСляСм миксин */
-moz-border-radius: $amount
-webkit-border-radius: $amount
border-radius: $amount

h2 /* ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ миксин */
@include border-radius(2px)

.speaker
@include border-radius

Π­Ρ‚ΠΎΡ‚ SASS послС компиляции Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² прСдставлСнный Π½ΠΈΠΆΠ΅ CSS ΠΊΠΎΠ΄:

h2 {
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2x; }

.speaker {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px; }

Для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° h2 ΠΌΡ‹ явно ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ радиуса закруглСния ΡƒΠ³Π»ΠΎΠ² Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, Π½ΠΎ для элСмСнта с ΠΈΠΌΠ΅Π½Π΅ΠΌ класса .speaker ΠΌΡ‹ этого Π½Π΅ Π΄Π΅Π»Π°Π»ΠΈ, поэтому Π±Ρ‹Π»ΠΎ взято Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5px.

НаслСдованиС сСлСкторов.

Π”Ρ€ΡƒΠ³ΠΎΠΉ прСвосходной ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ SASS синтаксиса являСтся ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ сСлСкторов Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всС стили, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ для Π΄Ρ€ΡƒΠ³ΠΈΡ… сСлСкторов. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово @extend, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ сСлСктор, всС свойства ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ:

h2
border: 4px solid #ff9aa9

.speaker
@extend h2
border-width: 2px

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ скомпилировано Π²:

h2,.speaker {
border: 4px solid #ff9aa9; }

.speaker {
border-width: 2px; }

()

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ SASS Π² дСйствии.
Онлайн.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с SASS ΠΎΠ½Π»Π°ΠΉΠ½ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ установки модуля Π½Π° свой Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

Но Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π² Π½ΠΈΠΆΠ½Π΅ΠΉ области страницы Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Β«Indented SyntaxΒ».

Установив Π½Π° ПК.

Π‘Π°ΠΌ SASS являСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (gem) ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ruby. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π΅Π³ΠΎ установки Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ инсталляции самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² этого языка программирования RubyGems Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ установки самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π² консоли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

gem install sass

SASS ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΊΠ°ΠΊ инструмСнт конвСртирования Π²Π°ΡˆΠΈΡ… SASS Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ„Π°ΠΉΠ»Ρ‹ CSS Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ввСдя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

sass ––watch sass_folder:stylesheets_folder

Π“Π΄Π΅ sass_folder β€” это ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, содСрТащСй SASS Ρ„Π°ΠΉΠ»Ρ‹ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.sass), Π° stylesheets_folder β€” ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ послС компиляции, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ CSS Ρ„Π°ΠΉΠ»Ρ‹. Команда ––watch сообщаСт ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ (watch) Π·Π° Π»ΡŽΠ±Ρ‹ΠΌΠΈ измСнСниями Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΈ Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ, Ρ‚ΠΎ послС ΠΈΡ… сохранСния ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходныС.sass Ρ„Π°ΠΉΠ»Ρ‹ Π² эквивалСнтныС ΠΈΠΌ.css Ρ„Π°ΠΉΠ»Ρ‹.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ CSS Π² SASS.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ использованиС SASS с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ сконвСртируСтС стили, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² своих ΡƒΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π² этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ «sass-convert».

Для этого Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅, содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (). ПослС Ρ‡Π΅Π³ΠΎ запуститС ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΈ сообщитС Π΅ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

sass-convert ––from css ––to sass –R.

Π“Π΄Π΅ Ρ„Π»Π°Π³ -R Π·Π°Π΄Π°Π΅Ρ‚ рСкурсивный способ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. А ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π° Π½ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΠ° . ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ.sass Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ()

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ Sassy CSS (SCSS).

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис β€” SASS Indented Syntax. () Но ΠΏΠΎΠΌΠΈΠΌΠΎ этого сущСствуСт Π±ΠΎΠ»Π΅Π΅ новая Π΅Π³ΠΎ вСрсия, называСмая SCSS ΠΈΠ»ΠΈ Sassy CSS (). Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя этими вСрсиями Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Sassy CSS максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ ΠΊ CSS, являясь Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΎ Π² Ρ‚ΠΎΠΆΠ΅ врСмя ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми прСимущСствами Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии SASS β€” Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, миксинов, влоТСнностСй ΠΈ наслСдования сСлСкторов. Π€Π°ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ сходства ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ Π² Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠΈ Β«SassyΒ» ().

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

SASS Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ структурированный ΠΈ Π½Π΅ содСрТащий ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ, DRY ΠΊΠΎΠ΄. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Compass, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅ΠΉ возмоТности SASS Π·Π° счСт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ возмоТностСй Π΄Ρ€ΡƒΠ³ΠΈΡ… CSS Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² посрСдством миксинов. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ «засорСния» вашСго Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ HTML ΠΊΠΎΠ΄Π° нСсСмантичСскими классами.

Π’Π°ΠΊ Ρ‡Π΅Π³ΠΎ ΠΆΠ΅ Π²Ρ‹ ΠΆΠ΄Π΅Ρ‚Π΅? ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ SASS ΡƒΠΆΠ΅ начиная со своСго ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°!

Post Views: 1Β 407

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ @include ΠΏΡ€ΠΎΡ‚ΠΈΠ² @extend Π² Sass?

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ эффСктивный CSS.

%button
  background-color: lightgrey
  &:hover, &:active
    background-color: white

a
  @extend %button

button
  @extend %button

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

a, button {
  background-color: lightgrey;
}
a:hover, button:hover, a:active, button:active {
  background-color: white;
}

Π‘ миксинами Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ CSS, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для измСнСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ использования.

=button($main-color: lightgrey, $active-color: white)
  background-color: $main-color
  border: 1px solid black
  border-radius: 0.2em

  &:hover, &:active
    background-color: $active-color

a
  +button

button
  +button(pink, red)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²:

a {
  background-color: lightgrey;
  border: 1px solid black;
  border-radius: 0.2em;
}
a:hover, a:active {
  background-color: white;
}

button {
  background-color: pink;
  border: 1px solid black;
  border-radius: 0.2em;
}
button:hover, button:active {
  background-color: red;
}

Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ этому ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ чистым ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² обслуТивании с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эффСктивного использования Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈ миксинов: http://thecodingdesigner.com/posts/balancing

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ SASS, ΠΊ соТалСнию, Π½Π΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Π΄ΠΈΠ°-запросов (ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ссылки Π½Π΅Π²Π΅Ρ€Π΅Π½). Π’ ситуации, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° основС ΠΌΠ΅Π΄ΠΈΠ°-запросов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ миксин:

=active
  display: block
  background-color: pink

%active
  +active

#main-menu
  @extend %active // Active by default

#secondary-menu
  @media (min-width: 20em)
    +active // Active only on wide screens

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

#main-menu {
  display: block;
  background-color: pink;
}

@media (min-width: 20em) {
  #secondary-menu {
    display: block;
    background-color: pink;
  }
}

Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π² этом случаС, Π½ΠΎ Π²Π°ΠΌ Π½Π΅ слСдуСт особо Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± этом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сТатиС gzip Π²Π΅Π±-сСрвСра позаботится ΠΎΠ± этом.

PS ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ классы-Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΠΈ Π² ΠΌΠ΅Π΄ΠΈΠ°-запросах.

ОбновлСниС 2014-12-28 : Extends ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ CSS, Ρ‡Π΅ΠΌ миксины , Π½ΠΎ это прСимущСство ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ сТатии CSS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gzip. Если ваш сСрвСр обслуТиваСт сТатый с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gzip CSS (это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ!), Π’ΠΎΠ³Π΄Π° extends ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ принСсСт Π²Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·Ρ‹. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ миксины ! ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом здСсь: http://www.sitepoint.com/sass-extend-nobody-told-you/

КомплСксноС ввСдСниС в Less: Mixins

Π‘ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ … Ρ‡Ρ‚ΠΎ?

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Less ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ «миксины», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сходства с функциями Π² языках программирования. Π’ Less ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ инструкций CSS Π² ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ…, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… классах. ΠœΠΈΠΊΡΠΈΠ½Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС свойства класса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс, просто Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² имя класса Π² качСствС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π΅Π³ΠΎ свойств. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½ΠΎ для Ρ†Π΅Π»Ρ‹Ρ… классов. Π›ΡŽΠ±ΠΎΠΉ класс CSS ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΌΠ΅ΡˆΠ°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

.round-borders {
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
}

#menu {
  color: gray;
  .round-borders;
}


.round-borders {
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
}

#menu {
  color: gray;
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, этот Π²Ρ‹Π²ΠΎΠ΄ прСдставляСт собой сам миксин ΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» CSS. Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ миксины появлялись Π² вашСм скомпилированном Ρ„Π°ΠΉΠ»Π΅ .css Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ Π² названиях миксинов. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ сСлСкторы CSS-классов Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ символ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ миксина Less. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹, ΠΊΠ°ΠΊ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ для классов.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ваши Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ΠœΠΈΠΊΡΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ парамСтричСскими, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΈΡ… полСзности. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ миксин сам ΠΏΠΎ сСбС Π½Π΅ выводится ΠΏΡ€ΠΈ компиляции. Π•Π³ΠΎ свойства появятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ смСшивании Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π»ΠΎΠΊ. ΠšΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся созданиС миксина с Π·Π°ΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…:

 .round-borders (@radius) {
  border-radius: @radius;
  -moz-border-radius: @radius;
  -webkit-border-radius: @radius;
}

И Π²ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»:

 header {
  .round-borders(4px);
}

.button {
  .round-borders(6px);
}

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ миксины Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для своих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

 .round-borders (@radius: 5px) {
  border-radius: @radius;
  -moz-border-radius: @radius;
  -webkit-border-radius: @radius;
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ это Ρ‚Π°ΠΊ:

 header {
  .round-borders;
}

И это Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ 5-ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΉ border-radius

Если Ρƒ вас Π΅ΡΡ‚ΡŒ миксин, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½ΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ отобраТался Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄Π΅, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅ΠΌΡƒ пустой список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

 .hiddenMixin() {
  color: black;
}
 p {
  .hiddenMixin()
}

Π§Ρ‚ΠΎ Π±Ρ‹ вывСсти:

 p {
  color: black;
}

Π’ миксинС Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ пСрСмСнная с ΠΈΠΌΠ΅Π½Π΅ΠΌ @arguments Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ всС значСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для быстрого назначСния всСх Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

 .box-shadow(@x: 0, @y: 0, @blur: 1px, @color: #000) {
  box-shadow: @arguments;
  -moz-box-shadow: @arguments;
  -webkit-box-shadow: @arguments;
}

.box-shadow(2px, 5px);

Π§Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ:

 box-shadow: 2px 5px 1px #000;
-moz-box-shadow: 2px 5px 1px #000;
-webkit-box-shadow: 2px 5px 1px #000;

НСмного сватовства πŸ™‚

Когда Π²Ρ‹ ΠΌΠΈΠΊΡˆΠΈΡ€ΡƒΠ΅Ρ‚Π΅ миксин, всС доступныС миксины с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ области видимости ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π½Π° соотвСтствиС Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π² миксин ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ объявлСно.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ случай β€” это совпадСниС ΠΏΠΎ арности (количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ миксин). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ миксины, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ числу ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ миксинов с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 .mixin() { 
  background-color: white;
}

.mixin(@a)  {
  color: @a;
}

.mixin(@a, @b) {
  color: fade(@a, @b);
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ .mixin@a@b

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ контроля соотвСтствия миксина Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ значСния вмСсто ΠΈΠΌΠ΅Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ объявлСнии миксина:

 .mixin (dark, @color) {
  color: darken(@color, 10%);
}

.mixin (light, @color) {
  color: lighten(@color, 10%);
}

.mixin (@_, @color) { 
  display: block;
}

@switch: light;

.class {
  .mixin(@switch, #888);
}

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ CSS:

 .class {
  color: #a2a2a2;
  display: block;
}

Π’Π°ΠΌ, Π³Π΄Π΅ Ρ†Π²Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» Π½Π° .mixin Если Π±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ @switch Π‘Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ опрСдСлСния. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π° всС, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, соотвСтствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Ρ€Π°Π²Π½ΠΎΠΌΡƒ сСбС.

гвардия

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ограничСния, ΠΊΠΎΠ³Π΄Π° миксин ΡΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ, β€” это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ…Ρ€Π°Π½Ρƒ. Guard β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ связано с объявлСниСм mixin, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ оцСниваСтся Π²ΠΎ врСмя процСсса mixin. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ миксин, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true. ΠžΡ…Ρ€Π°Π½Π½ΠΈΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ выраТСния, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ простых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ арности.

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово when

 .mixin (@a) when (lightness(@a) >= 50%) {   
  background-color: black;
}

.mixin (@a) when (lightness(@a) < 50%) {
  background-color: white;
}

.mixin (@a) { 
  color: @a;
}

.class1 {
  .mixin(#ddd);
} 

.class2 {
  .mixin(#555);
} 

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

 .class1 {
  background-color: black;
  color: #ddd;
}

.class2 {
  background-color: white;
  color: #555;
}

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΎΡ…Ρ€Π°Π½Π½ΠΈΠΊΠ°Ρ…:>,> =, =, = <, <.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ миксины Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° значСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ is *. Π­Ρ‚ΠΎ iscolor, isnumber, isstring, iskeyword ΠΈ isurl. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, находится Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΌΠΈΠΌΠΎ числа, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… β€” ispixel, ispercentage, isem. Π’ΠΎΡ‚ быстрый ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 .mixin (@a) when (iscolor(@a)) {
  color: @a;
}

.mixin (@a) when (ispixel(@a)) {
  width: @a;
}

body {
  .mixin(black);
}

div {
  .mixin(960px);
}


body {
  color: #000000;
}

div {
  width: 960px;
}

ΠžΡ…Ρ€Π°Π½Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ запятой β€” Ссли любой ΠΈΠ· ΠΎΡ…Ρ€Π°Π½Π½ΠΈΠΊΠΎΠ² оцСниваСтся ΠΊΠ°ΠΊ true, это считаСтся совпадСниСм:

 .mixin (@a) when (@a > 10), (@a < -10) { ... }

ВмСсто запятой ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово and

 .mixin (@a) when (isnumber(@a)) and (@a > 0) { ... }

НаконСц, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово not

 .mixin (@b) when not (@b > 0) { ... }

Π”ΡƒΠΌΠ°Π΅ΡˆΡŒ, ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° это ΠΏΠ»ΠΎΡ…ΠΎ? ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉ Π΅Ρ‰Π΅ Ρ€Π°Π·.

Π―Π²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты Π² вашСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ стилСй ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ элСмСнтам? ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ значСния ΠΈ Ρ†Π²Π΅Ρ‚Π° свойств, давая Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ свойствами. ВмСсто добавлСния большСго количСства ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Less. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ выраТСния с Π»ΡŽΠ±Ρ‹ΠΌ числом, Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

 @sidebarWidth: 400px;
@sidebarColor: #FFCC00;
#sidebar {
  color: @sidebarColor + #FFDD00;
  width: @sidebarWidth / 2;
  margin: @sidebarWidth / 2 * 0.05;
}


#sidebar {
  color: #FFFF00; 
  width: 200px;   
  margin: 10px;   
}

Π‘ΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для контроля порядка ΠΎΡ†Π΅Π½ΠΊΠΈ. Они Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π² составных значСниях:

 border: (@width * 2) solid black;

Less Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π²Π°ΠΌ ΠΏΠ°Ρ€Ρƒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΈ:

 round(1.67); 
ceil(2.4);   
floor(2.6);  

И, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°:

 percentage(0.5); 

Π—Π΄Π΅ΡΡŒ я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ малСнький сСкрСт: ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ сСчСниС Π² вашСм Π΄ΠΈΠ·Π°ΠΉΠ½Π΅. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒ это:

 @baseWidth: 960px;
@mainWidth: round(@baseWidth / 1.618);
@sidebarWidth: round(@baseWidth * 0.382);

#main {
  width: @mainWidth;
}

#sidebar {
  width: @sidebarWidth;
}

И ΠΎΡ‚Π²Π΅Ρ‚:

 #main {
  width: 593px;
}

#sidebar {
  width: 367px;
}

И вуаля! Π’Π°Ρˆ расклад ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ с Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ сСчСниСм. Π’Ρ‹ всС Π΅Ρ‰Π΅ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° это ΠΏΠ»ΠΎΡ…ΠΎ ?! Π― Ρ‚Π°ΠΊ Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ πŸ™‚

ЦвСтная Алхимия

Less прСдоставляСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ†Π²Π΅Ρ‚Π°. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ†Π²Π΅Ρ‚Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠ΅ пространство HSL, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ°Π½Π°Π»Π°. ВсС Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ†Π²Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ вращСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ 0 Π΄ΠΎ 255 вмСсто ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ² для измСнСния ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠ°, ΠΈ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Ρ†Π²Π΅Ρ‚Π° Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’ΠΎΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ справочник для вас:

 lighten(@color, 10%);    
darken(@color, 10%);     
saturate(@color, 10%);   
desaturate(@color, 10%); 
fadein(@color, 10%);     
fadeout(@color, 10%);    
fade(@color, 50%);       

spin(@color, -10);       
mix(@color1, @color2);   

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ†Π²Π΅Ρ‚Π΅ ΠΈΠ· ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠ°, насыщСнности, яркости ΠΈ Π°Π»ΡŒΡ„Π°:

 hue(@color);        
saturation(@color); 
lightness(@color);  
alpha(@color);      

Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π½Π° основС ΠΊΠ°Π½Π°Π»Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 @new: hsl(hue(@old), 45%, 90%);

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ Π°Π»Ρ…ΠΈΠΌΠΈΠΈ, Ρƒ нас Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ руководство ΠΏΠΎ созданию мСньшСго количСства Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… схСм ΠΈ ΠΏΠ°Π»ΠΈΡ‚Ρ€ с большим количСством Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ!

Π’Ρ‹ любишь ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ? Π”Π°.

Π’ CSS ΠΌΡ‹ записываСм ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ сСлСкторам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ части снова ΠΈ снова. ВмСсто создания Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ сСлСкторов для указания наслСдования, Π² Less Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ сСлСкторы Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСлСкторы. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ наслСдованиС ΠΈ сокращаСт Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй:

 header {}
header nav {}
header nav ul {}
header nav ul li {}
header nav ul li a {}

Π’ МСньшС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

 header {
  nav {
    ul {
      li {
        a {}
      }
    }
  }
}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, это Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ чистый, Ρ…ΠΎΡ€ΠΎΡˆΠΎ структурированный ΠΊΠΎΠ΄, прСдставлСнный сильной Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ сСлСкторы снова ΠΈ снова. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Π»ΠΎΠΆΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ структуру вашСго Π΄Π΅Ρ€Π΅Π²Π° DOM. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΡŒ псСвдоклассам эту структуру влоТСнности, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° &. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & прСдставляСт сСлСктор родитСля. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ сСлСктор соСдинялся со своим Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ сСлСктором, Π° Π½Π΅ дСйствовал ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ.

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 header { 
  color: black; 
}

header nav {
  font-size: 12px;
}

header .logo {
  width: 300px;
}

header .logo:hover {
  text-decoration: none;
}

МоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

 header {
  color: black;
  nav {
    font-size: 12px;
  }
  .logo {
    width: 300px;
    &:hover { text-decoration: none }
  }
}

Или Ρ‚Π°ΠΊ:

 header    { color: black;
  nav     { font-size: 12px }
  .logo   { width: 300px;
    &:hover { text-decoration: none }
  }
}

НазовитС это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ это, ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ это. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ просто?

Π§Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ миксины Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΈΠ»ΠΈ для распространСния? Less Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π²Π»ΠΎΠΆΠΈΠ² миксины Π² Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ #namespace.

НапримСр:

 #fonts {
  .serif (@weight: normal, @size: 14px, @lineHeight: 20px) {
    font-family: Georgia, "Times New Roman", serif;
    font-weight: @weight;
    font-size: @size;       
    line-height: @lineHeight;
  }
  .sans-serif (@weight: normal, @size: 14px, @lineHeight: 20px) { 
    font-family: Arial, Helvetica, sans-serif;
    font-weight: @weight;
    font-size: @size;       
    line-height: @lineHeight;
  }
  .monospace (@weight: normal, @size: 14px, @lineHeight: 20px) {
    font-family: "Lucida Console", Monaco, monospace
    font-weight: @weight;
    font-size: @size;       
    line-height: @lineHeight;
  }
}

Π—Π°Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ миксин ΠΈΠ· этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹, Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это:

 body {
  #fonts > .sans-serif;
}

И Π²Ρ‹Π²ΠΎΠ΄:

 body {
  font-family: Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;       
  line-height: 20px;
}

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ пустыС скобки, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ опрСдСляСтС миксины, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ CSS, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ миксин. Π­Ρ‚ΠΎ сокращаСт ваш Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ позволяСт Π²Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ вСс Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ фактичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹.

НСкоторыС особыС случаи

Бтроковая интСрполяция

Бтроковая интСрполяция β€” это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ прямо Π² строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π». ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ встроСны Π² строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции @{name}

 @baseURL: "http://example.com";
border-image: url("@{base-url}/images/border.png");

Бпасаясь

Иногда Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ вывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CSS, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π»ΠΈΠ±ΠΎ являСтся нСдопустимым синтаксисом CSS, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнный синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Less Π½Π΅ распознаСт. Если это Ρ‚Π°ΠΊ, просто помСститС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² строку с прСфиксом ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ~, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 body {
  @size ~"20px/80px";
  font: @size sans-serif;
}

Π­Ρ‚ΠΎ называСтся «экранированным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌΒ», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ:

 body {
  font: 20px/80px sans-serif;
}

Π― Π³ΠΎΡ‚ΠΎΠ². ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΌΠ½Π΅ магию, поТалуйста.

ИдСя Less Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этап Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ запускаСтся Π½Π° вашСм ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ Π²Π΅Π±-сайтС, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ простым, старым CSS, Π° Π½Π΅ Less. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ. ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ компилятор Less ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Π΄Π΅Π»Π°Ρ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ WinLess (для Windows) ΠΈ LESS.app (для OS X)

Π—Π΄Π΅ΡΡŒ я объясню Π²Π°ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с WinLess. Π‘Π½Π°Ρ‡Π°Π»Π° скачайтС ΠΈ установитС Π΅Π³ΠΎ. Когда Π²Ρ‹ запускаСтС WinLess, всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ .less Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ WinLess, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Β«Π€Π°ΠΉΠ»Β»> «Настройки». Π― ΠΎΡΡ‚Π°Π²Π»ΡΡŽ Ρ„Π»Π°ΠΆΠΎΠΊ Β«Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ» Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ» Π±Ρ‹Π» Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽ свои Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π² производство. Π― ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½ΠΈΠΆΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я ΡΠΎΡ…Ρ€Π°Π½ΡΡŽ Ρ„Π°ΠΉΠ», ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ Π·Π½Π°Ρ‚ΡŒ, ΡƒΡΠΏΠ΅ΡˆΠ½Π° Π»ΠΈ компиляция. ΠšΡΡ‚Π°Ρ‚ΠΈ, для Ρ†Π΅Π»Π΅ΠΉ обучСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WinLess Online Less Compiler β€” идСально, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ быстро Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с LESS.app Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ Π½Π° домашнСй страницС Π΅Π³ΠΎ сайта.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для Ρ‚Π΅Ρ… ΠΈΠ· вас, ΠΊΡ‚ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ПК ΠΈΠ»ΠΈ Mac. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π₯руст! , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ AIR. Crunch β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ компилятор Less, Π½ΠΎ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Less. Π­Ρ‚ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Crunch β€” СдинствСнный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, насколько ΠΌΠ½Π΅ извСстно, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ подсвСтку синтаксиса для Ρ„Π°ΠΉΠ»ΠΎΠ² .less ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ. Π—Π½Π°Π΅ΡˆΡŒ Ρ‡Ρ‚ΠΎ? Π― расскаТу Ρ‚Π΅Π±Π΅ ΠΌΠΎΠΉ малСнький сСкрСт. На самом Π΄Π΅Π»Π΅, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΎΠ±Π° ΠΈΠ· Π½ΠΈΡ… β€” WinLess для компиляции ΠΈ Crunch для рСдактирования. Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΡ€ΡƒΡ‚ΠΎ, Π°?

OK. Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½. Π“Π΄Π΅ я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ большС?

Π’ΠΎΡ‚ малСнький бонус для вас. Π­Ρ‚ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ список рСсурсов Less, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π•ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊ использованию Less миксины ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°Ρ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Less Π² качСствС своСй Π±Π°Π·Ρ‹.

  • ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ МСньшая докумСнтация β€” Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π­Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… πŸ™‚ Однако Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ рСгулярно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² язык.
  • Less Elements β€” коллСкция ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… миксинов Less.
  • Preboot.less β€” Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° коллСкция миксов ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Less.
  • Semantic Grid System β€” простой ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π² использовании инструмСнт вСрстки страниц. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ фиксированныС, Ρ‚Π΅ΠΊΡƒΡ‡ΠΈΠ΅ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹. И, кстати, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с Sass ΠΈ Stylus (Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ влюбились Π² Less).
  • Centage β€” Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° полная Ρ‚Π΅ΠΊΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.
  • Perkins CSS3 Less Framework β€” приятный ΠΈ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Less, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ HTML5 ΠΈ CSS3.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΅Ρ‰Π΅ большС рСсурсов ΠΎ Less, GitHub β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Как Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ мноТСство вкусностСй. Π§Π΅Π³ΠΎ ΠΆΠ΅ Ρ‚Ρ‹ ТдСшь? Иди ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ ΠΈΡ….

НСсколько Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… слов

Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅, Less β€” это быстрый, простой ΠΈ соврСмСнный способ написания ΠΈ создания ΠΊΠΎΠ΄Π° CSS. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄ΡŒΡ‚Π΅ слишком консСрвативны, просто ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅. ΠŸΠΎΡ‚Ρ€Π°Ρ‚ΡŒΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя с Less, ΠΈ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ слоТныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй быстрСС ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅. Π–Π΅Π»Π°ΡŽ Π²Π°ΠΌ счастливого программирования ΠΈ всСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅: «МСньшС Π·Π½Π°Ρ‡ΠΈΡ‚ большС»

И Ссли Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ этот пост, Π²Ρ‹ ΠΏΠΎΠ»ΡŽΠ±ΠΈΡ‚Π΅ Learnable ; мСсто, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ Ρƒ мастСров. Участники ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊΠΎ всСм элСктронным ΠΊΠ½ΠΈΠ³Π°ΠΌ SitePoint ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΎΠ½Π»Π°ΠΉΠ½-курсам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Launch into Less .

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹. Π•ΡΡ‚ΡŒ вопрос ΠΎ МСньшС? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΠ± этом Π½Π° Π½Π°ΡˆΠΈΡ… Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… ?

Π’ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» ΠΏΠΎ CSS прСпроцСссору Stylus Β· GitHub

Stylus — это прСпроцСссор CSS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» написан Π½Π° JavaScript для Node.js.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:
  1. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹
  2. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
  3. Π˜Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡΡ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…
  4. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  5. ΠœΠΈΠΊΡΠΈΠ½Ρ‹
  6. Π₯эши
  7. Π¦ΠΈΠΊΠ»Ρ‹
  8. Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΈ наслСдованиС
  9. МСдиа-запросы
  10. Π‘Π»ΠΎΠΊΠΈ

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация ΠΏΠΎ Stylus

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹

Π’ Stylus Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ скобки ΠΈ Π»ΡŽΠ±Ρ‹Π΅ символы раздСлСния ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°, вмСсто этого ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ (ΠΈΠ»ΠΈ отступы) для опрСдСлСния влоТСности сСлСкторов.

Stylus

white-color = white
body
  color white-color

CSS


Stylus

textarea
input
  color #A7A7A7
  &:hover
    color #000

CSS

textarea,
input {
  color: #a7a7a7;
}
textarea:hover,
input:hover {
  color: #000;
}

Stylus

textarea
input
  color #A7A7A7
  &:hover,
  /.is-hovered
    color #000

CSS

textarea,
input {
  color: #a7a7a7;
}
textarea:hover,
input:hover,
.is-hovered {
  color: #000;
}

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Stylus ΠΎΠ±ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символо ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСлСктора (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ @width).

Stylus

 font-size = 14px
 body
   font font-size Arial, sans-serif

CSS

 body {
   font: 14px Arial, sans-serif;
 }

Stylus

position()
  position: arguments
  z-index: 1 unless @z-index

#logo
  z-index: 20
  position: absolute

#logo2
  position: absolute

CSS

#logo {
  z-index: 20;
  position: absolute;
}
#logo2 {
  position: absolute;
  z-index: 1;
}

Π˜Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡΡ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Stylus прСдоставляСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ символы { ΠΈ }.

Stylus

mySelectors = '#foo,#bar,.baz'
{mySelectors}
  background: #000

CSS

#foo,
#bar,
.baz {
  background: #000;
}

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π’ Stylus ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСния, ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ массиву, ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΈ Ρ‚.Π΄.

Stylus

list = 1 2 3
list[0]
// => 1

list[-1]
// => 3

1..5
// => 1 2 3 4 5

1...5
// => 1 2 3 4

5..1
// => 5 4 3 2 1

nums = 1 2 3
1 in nums
// => true

5 in nums
// => false

color := red
color ?= red
color = color is defined ? color : white   
// => color red

15 is a 'unit'
// => true

#fff is a 'rgba'
// => true

ΠœΠΈΠΊΡΠΈΠ½Ρ‹

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° миксинов позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±Π»ΠΎΠΊΠΈ.

Stylus

stripe(even = #fff, odd = #eee)
 tr
   background-color odd
   &.even
   &:nth-child(even)
     background-color even
body
stripe()

CSS

body tr {
  background-color: #eee;
}
body tr.even,
body tr:nth-child(even) {
  background-color: #456;
}

Stylus

foo()
  .bar
    {block}

+foo()
  width: 10px

CSS


Stylus

sum()
 n = 0
 for num in arguments
   n = n + num

sum(1,2,3,4,5)
// => 15

Stylus

  pad(types = margin padding, n = 5px)
    padding unit(n, px) if padding in types
    margin unit(n, px) if margin in types

  body
    pad()

  body
    pad(margin)

  body
    apply-mixins = true
    pad(padding, 10) if apply-mixins

CSS

  body {
    padding: 5px;
    margin: 5px;
  }
  body {
    margin: 5px;
  }
  body {
    padding: 10px;
  }

Π₯эши

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Stylus ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ассоциативныС массивы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ (ΠΊΠ»ΡŽΡ‡, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ добавлСния Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ поиска ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ удалСния ΠΏΠ°Ρ€Ρ‹ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ. Π’Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ…ΡΡˆΠ° Π½ΡƒΠΆΠ½ΠΎ Π² самом ΠΊΠΎΠ½Ρ†Π΅ сСлСктора, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка

Stylus

foo = {
  bar: baz,
  baz: raz
}

foo = {
  bar: baz,
  'baz': raz,
  '0': raz
}

foo[baz]
foo.baz
// => 'raz'

Stylus

foo = {
  width: 10px,
  height: 20px,
  '&:hover': {
    padding: 0

  }
}
.bar
  {foo}

CSS

.bar {
  width: 10px;
  height: 20px;
}
.bar:hover {
  padding: 0;
}

Stylus

foo = { width: 10px, height: 20px }

for key, value in foo
  {key}: value

// => width: 10px;
//    height: 20px;

Stylus

foo = { bar: 'a', baz: 'b' }

keys(foo)
// => 'bar' 'baz'
values(foo)
// => 'a' 'b'

obj = { foo: 1, bar: 2 }
remove(obj, 'foo')
// => {"bar":"(2)"}

obj = {
  foo: 'foo'
  bar: 'bar'
}
obj2 = {
  baz: 'baz'
}

merge(obj, obj2)
// => {"foo":"('foo')","bar":"('bar')","baz":"('baz')"}

Π¦ΠΈΠΊΠ»Ρ‹

Stylus

body
  for num in (1..3)
    foo num

CSS

body {
  foo: 1;
  foo: 2;
  foo: 3;
}

Stylus

apply(props)
 props = arguments if length(arguments) > 1
 for prop in props
   {prop[0]} prop[1]
body
 apply(one 1, two 2, three 3)

body
 list = (one 1) (two 2) (three 3)
 apply(list)

CSS

body {
  one: 1;
  two: 2;
  three: 3;
}
body {
  one: 1;
  two: 2;
  three: 3;
}

Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΈ наслСдованиС

Stylus позволяСт ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² свой ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ @import, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ сСлСкторы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ @extend.

Stylus

.message
  padding 10px
  border 1px solid #eee

.warning
  @extend .message
  color #E2E21E

CSS

.message,
.warning {
  padding: 10px;
  border: 1px solid #eee;
}
.warning {
  color: #e2e21e;
}

МСдиа-запросы

Как ΠΈ CSS, прСпроцСссор ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Π΄ΠΈΠ°-запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния свойств Π² зависимости ΠΎΡ‚ устройства.

Stylus

.widget
  padding 10px
  
  @media screen and (min-width: 600px)
    padding 20px

CSS

.widget {
  padding: 10px;
}

@media screen and (min-width: 600px) {
  .widget {
    padding: 20px;
  }
}

Stylus

@media (max-width: 500px)
  .foo
    color: #000

  @media (min-width: 100px), (min-height: 200px)
    .foo
      color: #100

CSS

@media (max-width: 500px) {
  .foo {
    color: #000;
  }
}
@media (max-width: 500px) and (min-width: 100px), (max-width: 500px) and (min-height: 200px) {
  .foo {
    color: #100;
  }
}

Π‘Π»ΠΎΠΊΠΈ

МоТно Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ любой Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π² Stylus ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом

Stylus

foo =
  width: 20px
  height: 20px
 
.icon
  {foo}

CSS

.icon {
  width: 20px;
  height: 20px;
}

Native CSS Mixins. Мои мысли ΠΎ Native vs Sass | by Adam Johnston

Мои мысли ΠΎ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… миксинах ΠΈ Sass

CSS ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ миксины. Когда я ΡƒΡΠ»Ρ‹ΡˆΠ°Π» это, я Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Π²Π·Π²ΠΎΠ»Π½ΠΎΠ²Π°Π½, Π½ΠΎ ΠΌΠΎΠ΅ Π²ΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Π½ΠΎ эй! ΠŸΠΎΠ·ΠΈΡ‚ΠΈΠ²! Π― Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ своими мыслями ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΡΡ‡ΠΈΡ‚Π°ΡŽ ΠΈΡ… ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΊΡ€ΡƒΡ‚Ρ‹ΠΌΠΈ, хотя ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ.

Π― ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Sass ΠΈ рискну ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΏΠΈΡˆΡƒΡ‰ΠΈΠ΅ сСгодня CSS, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅, Π»ΠΈΠ±ΠΎ постпроцСссор, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² CSS Ρƒ нас Π΅ΡΡ‚ΡŒ доступ ΠΊ миксинам довольно Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя.

На случай, Ссли Π²Ρ‹ с Π½ΠΈΠΌΠΈ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ миксин? Π’ΠΎΡ‚ нСбольшая Ρ†ΠΈΡ‚Π°Ρ‚Π° с Π²Π΅Π±-сайта Sass:

Mixin позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ объявлСний CSS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° своСм сайтС.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! Π― ΠΌΠΎΠ³Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ стилСй Π² ΠΌΠΎΠ΅ΠΌ CSS, Π΄Π°Ρ‚ΡŒ ΠΈΠΌ имя ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. ΠšΡ€Π°ΡΠΈΠ²ΠΎ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ этого ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² CSS Π±Π΅Π· нСобходимости этапа компиляции ΠΈΠΌΠ΅Π΅Ρ‚ для мСня Ρ†Π΅Π»Ρ‹ΠΉ ряд смысла.

Native vs Sass

НСкоторыС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:

  • Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ CSS, Π²Π°ΠΌ понадобится Chrome 51+ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ„Π»Π°Π³ — chrome: // flags / # enable -ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅-возмоТности-Π²Π΅Π±-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.
  • Π’ настоящСС врСмя это Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь, ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.
  • Π― Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Sass для ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π½ΠΎ всС это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Less ΠΈΠ»ΠΈ Stylus, хотя синтаксис ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.
  / * БобствСнный * / : root {
--my-mixin: {
background: # 256dbd;
Ρ†Π²Π΅Ρ‚: # f5f5f5;
}

} body {
@apply --my-mixin;
} --- // Scss @mixin my-mixin {
background: # 256dbd;
Ρ†Π²Π΅Ρ‚: # f5f5f5;
} body {
@include my-mixin;
}

ΠŸΠ΅Ρ€Π²ΠΎ-Π½Π°ΠΏΠ΅Ρ€Π²ΠΎ, синтаксичСскиС различия.Π― Π»ΠΈΡ‡Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Π½ΠΈ Ρ‚ΠΎΠ³ΠΎ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π’ собствСнном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ миксин ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ: root) ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ миксин, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½ΠΎΠ²ΠΎΠ΅ at-ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ @apply. Sass помСняСт стили Π²ΠΎ врСмя компиляции.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ миксины Sass ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π° Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ — Π½Π΅Ρ‚. НСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ native бСсполСзСн Π±Π΅Π· этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ это Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ΅ ΡƒΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности использования ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Sass. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π±Ρ‹ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ миксины ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… CSS, Π½ΠΎ это Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° случай:

НСкоторыС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ я ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» отсутствиС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это услоТнит CSS ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠΊΠ°ΠΊ язык программирования.НС ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΠ»ΠΎΡ…ΠΎ. Sass Π±Ρ‹Π» ΠΌΠΎΠΈΠΌ шлюзом ΠΊ пониманию Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ программирования ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΏΠΎΠΌΠΎΠ³ ΠΌΠ½Π΅ ΡΡ‚Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅β€¦

Π§Ρ‚ΠΎ ΠΌΠ½Π΅ нравится Π² миксинах собствСнного CSS, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΌΠΎΠ³Ρƒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ стили, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм CSS Π±Π΅Π· нСобходимости Π² ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ этапах прСпроцСссора ΠΈ компиляции.

ΠŸΡ€ΠΈ этом, Π±Π΅Π· возмоТности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π² настоящСС врСмя) ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ отсутствия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΡƒΠ±Π΅Π΄ΠΈΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с прСпроцСссором, ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΏΠΎΠΊΠ°.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΈ ссылки

CSS-миксинов с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ @apply

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ: | 4 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

Π― ΠΎΡ‡Π΅Π½ΡŒ Π²Π·Π²ΠΎΠ»Π½ΠΎΠ²Π°Π½ Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠ΅ΠΉ CSS. НСкотороС врСмя Π½Π°Π·Π°Π΄ Flexbox Π±Ρ‹Π» ΠΌΠΎΠ΄Π½Ρ‹ΠΌ словом, сСгодня это Ρ‡Π°ΡΡ‚ΡŒ спСцификации, которая Ρ…ΠΎΡ€ΠΎΡˆΠΎ поддСрТиваСтся ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся. НСсколько мСсяцСв Π½Π°Π·Π°Π΄ я ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Π° сСтки CSS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°ΡŽΡ‰Π΅ΠΉΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ способ создания Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ΠžΠ³Ρ€ΠΎΠΌΠ½Π°Ρ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ прСпроцСссоров, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Sass ΠΈΠ»ΠΈ LESS, нСсомнСнно, повлияла Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² спСцификаций, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² язык ΠΊΠ°ΠΊ настраиваСмыС свойства CSS.НСдавно я ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» сообщСниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этой ΠΌΠΎΡ‰Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ аспСкт прСпроцСссоров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нравится Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ, — это миксины. Π§Ρ‚ΠΎ ΠΆ, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ новости приходят, ΠΌΠΎΠΉ Π΄Ρ€ΡƒΠ³ — ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ CSS @apply Π½Π΅ Π·Π° Π³ΠΎΡ€Π°ΠΌΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ вмСстС рассмотрим Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ CSS-миксин.

Π­Ρ‚Π° спСцификация опрСдСляСт ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ @apply, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Π°Π²Ρ‚ΠΎΡ€Ρƒ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ свойств Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… стиля.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ СдинствСнная рСализация Π±Ρ‹Π»Π° Π² Google Chrome Canary с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ„Π»Π°Π³ΠΎΠΌ Β«Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Π±-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹Β».

Бинтаксис #

Если Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с синтаксисом настраиваСмых свойств CSS, Π²Π°ΠΌ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π° Π΅Π³ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π½Π°Π±ΠΎΡ€ свойств Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки Π²Ρ€ΠΎΠ΄Π΅ этого & mldr;

 : root {
  --heading-style: {
    сСмСйство ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²: курсив;
    font-weight: 700;
  };
}
  

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ миксин Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠ²ΠΎΠ΅ at-ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ @apply .

  h2 {
  @apply - ΡΡ‚ΠΈΠ»ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°;
}
  

Π‘ΠΌ. ΠŸΠ΅Ρ€ΠΎ 2016.04.18 — 1, Π°Π²Ρ‚ΠΎΡ€ ПавСл Π“ΠΆΠΈΠ±Π΅ΠΊ (@pawelgrzybek) Π½Π° CodePen.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² миксинах CSS #

Sass позволяСт Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ список локально ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… миксину. К соТалСнию, это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ @apply .

Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ JavaScript, ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, — это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€ΠΎΠ΄Π΅ & mldr;

 : root {
  - Ρ†Π²Π΅Ρ‚ Π±Ρ€Π΅Π½Π΄Π°: красный;
  --heading-style: {
    color: var (- Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚);
    сСмСйство ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²: курсив;
    font-weight: 700;
  };
}
  
  h2 {
  - Ρ†Π²Π΅Ρ‚ Π±Ρ€Π΅Π½Π΄Π°: Π·Π΅Π»Π΅Π½Ρ‹ΠΉ;
  @apply - ΡΡ‚ΠΈΠ»ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°;
}

/ *
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° извлСкаСтся ΠΈΠ· корня, Π° Π½Π΅ ΠΈΠ· локального Π±Π»ΠΎΠΊΠ°
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ красный, Π° Π½Π΅ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ
это CSS, Π° Π½Π΅ JavScript
* /
  

& mldr; Π½ΠΎ это Π½Π΅ JavaScript, Π΄Ρ€ΡƒΠ³ ΠΌΠΎΠΉ.Он Π±Π΅Ρ€Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ миксин, Π° Π½Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ «вызываСтся». НадСюсь, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ миксину Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ — скрСстим ΠΏΠ°Π»ΡŒΡ†Ρ‹.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ собствСнныС CSS-миксины сСгодня #

Как я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ сСйчас практичСски Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ. Бтатус ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Chrome сообщаСт Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ пСрвая рСализация Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π° для Google Chrome 51 (Π·Π° Ρ„Π»Π°Π³ΠΎΠΌ) ΠΈ Opera 38.Никаких подробностСй ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π΅ Ρ€Π°Π·Π³Π»Π°ΡˆΠ°Π»ΠΎΡΡŒ.

Как Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ прямо сСйчас! Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ с Babel ΠΈ ECMAScript 2015. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ½Π΅ Ρ‚Π°ΠΊ нравится PostCSS! Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ использовали Π΅Π³ΠΎ, я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΌΠΎΠΈΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² PostCSS для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Sass. Паскаль Дуэз создал postcss-apply, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ @apply Π² синтаксис, понятный Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌ.

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для @apply Π½Π΅ Ρ‚Π°ΠΊ просто, ΠΊΠ°ΠΊ с настраиваСмыми свойствами CSS. Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ способ использования с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ @support — это всСго лишь вопрос Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Если Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Π° @apply , посмотритС скрипт, созданный Π‘Π΅Ρ€Π³ΠΎΠΌ ГосподарСцом. Π‘Π΅Ρ€Π³ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π² своСм Π±Π»ΠΎΠ³Π΅ список ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования CSS-миксинов.

НадСюсь, этот ΠΎΠ±Π·ΠΎΡ€ Π±Ρ‹Π» Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½. Увидимся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·: — *

ΠžΠ‘ΠΠžΠ’Π›Π•ΠΠ˜Π•!

Tab Atkins Jr ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ объявил, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ прСдлоТСния @apply ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ здСсь.

Π—Π΄Π΅ΡΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС мСста для экспСримСнтов, ΠΈ хотя ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вас, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΠΎΠ»Π½ΠΎΠ²Π°Π», — отстой, @apply Π½Π° самом Π΄Π΅Π»Π΅ являСтся довольно ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ с тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅ΡˆΠΈΠΌ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π§Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅?

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ (Π²Ρ€ΠΎΠ΄Π΅) Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ SASS @mixins Π² простом CSS

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π΅: Π― ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SASS ΠΈ SCSS ΠΏΠΎΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² этом постС.Вас ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΠ»ΠΈ 😈

Π’Ρ‹, вСроятно, Π½Π°ΠΆΠ°Π»ΠΈ Π½Π° этот пост, думая: Β«ΠŸΠΎΠ³ΠΎΠ΄ΠΈΡ‚Π΅, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ миксины Π½Π° простом CSS. Π§Ρ‚ΠΎ это Π·Π° ΠΊΠ»ΠΈΠΊΠ±Π΅ΠΉΡ‚?Β»

ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ сразу ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ: этот пост Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ всСго ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π² миксинах. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΉ ΡƒΠ³ΠΎΠ»ΠΎΠΊ CSS для ENGAGE SASS MODE.

Π˜Ρ‚Π°ΠΊ, Π΄Π°, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ, Π½Π΅ являСтся прямым ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ Π½Π° миксинов SASS / Stylus / LESS.Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, которая Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ заставляСт вас ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ миксинам:

  1. Π£ вас Π΅ΡΡ‚ΡŒ CSS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах
  2. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² этому ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌΡƒ CSS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Π₯ΠΎΡ€ΠΎΡˆΠΎ, оТидания снизились. Π§Ρ‚ΠΎ Ρƒ тСбя Π΅ΡΡ‚ΡŒ?

Ну, всС начинаСтся с нашСго Π΄Ρ€ΡƒΠ³Π°, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… CSS.

Если Π²Ρ‹ Π½Π΅ использовали ΠΈΡ… Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ CSS ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ SASS; Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½ΠΈΡ… всС, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² любом Π½Π°Π±ΠΎΡ€Π΅ ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ опрСдСляСтС.Однако эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ свСрхмощныС . ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ опрСдСляСтС ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Π΅Π·Π΄Π΅, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ CSS ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π½Π° Π½Π° любом ΡƒΡ€ΠΎΠ²Π½Π΅ каскада . SASS ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описываСт это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² своСй собствСнной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Вакая ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ позволяСт Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

  

Π― красный Π°Π±Π·Π°Ρ†!

Π― синий Π°Π±Π·Π°Ρ†!

  p {
  color: var (- Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΡ‹);
}
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Π±Π·Π°Ρ† Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свой Ρ†Π²Π΅Ρ‚, Π² зависимости ΠΎΡ‚ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, присвоСнной Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ div .Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ!

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Допустим, Π½Π° вашСм сайтС Π΅ΡΡ‚ΡŒ ссылки Π½Π° ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС эти ссылки ΠΈΠΌΠ΅Π»ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚, Π½ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сайту, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ. Π’ этом случаС Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π²Π΅ ссылки:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС, Ρ‡Π΅ΠΌ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ каТдая ссылка ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π½Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ, Π° Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… мСстах :

  • ВСкст Ρ†Π²Π΅Ρ‚
  • Π—Π°Π»ΠΈΠ²ΠΊΠ° Π·Π½Π°Ρ‡ΠΊΠ° SVG
  • Бсылка Π³Ρ€Π°Π½ΠΈΡ†Π°
  • Π¦Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора Π½Π°

Π‘Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌ / Π½Π΅ Π‘Π£Π₯ИМ.Нам ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ» (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ для Π·Π½Π°Ρ‡ΠΊΠ°) для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ добавляСм 000

Если Π²Ρ‹ достаточно ΠΊΡ€ΡƒΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСпроцСссор, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ свои стили с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ миксина. Π­Ρ‚ΠΎ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

  @mixin color-link ($ color) {
  Ρ†Π²Π΅Ρ‚: $ Ρ†Π²Π΅Ρ‚;
  Π³Ρ€Π°Π½ΠΈΡ†Π°: 1px сплошной Ρ†Π²Π΅Ρ‚ $;
  
  
  svg {
    fill: $ color;
  }
  
  
  &: hover {
    Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°: $ Ρ†Π²Π΅Ρ‚;
  }
}
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Ρƒ нас ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ ссылки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ однострочник Π² Π½ΠΎΠ²ΠΎΠΌ сСлСкторС:

 .twitter-link {
  @include color-link (# 1fa0f2);
}
  

Π’ΠΎΡ‚ Ρ€ΡƒΡ‡ΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² дСйствии:

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ простой CSS Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ …

Π’ΠΎΡ‚ Π³Π΄Π΅ Π²Ρ‹ ΠΎΡˆΠΈΠ±Π°Π΅Ρ‚Π΅ΡΡŒ! Π₯отя Π² CSS отсутствуСт наш изящный синтаксис @include , ΠΌΡ‹ всС ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» с Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ связью Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

НачнСм с исходного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π±Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

 
a.color-link {
  
  Ρ†Π²Π΅Ρ‚: # 1fa0f2;
  Π³Ρ€Π°Π½ΠΈΡ†Π°: 1px solid # 1fa0f2;
}


Π°.color-link> svg {
  Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ: # 1fa0f2;
}

a.color-link: hover {
  Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°: # 1fa0f2;
  Ρ†Π²Π΅Ρ‚ Π±Π΅Π»Ρ‹ΠΉ;
}

a.color-link: hover> svg {
  Π·Π°Π»ΠΈΠ²ΠΊΠ°: Π±Π΅Π»Ρ‹ΠΉ;
}
  

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ сдСлали ΠΏΠ°Ρ€Ρƒ Π²Π΅Ρ‰Π΅ΠΉ:

  1. ΠœΡ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈ наш миксин color-link Π² простой старый CSS-класс
  2. ΠœΡ‹ избавились ΠΎΡ‚ синтаксиса влоТСнности, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ CSS всС Π΅Ρ‰Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ (Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² блиТайшСС врСмя!).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с ΠΌΠ°Π³ΠΈΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ✨

  Π°.color-link {
  
  color: var (- Ρ†Π²Π΅Ρ‚);
  Π³Ρ€Π°Π½ΠΈΡ†Π°: 1px solid var (- Ρ†Π²Π΅Ρ‚);
}

a.color-link> svg {
  fill: var (- Ρ†Π²Π΅Ρ‚);
}

a.color-link: hover {
  Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°: var (- Ρ†Π²Π΅Ρ‚);
  Ρ†Π²Π΅Ρ‚ Π±Π΅Π»Ρ‹ΠΉ;
}

a.color-link: hover> svg {
  Π·Π°Π»ΠΈΠ²ΠΊΠ°: Π±Π΅Π»Ρ‹ΠΉ;
}
  

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ наши классы twitter ΠΈ github ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ…:

  .twitter-link {
  --Ρ†Π²Π΅Ρ‚: # 1fa0f2;
}

.github-link {
  --Ρ†Π²Π΅Ρ‚: # 24292D;
}
  

Π‘Ρ‚Ρ€Π΅Π»Π°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… CSS ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†Π²Π΅Ρ‚Π° Π² любом Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Π½Π°ΠΌΠΈ сСлСкторС CSS.Пока ΠΌΡ‹ примСняСм любого ΠΈΠ· этих ΠΏΠ°Ρ€Π½Π΅ΠΉ вмСстС с нашим классом color-link

   ... 
  

Наша «смСсь» color-link ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹!

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ CodePen, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

Π”Π°, Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ограничСния

Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ваши простыС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй CSS Π±ΠΎΠ»Π΅Π΅ Π‘Π£Π₯ИМИ, Π½ΠΎ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ Π·Π°Π±Π°Π²Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования.

НапримСр, SASS ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ условныС выраТСния ΠΈ Ρ†ΠΈΠΊΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ своих миксинов.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π²Π°ΠΌ, скаТСм, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ логичСскиС значСния true / false Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ стилями.

 
@mixin grid-if-supported ($ grid) {
    @if $ grid {
        @include ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ сСтки;
    } @Π΅Ρ‰Π΅ {
        @include Crazier-Flexbox-layout;
    }
}
  

На основС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ излоТСния Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… здСсь Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Ρ… примСсСй

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ наш HTML, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² большС классов. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³ΠΎ Π²Ρ‹ спроситС, это частично сниТаСт ΡΠ΅ΠΊΡΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ миксина. ΠœΠΈΠΊΡΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² любой ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, Π±Π΅Π· нСобходимости ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ классы ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ».

Π― частично согласСн с этим, Π½ΠΎ этот пост Π΄ΠΎΠ»ΠΆΠ΅Π½, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, насколько ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ CSS. Они ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°ΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ слоТныС стили с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΈ запятыми, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ --crazy-padding: 12px 12px 0 0 ΠΈΠ»ΠΈ --dope-box-shadow: 1px 2px 3px #abcabc . Π§Π΅Π³ΠΎ нСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… миксина SASS!

Бпасибо Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅!

Π­Ρ‚ΠΎΡ‚ пост являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΌΠΎΠ΅ΠΉ Ρ‚Π²Π΅Ρ€Π΄ΠΎΠΉ Ρ†Π΅Π»ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ прСпроцСссоров CSS. Π― ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΠΊΡƒΡ‡Π°ΡŽ ΠΏΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ стилям … Π½ΠΎ ΠΌΠΎΡ‰ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… CSS Π² сочСтании с Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ микросСкундами Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сборки всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я ΡΠΎΡ…Ρ€Π°Π½ΡΡŽ, Π΄Π΅Π»Π°ΡŽΡ‚ мСня достаточно Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ сырым CSS Π² наши Π΄Π½ΠΈ

Если Π²Π°ΠΌ интСрСсно, Ρƒ мСня Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ пост, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… CSS, исслСдуя, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ манипуляций со стилСм JS.ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ здСсь!

Π’Π°ΠΊΠΆΠ΅ ΠΆΠ΄ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² блиТайшиС нСсколько мСсяцСв. Π― Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» ΠΊΠΎΠ»Π»Π΅Π΄ΠΆ, Ρ‡Ρ‚ΠΎ Ρƒ мСня … ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ чувства, мягко говоря. Π’ этом мСсяцС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ содСрТимого ΠΈΠ· ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π°, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ я Π½Π°Ρ‡Π½Ρƒ свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ для взрослых .

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° рассылку новостСй Π½ΠΈΠΆΠ΅, Ссли это Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ! Π‘ΠΊΠΎΡ€ΠΎ появятся Π½ΠΎΠ²Ρ‹Π΅.

Mixins Π»ΡƒΡ‡ΡˆΠ΅ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ — CSS Wizardry — ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π²Π΅Π±-ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Написано на CSS Wizardry .

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
  1. ЭкспСримСнт
  2. Π”Π΅Π»Π°Π΅ΠΌ Π²Π΅Ρ‰ΠΈ Π±ΠΎΠ»Π΅Π΅ рСалистичными
  3. ΠœΠΈΠΊΡˆΠΈΠ½Ρ‹
  4. Π»ΡƒΡ‡ΡˆΠ΅ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ прСпроцСссоров, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых частых вопросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ½Π΅ Π·Π°Π΄Π°ΡŽΡ‚: миксинов ΠΈΠ»ΠΈ @extend ? Π― всСгда Π±Ρ‹Π» довольно Π²Ρ‹ΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅, ΠΈ Π― Ρ‚Π²Π΅Ρ€Π΄ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования @extend ΠΏΠΎ ряду ΠΏΡ€ΠΈΡ‡ΠΈΠ½:

  1. Он измСняСт ваш исходный порядок, Ρ‡Ρ‚ΠΎ всСгда рискованно Π² CSS.
  2. Он создаСт Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² вашСм ΠΊΠΎΠ΄Π΅, помСщая нСсвязанныС сСлСкторы всС вмСстС.
  3. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΆΠ°Π΄Π½ΠΎ, @extend Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ экзСмплярС Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ..
  4. Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ, ΠΏΡ€Π°Π²Π΄Π° быстрый.

@extend Π² настоящСС врСмя ΡˆΠΈΡ€ΠΎΠΊΠΎ считаСтся Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ, поэтому, ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅Π³ΠΎ использованиС ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚, Π½ΠΎ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ совсСм Ρ‚Π°ΠΌ.

Π’Ρ‡Π΅Ρ€Π° я Ρ€Π°Π±ΠΎΡ‚Π°Π» с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΈ мСня спросили ΠΎ миксинС vs.Битуация @extend , Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π΄Π°Π» свой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ . НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ @extend , Когда-Π»ΠΈΠ±ΠΎ! , Π° Π²Π·Π°ΠΌΠ΅Π½ мСня спросили Но Ρ€Π°Π·Π²Π΅ @extend Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ для прСдставлСниС? Он Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ мСньшС ΠΊΠΎΠ΄Π°.

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²Π΄Π°, Ρ‡Ρ‚ΠΎ @extend (ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ мСньшС CSS, Π½ΠΎ ΠΌΠΎΠΈ ΠžΡ‚Π²Π΅Ρ‚ Π±Ρ‹Π» Ρ‚Π²Π΅Ρ€Π΄Ρ‹ΠΌ Π½Π΅Ρ‚: миксины Π»ΡƒΡ‡ΡˆΠ΅ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ .

Π― ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π½Π° вопрос довольно ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ собствСнно ΠΈ сдСлал ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ тСсты.ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΌΠΎΠ΅ΠΉ увСрСнности Π±Ρ‹Π»Π° довольно солидная тСория Ρ‡Ρ‚ΠΎ Ρƒ мСня Π±Ρ‹Π»ΠΎ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ gzip ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅, ΠΌΡ‹, нСсомнСнно, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ, скаТСм, 1000 Ρ€Π°Π·, Ρ‡Π΅ΠΌ Ссли Π±Ρ‹ ΠΌΡ‹ 1000 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… классов Π΄Π²Π°ΠΆΠ΄Ρ‹.

ΠŸΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° люди говорят ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ миксинов, ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ gzip (Π²Ρ‹ , Ρƒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ gzip, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?), ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ²Π΅Ρ€Ρ… ΡΠ΅Ρ‚ΡŒ .

Π― Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ послС сТатия нашСго CSS Ρ„Π°ΠΉΠ»Ρ‹ с большим количСством ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… строк Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄ΡƒΡ‚ мСньшС, Ρ‡Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€Π΅ΠΆΠ΅, нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Π― ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» большСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ мСньшС послС gzip , Ссли этот Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ состоит ΠΈΠ· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ строки.

Π― вСрнулся Π² свой Π½ΠΎΠΌΠ΅Ρ€ Π² ΠΎΡ‚Π΅Π»Π΅ ΠΈ Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свою Ρ‚Π΅ΠΎΡ€ΠΈΡŽ.

ЭкспСримСнт

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ я сдСлал.

  1. Π― создал Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° CSS.
  2. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π±Ρ‹Π»ΠΎ 1000 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… классов, сгСнСрированных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Sass:

      @ Π·Π° $ i ΠΎΡ‚ 1 Π΄ΠΎ 1000 {
      . # {unique-id ()} - # {$ i} {
        ...
      }
    }
      
  3. Π― Π΄Π°Π» ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ классу ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объявлСниС, просто ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ строку ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сформировал само имя с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ сСлСктора, ΠΈ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» нСсколько бСссмыслСнныС строки ΠΏΠΎ ΠΎΠ±Π΅ стороны ΠΎΡ‚ этого:

      @ Π·Π° $ i ΠΎΡ‚ 1 Π΄ΠΎ 1000 {
      . # {unique-id ()} - # {$ i} {
        содСрТаниС: "ibf # {&} jaslbw";
      }
    }
      
  4. Π—Π°Ρ‚Π΅ΠΌ я Π²Ρ‹Π±Ρ€Π°Π» Ρ‚Ρ€ΠΈ простых объявлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ останутся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ для всСх 1000 классов:

      Ρ†Π²Π΅Ρ‚: красный;
    font-weight: ΠΆΠΈΡ€Π½Ρ‹ΠΉ;
    высота строки: 2;
      
  5. Π’ ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ я подСлился этими объявлСниями Ρ‡Π΅Ρ€Π΅Π· миксин:

      @mixin foo {
      красный Ρ†Π²Π΅Ρ‚;
      font-weight: ΠΆΠΈΡ€Π½Ρ‹ΠΉ;
      высота строки: 2;
    }
    
    .# {unique-id ()} - # {$ i} {
      @include foo;
      содСрТаниС: "ibf # {&} jaslbw";
    }
      
  6. А Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ я подСлился ΠΈΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· @extend :

     % foo {
      красный Ρ†Π²Π΅Ρ‚;
      font-weight: ΠΆΠΈΡ€Π½Ρ‹ΠΉ;
      высота строки: 2;
    }
    
    . # {unique-id ()} - # {$ i} {
      @extend% foo;
      содСрТаниС: "ibf # {&} jaslbw";
    }
      

ВсС эти тСстовыС Ρ„Π°ΠΉΠ»Ρ‹ (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅) доступны Π½Π° GitHub.

Π£ мСня ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π°, состоящиС ΠΈΠ· ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… классов ΠΈ 1000 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… объявлСний, ΠΈ с трСмя ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ объявлСниями, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… способами.

Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ этих Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ вас ΡƒΠ΄ΠΈΠ²Π»ΡΡ‚ΡŒ:

  • mixin.css ΠΏΡ€ΠΈΡˆΠ΅Π» Π½Π° 108K .
  • extend.css ΠΏΡ€ΠΈΡˆΠ΅Π» Π½Π° 72K .
  • Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° 36K .
  • ИспользованиС миксинов Π±Ρ‹Π»ΠΎ Π½Π° 150% большС, Ρ‡Π΅ΠΌ использованиС @extend .

Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΎΠΆΠΈΠ΄Π°Π» — миксины ΠΈ производят большС CSS, Ρ‡Π΅ΠΌ @extend . Π΄Π΅Π»Π°Π΅Ρ‚.

Но! ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ слСдуСт Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° файловая систСма — ΠΌΡ‹ заботимся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Π½Π°ΡˆΠΈΡ… сТатых Ρ„Π°ΠΉΠ»ΠΎΠ².

Π― ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ» ΠΈ Π·Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π» Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

  • mixin.css ΠΏΡ€ΠΈΡˆΠ΅Π» Π½Π° 12K .
  • extend.css ΠΏΡ€ΠΈΡˆΠ΅Π» Π½Π° 18K .
  • Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° 6K .
  • ИспользованиС миксинов Π±Ρ‹Π»ΠΎ Π½Π° 33,333% мСньшС, Ρ‡Π΅ΠΌ использованиС @extend .

ΠŸΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅! ΠœΡ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΎΡ‚ миксинов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² 1,5 Ρ€Π°Π·Π° большС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании @extend , ΠΊ примСси Π½Π° 0,3 Γ— мСньшС , Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании @extend . Моя тСория каТСтся Π²Π΅Ρ€Π½ΠΎΠΉ!

Π”Π΅Π»Π°Π΅ΠΌ Π²Π΅Ρ‰ΠΈ Π±ΠΎΠ»Π΅Π΅ рСалистичными

Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ тСстовыС Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ довольно Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ — созданиС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… строк для класса ΠΈΠΌΠ΅Π½Π° Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΆΠ°Ρ‚ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ влияниС gzip Π½Π° Π½Π°ΡˆΡƒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ: ΠΎΠ±Ρ‰ΠΈΠ΅ объявлСния.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, тСстовыС Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ довольно нСрСалистичными, поэтому я Ρ€Π΅ΡˆΠΈΠ» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½Π΅Π΅.

Π― взял скомпилированный CSS ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, сдСлал Π΄Π²Π΅ Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΠΈ ΠΈ Π― @import Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΌΠΎΠΈΡ… тСстовых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ соотвСтствСнно. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΠ»ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΈ тСстовыС Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1794 строками Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, рСалистичного CSS.

Π― скомпилировал ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ тСстовый Ρ„Π°ΠΉΠ» ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

  • mixin.css ΠΏΡ€ΠΈΡˆΠ΅Π» Π½Π° 16K .
  • extend.css ΠΏΡ€ΠΈΡˆΠ΅Π» Π½Π° 22K .
  • Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° 6K .
  • ИспользованиС миксинов Π±Ρ‹Π»ΠΎ Π½Π° 27% мСньшС, Ρ‡Π΅ΠΌ использованиС @extend .

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ числа каТутся Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (всСго 6K), Π½ΠΎ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ экономии 27% ΠΏΠΎ сСти, просто Π²Ρ‹Π±Ρ€Π°Π² использованиС миксинов для повторСния объявлСния снова ΠΈ снова, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ использования @extend для повторСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСлСкторы.

ΠœΠΈΠΊΡΠΈΠ½Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Мои тСсты ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ миксины Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π»ΡƒΡ‡ΡˆΠ΅ подходят для сСти. ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании @extend .Π’ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ gzip, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ поправляСмся экономия , Π΄Π°ΠΆΠ΅ Ссли наши нСсТатыС Ρ„Π°ΠΉΠ»Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС .

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для @extend Π½Π΅ сущСствуСт. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΠ»ΠΎΡ…ΠΎ для вашСго CSS, @extend ΠΏΠ»ΠΎΡ…ΠΎ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π° ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ это.



β˜•οΈ Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ? ΠšΡƒΠΏΠΈ ΠΌΠ½Π΅ ΠΊΠΎΡ„Π΅!

миксов Sass | Foundation for Sites 6 Docs

Π‘Ρ‚ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ настроСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Sass Π² Ρ„Π°ΠΉΠ»Π΅ настроСк вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Имя Π’ΠΈΠΏ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
$ prototype-arrow-direction ΠšΠ°Ρ€Ρ‚Π° Π²Π½ΠΈΠ·
Π²Π²Π΅Ρ€Ρ…
Π²ΠΏΡ€Π°Π²ΠΎ
Π²Π»Π΅Π²ΠΎ

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС стрСлки Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

$ Ρ€Π°Π·ΠΌΠ΅Ρ€ стрСлки ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Число 0.4375Ρ€Π΅ΠΌ

Π¨ΠΈΡ€ΠΈΠ½Π° стрСлки, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0,4375rem .

$ Ρ†Π²Π΅Ρ‚ стрСлки ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Π¦Π²Π΅Ρ‚ $ Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ

Color of the Arrow, $ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

$ prototype-border-box-breakpoints логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для Ρ€Π°ΠΌΠΊΠΈ.

$ prototype-border-none-breakpoints логичСский $ global-prototype-breakpoints

ΠžΡ‚Π²Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ останова для Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½Π΅Ρ‚.

$ Ρ‚ΠΎΡ‡ΠΊΠ° останова с Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для слуТСбной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ.

$ ΡˆΠΈΡ€ΠΈΠ½Π°-ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Число rem-calc (1)

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для prototype-border-width

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ с Π±ΠΎΡ€Π΄ΡŽΡ€ΠΎΠΌ Π‘Ρ‚Ρ€ΠΎΠΊΠ° Ρ†Π΅Π»ΡŒΠ½Ρ‹ΠΉ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для prototype-border-type

$ prototype-border-color Π¦Π²Π΅Ρ‚ $ срСднС-сСрый

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для prototype-border-color ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ срСдний сСрый

$ prototype-display-breakpoints логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для классов отобраТСния

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ дисплСя ΠšΠ°Ρ€Ρ‚Π° встроСнный
встроСнный Π±Π»ΠΎΠΊ
Π±Π»ΠΎΠΊ
Ρ‚Π°Π±Π»ΠΈΡ†Π°
Ρ‚Π°Π±Π»ΠΈΡ†Π°-ячСйка

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС отобраТСния классов

$ prototype-font-breakpoints логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для Ρ‚ΠΈΠΏΠΎΠ² стилСй ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²

$ ΠΌΠ΅ΠΆΠ±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Число rem-расч. (4)

РасстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ .ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΡˆΡ€ΠΈΡ„Ρ‚-Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Число $ ΠΎΠ±Ρ‰ΠΈΠΉ вСс Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ

ВСс ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для .font-normal , ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — global-weight-normal

$ prototype-font-bold Число $ global-weight-bold

ВСс ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для .font-bold , ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — global-weight-bold

$ prototype-list-breakpoints логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для Ρ‚ΠΈΠΏΠΎΠ² стилСй списков

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΡΡ‚ΠΈΠ»ΡŒ-Ρ‚ΠΈΠΏ-нСупорядочСнный ΠšΠ°Ρ€Ρ‚Π° диск
ΠΊΡ€ΡƒΠ³
ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС нСупорядочСнных стилСй Ρ‚ΠΈΠΏΠ° классов

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΡΡ‚ΠΈΠ»ΡŒ-Ρ‚ΠΈΠΏ-Π·Π°ΠΊΠ°Π· ΠšΠ°Ρ€Ρ‚Π° дСсятичный
Π½ΠΈΠΆΠ½ΠΈΠΉ Π°Π»Ρ„Π°Π²ΠΈΡ‚
Π½ΠΈΠΆΠ½ΠΈΠΉ латинский
Π½ΠΈΠΆΠ½ΠΈΠΉ римский Π°Π»Ρ„Π°Π²ΠΈΡ‚
Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π°Π»Ρ„Π°Π²ΠΈΡ‚
Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ латинский Π°Π»Ρ„Π°Π²ΠΈΡ‚
Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ римский Π°Π»Ρ„Π°Π²ΠΈΡ‚

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС классов с упорядочСнным Ρ‚ΠΈΠΏΠΎΠΌ стиля

$ prototype-overflow-breakpoints логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… классов пСрСполнСния

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠšΠ°Ρ€Ρ‚Π° Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ
скрытый
свиток

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС классы пСрСполнСния

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-позиция-Ρ‚ΠΎΡ‡ΠΊΠΈ останова логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠ² ΠΏΠΎ полоТСнию

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-позиция ΠšΠ°Ρ€Ρ‚Π° статичСский
ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ
Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ
фиксированный

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ классов

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-позиция-z-индСкс Число 975

z-index для фиксированного позиционирования

$ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ с ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠΉ полСзности.

$ prototype-border-radius Число rem-расч. (3)

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для prototype-border-radius

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ-Ρ‚ΠΎΡ‡ΠΊΠΈ останова логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для раздСлитСля.

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ-Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ° Ρ†Π΅Π½Ρ‚Ρ€

Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ раздСлитСля ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

$ высота ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°-раздСлитСля Число остаток (2)

Высота раздСлитСля.

$ ΡˆΠΈΡ€ΠΈΠ½Π°-ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°-раздСлитСля Число 3rem

Π¨ΠΈΡ€ΠΈΠ½Π° раздСлитСля.

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ-Ρ„ΠΎΠ½ Π¦Π²Π΅Ρ‚ $ основной Ρ†Π²Π΅Ρ‚

Π¦Π²Π΅Ρ‚ раздСлитСля ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ-Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΊΡ€Π°ΠΉ Число $ глобальная ΠΌΠ°Ρ€ΠΆΠ°

Π’Π΅Ρ€Ρ…Π½Π΅Π΅ ΠΏΠΎΠ»Π΅ раздСлитСля.

$ prototype-shadow-breakpoints логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для Ρ‚Π΅Π½Π΅Π²ΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹.

$ prototype-box-shadow Число 0 2px 5px 0 rgba (0,0,0 ,.16), 0 2px 10px 0 rgba (0,0,0, .12)

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для prototype-box-shadow

$ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для классов ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² (поля ΠΈ отступы)

$ РасчСт ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠšΠ°Ρ€Ρ‚Π° ΡˆΠΈΡ€ΠΈΠ½Π°
высота

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ классов

$ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠšΠ°Ρ€Ρ‚Π° 25: 25%
50: 50%
75: 75%
100: 100%

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹.

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»-Ρ‚ΠΎΡ‡ΠΊΠΈ останова логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для классов ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² (поля ΠΈ отступы)

$ ΠΊΠΎΠ»-Π²ΠΎ проставок ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² Число 3

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (поля ΠΈ отступы)

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΡƒΠΊΡ€Π°ΡˆΠ΅Π½ΠΈΠ΅-Ρ‚ΠΎΡ‡ΠΊΠΈ останова логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для классов оформлСния тСкста

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-тСкст-ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠšΠ°Ρ€Ρ‚Π° надстрочный
ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹ΠΉ
сквозной

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС тСкстовоС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ классов

$ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ прСобразования ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для классов прСобразования тСкста

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-тСкст-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠšΠ°Ρ€Ρ‚Π° строчныС
прописныС
Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅

ΠšΠ°Ρ€Ρ‚Π°, содСрТащая всС прСобразования тСкста классов

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹-Ρ‚ΠΎΡ‡ΠΊΠΈ останова логичСский $ global-prototype-breakpoints

АдаптивныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова для тСкстовых ΡƒΡ‚ΠΈΠ»ΠΈΡ‚

$ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ-ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСкста Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСполнСния тСкста

css «миксинов» со стилизованными ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ

Π― часто ΡΠ»Ρ‹ΡˆΠ°Π» Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «миксин», Π΄Π°ΠΆΠ΅ Π½Π΅ понимая Π΅Π³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ Ρ†Π΅Π½Π½Ρ‹.

Π― ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π³Π»Π°Π²Π° ΠΎ миксинах ΠΎΡ‚ Object-Oriented CSS org содСрТит Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² миксины, ΠΈ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ миксины ΠΊΠ°ΠΊ:

Mixins ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΏΠ°Ρ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π°Π±ΠΎΡ€Π°Ρ… ΠΏΡ€Π°Π²ΠΈΠ».

Π­Ρ‚Π° Π³Π»Π°Π²Π° Π±Ρ‹Π»Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Π½ΠΎ я Π½Π΅ ΠΏΠΈΡˆΡƒ CSS. Или Π½Π΅ совсСм. НС Π² смыслС глобальной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй.

По большСй части я ΠΈΠ·ΡƒΡ‡Π°Π» CSS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов CSS-in-JS, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ styled-components , эмоций ΠΈ Ρ‚. Π”.

ИспользованиС этих инструмСнтов Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π±Ρ‹Π»ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° я Π½Π°Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡΡŒ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ своСго понимания , ΠΊΠ°ΠΊ CSS Π½Π° самом Π΄Π΅Π»Π΅ компилируСтся ΠΈ примСняСтся, это ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅Π΄Π°Π²Π½Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ миксинов Π±Ρ‹Π»ΠΎ Π±Π»Π°Π³ΠΎΠΌ для ΠΌΠΎΠ΅Π³ΠΎ CSS.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ css , ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ:

Ρ‚Π΅ΠΌΠ° / mixins.js

  ΠΈΠΌΠΏΠΎΡ€Ρ‚ {css} ΠΈΠ· 'styled-components'

экспорт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ {
    ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄: (свойства, Ρ‚ΠΈΠΏ = 'Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ', врСмя = '0.25 с ') => css`
        ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄: $ {врСмя} $ {Ρ‚ΠΈΠΏ};
        свойство-ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄: $ {свойства};
        Π±ΡƒΠ΄Π΅Ρ‚-ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: $ {свойства};
    `,
    disabledStyle: (disabled = false) => css`
        Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ: $ {ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ? 0,6: ''};
        курсор: $ {ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ && `default`};
    `,
}  

Π—Π°Ρ‚Π΅ΠΌ я ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ Π΅Π³ΠΎ ΠΈΠ· Ρ‚Π΅ΠΌΡ‹ / index.js ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Ρ‚Π΅ΠΌΠ° / index.js

  экспорт {ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠ°ΠΊ миксины} ΠΈΠ· ./mixins
  

Π§Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ такая Π²Π΅Ρ‰ΡŒ? Π•Π΄ΠΈΠ½ΠΎΠ΅ мСсто для управлСния всСми ΠΌΠΎΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°ΠΌΠΈ.

НапримСр:

ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° / ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°

  ΠΈΠΌΠΏΠΎΡ€Ρ‚ {миксинов} ΠΈΠ· '../theme'

экспорт const Wrapper = styled.div`
    / * всС ΠΌΠΎΠΈ стандартныС стили * /
    $ {mixins.transition ('Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ')};
    $ {({disabled}) => mixins.disabledStyle (disabled)};
` 

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ этого Π² дСйствии, я собрал CodeSandBox. Π₯отя это элСмСнтарно, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, насколько ΠΌΠΎΡ‰Π½Ρ‹ΠΌ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ссли Π²Ρ‹ управляСтС дСсятками ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ стиля.

65+ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° миксинов SASS »Автор CSS

SASS — это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ CSS, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ классныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ миксины. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ SASS позволят Π²Π°ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ значСния Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй. БмСшиваниС позволяСт Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ стилСй. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ снова ΠΈ снова.

По ΠΌΠ΅Ρ€Π΅ продвиТСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠΊΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ повторяСтся Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… (Ρ‚Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ², ΡƒΠ·ΠΎΡ€Ρ‹ …). Π’Π°ΠΊ Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ Π² качСствС шаблона для дальнСйшСго использования.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΠΈΠΊΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ вашС врСмя. Π’Π°ΠΊΠΆΠ΅ доступны ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΈΠΊΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΈ экономят врСмя.

Π’ этом постС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ‹Ρ… SASS Mixins Library . ΠœΡ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΈ просты Π² использовании.

Π‘ΡƒΡ€Π±ΠΎΠ½

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Family.scss

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Π΅Ρ€Ρ‚Π΅ΠΆ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡƒΠ»Ρƒ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΈΠΊΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Cssowl

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’ΠΎΡ‡ΠΊΠ° останова

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Scut

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Кнопки

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π¨Π°Ρ„Ρ€Π°Π½

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

НаборныС

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Sassline

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π­Π½Π΄ΠΈ.scss

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Bi App Sass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”Π΅Ρ€Π·ΠΊΠΈΠ΅ Π²Ρ…ΠΎΠ΄Ρ‹

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΊΠ°Π»Ρ‹

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ананас-сас

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΊ ΠΎΡƒ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ЭллиптичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Sass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° миксинов Sass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π±Π°ΠΉΡ‚Π°

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° BKWLD Sass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘Π°Π½Π΄Π°Π»ΠΈΠΈ Sass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Spuit

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π Π΅Π»ΡŒΡΡ‹ Gintonic

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

DryGrapes

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Набор символов Sass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПолСзная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Sass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Sass Config Manager

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

слоновая ΠΊΠΎΡΡ‚ΡŒ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Букияки

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠœΠ΅Ρ€ΠΊΡƒΡ€ΠΈΠΉ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Автоприставка

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

XMixins

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Ѐлюс

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Exsass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠΠ°Ρ…Π°Π»ΡŒΠ½Ρ‹ΠΉ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Crossass

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

QSL

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΏΠ»Π°ΠΉΠ½

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

SilverSASS

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

z-освСщСниС

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

АссСмблСрныС миксы

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Масизимэ миксины

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Dered.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *