Recherche…


En boucle

La directive @while boucle sur un bloc de code jusqu'à ce que la condition spécifiée devienne fausse. Dans l'exemple suivant, cette boucle s'exécutera jusqu'à $font-size <= 18 tout en incrémentant la valeur de $font-size de 2.

$font-size: 12;

@while $font-size <= 18 {
    .font-size-#{$font-size} {
        font-size: ($font-size * 1px);
    }

    $font-size: $font-size + 2;
}

Sortie du code ci-dessus

.font-size-12 {
  font-size: 12px;
}

.font-size-14 {
  font-size: 14px;
}

.font-size-16 {
  font-size: 16px;
}

.font-size-18 {
  font-size: 18px;
}

pour la boucle

La directive @for vous permet de parcourir un code pour une quantité définie d'itérations et a deux formes:

  • @for <var> from <start> through <end> {}
  • @for <var> from <start> to <end> {}

La différence entre les deux formes est le travers et le à ; le mot - clé à travers comprendra la <end> dans la boucle où ne sera pas; using through équivaut à utiliser >= ou <= dans d'autres langages, tels que C ++, JavaScript ou PHP.

Remarques

  • <start> et <end> doivent tous deux être des entiers ou des fonctions qui renvoient des entiers.
  • Lorsque <start> est supérieur à <end> le compteur diminuera au lieu de l'incrément.

Exemple SCSS

@for $i from 1 through 3 {
  .foo-#{$i} { width: 10px * $i; }
}

// CSS output
.foo-1 { width: 10px; }
.foo-2 { width: 20px; }
.foo-3 { width: 30px; }

Directive conditionnelle (if)

La directive de contrôle @if évalue une expression donnée et si elle renvoie autre chose que false , elle traite son bloc de styles.

Sass Exemple

$test-variable: true !default

=test-mixin
  @if $test-variable
    display: block
  @else
    display: none

.test-selector
  +test-mixin

Exemple SCSS

$test-variable: true !default

@mixin test-mixin() {
  @if $test-variable {
    display: block;
  } @else {
    display: none;
  }
}

.test-selector {
  @include test-mixin();
}

Les exemples ci-dessus produisent les CSS suivantes:

.test-selector {
  display: block;
}

Chaque boucle

La directive @each vous permet de parcourir toute liste ou carte. Il se présente sous la forme de @each $var or <list or map> {}$var peut être n'importe quel nom de variable et <list or map> peut être tout ce qui renvoie une liste ou une carte.

Dans l'exemple suivant, la boucle va parcourir la liste $authors attribuant chaque élément à $author , traiter son bloc de styles en utilisant cette valeur de $author et passer à l'élément suivant de la liste.

Exemple SCSS

$authors: "adam", "steve", "john";
@each $author in $authors {
    .photo-#{$author} {
      background: image-url("avatars/#{$author}.png") no-repeat
    }
}

Sortie CSS

.photo-adam {
  background: image-url("avatars/adam.png") no-repeat;
}
.photo-steve {
  background: image-url("avatars/steve.png") no-repeat;
}
.photo-john {
  background: image-url("avatars/john.png") no-repeat;
}

Affectation multiple

Les affectations multiples vous permettent d'accéder facilement à toutes les variables en déclarant plusieurs variables dans la directive @each .

Listes imbriquées

Pour accéder facilement à tous les éléments imbriqués, vous pouvez déclarer des variables distinctes correspondant à chaque élément imbriqué. Assurez-vous de disposer du nombre correct de variables et d'éléments imbriqués. Dans l'exemple suivant, chaque boucle effectue une itération dans une liste de trois éléments contenant chacun trois éléments imbriqués. Avoir la mauvaise quantité de variables déclarées entraînera une erreur de compilation.

@each $animal, $color, $cursor in (puma, black, default),
                                  (sea-slug, blue, pointer),
                                  (egret, white, move) {
  .#{$animal}-icon {
    background-image: url('/images/#{$animal}.png');
    border: 2px solid $color;
    cursor: $cursor;
  }
}

Plans

L'attribution multiple fonctionne également pour Maps mais se limite à deux variables, une variable pour accéder à la clé et une variable pour accéder à la valeur. Les noms $key et $value sont arbitraires dans l'exemple suivant:

@each $key, $value in ('first': 1, 'second': 2, 'third': 3) {
  .order-#{$key} {
    order: $value;
  }
}

Chaque boucle avec des cartes / valeurs de liste

Dans l'exemple ci-dessous, la valeur dans map $color-array est traitée comme une liste de paires.

Entrée SCSS

$color-array:(
  black: #4e4e4e,                       
  blue: #0099cc,
  green: #2ebc78
);
@each $color-name, $color-value in $color-array {
  .bg-#{$color-name} {
    background: $color-value;
  }
}

Sortie CSS

.bg-black {
  background: #4e4e4e;
}

.bg-blue {
  background: #0099cc;
}

.bg-green {
  background: #2ebc78;
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow