Zoeken…


Herhalingslus

De @while instructie loopt over een codeblok totdat de opgegeven voorwaarde vals wordt. In het volgende voorbeeld loopt deze lus tot $font-size <= 18 terwijl de waarde voor $font-size met 2 wordt verhoogd.

$font-size: 12;

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

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

Uitvoer van bovenstaande code

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

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

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

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

for loop

Met de @for richtlijn kunt u bepaalde code doorlopen voor een bepaald aantal iteraties en heeft twee vormen:

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

Het verschil in de twee vormen is het door en het aan ; de doorgaande sleutelwoord omvat de <end> waar zal niet in de lus; gebruiken via is het equivalent van het gebruik van >= of <= in andere talen, zoals C ++, JavaScript of PHP.

Notes

  • Zowel <start> als <end> moeten gehele getallen zijn of functies die gehele getallen retourneren.
  • Wanneer <start> groter is dan <end> de teller afnemen in plaats van verhogen.

SCSS-voorbeeld

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

Voorwaardelijke richtlijn (indien)

De @if besturingsrichtlijn evalueert een gegeven uitdrukking en als het iets anders dan false retourneert, verwerkt het zijn blok stijlen.

Sass Voorbeeld

$test-variable: true !default

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

.test-selector
  +test-mixin

SCSS-voorbeeld

$test-variable: true !default

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

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

De bovenstaande voorbeelden produceren de volgende CSS:

.test-selector {
  display: block;
}

Elke lus

Met de @each-richtlijn kunt u elke lijst of kaart doorlopen. Het heeft de vorm van @each $var or <list or map> {} waarbij $var elke variabelenaam kan zijn en <list or map> kan zijn dat een lijst of kaart retourneert.

In het volgende voorbeeld doorloopt de lus de $authors $author die elk item toewijst aan $author , verwerkt het blok stijlen met die waarde van $author en gaat u door naar het volgende item in de lijst.

SCSS-voorbeeld

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

CSS-uitvoer

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

Meervoudige opdracht

Met meervoudige toewijzing kunt u eenvoudig toegang krijgen tot alle variabelen door meerdere variabelen te declareren in de @each richtlijn.

Geneste lijsten

Voor gemakkelijke toegang tot alle geneste elementen, kunt u afzonderlijke variabelen declareren die overeenkomen met elk genest element. Zorg ervoor dat u het juiste aantal variabelen en geneste elementen hebt. In het volgende voorbeeld doorloopt elke lus een lijst met drie elementen die elk drie geneste elementen bevatten. Het hebben van het verkeerde aantal gedeclareerde variabelen zal resulteren in een compilerfout.

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

Kaarten

Meerdere toewijzing werkt ook voor Kaarten, maar is beperkt tot slechts twee variabelen, een variabele voor toegang tot de sleutel en een variabele voor toegang tot de waarde. De namen $key en $value zijn willekeurig in het volgende voorbeeld:

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

Elke lus met kaarten / lijstwaarden

In het onderstaande voorbeeld wordt de waarde in map $color-array behandeld als een lijst met paren.

SCSS-invoer

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

CSS-uitvoer

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

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

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow