Ricerca…


Mentre loop

La direttiva @while eseguirà un ciclo su un blocco di codice finché la condizione specificata non diventa falsa. Nell'esempio seguente, questo ciclo verrà eseguito fino a $font-size <= 18 durante l'incremento del valore per $font-size per 2.

$font-size: 12;

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

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

Uscita del codice precedente

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

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

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

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

per ciclo

La direttiva @for consente di eseguire il looping di alcuni codici per una quantità prestabilita di iterazioni e ha due forme:

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

La differenza tra le due forme è il tramite e il a ; la parola chiave attraverso includerà il <end> nel circuito dove non lo farà; usare through è l'equivalente di usare >= o <= in altri linguaggi, come C ++, JavaScript o PHP.

Gli appunti

  • Sia <start> che <end> devono essere numeri interi o funzioni che restituiscono numeri interi.
  • Quando <start> è maggiore di <end> il contatore decrementa invece di incrementare.

Esempio 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; }

Direttiva condizionale (se)

La direttiva di controllo @if valuta una determinata espressione e se restituisce qualcosa di diverso da false , elabora il suo blocco di stili.

Sass Esempio

$test-variable: true !default

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

.test-selector
  +test-mixin

Esempio SCSS

$test-variable: true !default

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

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

Gli esempi precedenti producono il seguente CSS:

.test-selector {
  display: block;
}

Ogni ciclo

La direttiva @each ti consente di scorrere qualsiasi elenco o mappa. Prende la forma di @each $var or <list or map> {} dove $var può essere un qualsiasi nome di variabile e <list or map> può essere qualsiasi cosa che restituisca un elenco o una mappa.

Nell'esempio seguente, il ciclo eseguirà l'iterazione dell'elenco $authors assegnando ciascun elemento a $author , elaborerà il suo blocco di stili utilizzando quel valore di $author e passerà all'elemento successivo nell'elenco.

Esempio SCSS

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

Output 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;
}

Assegnazione multipla

L'assegnazione multipla consente di accedere facilmente a tutte le variabili dichiarando più variabili nella direttiva @each .

Elenchi nidificati

Per avere un facile accesso a tutti gli elementi nidificati, è possibile dichiarare variabili separate per abbinare ogni elemento nidificato. Assicurati di avere la giusta quantità di variabili e elementi nidificati. Nell'esempio seguente, ogni loop sta iterando attraverso un elenco di tre elementi ciascuno dei quali contiene nested di tre elementi. Avere la quantità sbagliata di variabili dichiarate comporterà un errore del compilatore.

@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;
  }
}

Mappe

L'assegnazione multipla funziona anche per Maps ma è limitata a solo due variabili, una variabile per accedere alla chiave e una variabile per accedere al valore. I nomi $key e $value sono arbitary nel seguente esempio:

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

Ogni ciclo con mappe / valori di lista

Nel seguente valore di esempio nella mappa $color-array è trattato come un elenco di coppie.

Ingresso SCSS

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

Output CSS

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

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

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow