Zoeken…


Syntaxis

  • @mixin mixin-name ($argument1, $argument, ...){ ... }

Maak en gebruik een mixin

Gebruik de @mixin mixin-richtlijn om een mixin te maken.

@mixin default-box ($color, $borderColor) {
    color: $color;
    border: 1px solid $borderColor;
    clear: both;
    display: block;
    margin: 5px 0;
    padding: 5px 10px;
}

U kunt een lijst met argumenten binnen een haakje opgeven na de naam van de mixin. Vergeet niet om uw variabelen te beginnen met $ en ze te scheiden met komma's.

Om de mixin in een andere selector te gebruiken, gebruikt u de @include richtlijn.

footer, header{ @include default-box (#ddd, #ccc); }

De stijlen van de mixin worden nu gebruikt in de footer en de header , met de waarde #ccc voor de variabele $color en #ddd voor de variabele $borderColor .

Mixin met variabel argument

Er zijn enkele gevallen in mixins waarbij er enkele of meerdere argumenten kunnen zijn tijdens het gebruik. Laten we een geval van border-radius waarbij er één argument kan zijn zoals border-radius:4px; of meerdere argumenten zoals border-radius:4px 3px 2px 1px; .

Traditioneel met het combineren van zoekwoordargumenten is als volgt: -

@mixin radius($rad1, $rad2, $rad3, $rad4){
 -webkit-border-radius: $rad1 $rad2 $rad3 $rad4;
 -moz-border-radius: $rad1 $rad2 $rad3 $rad4;
 -ms-border-radius: $rad1 $rad2 $rad3 $rad4;
 -o-border-radius: $rad1 $rad2 $rad3 $rad4;
 border-radius: $rad1 $rad2 $rad3 $rad4;
}

En gebruikt als

.foo{
    @include radius(2px, 3px, 5px, 6px)
}

Het bovenstaande voorbeeld is complex (om te coderen, te lezen en te onderhouden) en als u niet slechts één waarde of twee waarden kunt doorgeven, geeft dit een foutmelding en om één, twee of hun waarden te gebruiken , moet u drie andere mixins definiëren.

Door variabele Argument te gebruiken , hoeft u zich geen zorgen te maken over hoeveel argumenten u kunt doorgeven. Variabele argumenten kunnen worden opgegeven door een variabelenaam te definiëren, gevolgd door drie punten (...) . Hierna volgt een voorbeeld van een variabel argument.

@mixin radius($radius...)
{  
    -webkit-border-radius: $radius;
    -moz-border-radius: $radius;
    -ms-border-radius: $radius;
    -o-border-radius: $radius;
    border-radius: $radius;
}

En gebruikt als

.foo{
    @include radius(2px 3px 5px 6px)
}
.foo2{
    @include radius(2px 3px)
}
.foo3{
    @include radius(2px)
}

Het bovenstaande voorbeeld is veel eenvoudiger (coderen, onderhouden en lezen), u hoeft zich geen zorgen te maken over hoeveel argumenten er binnenkort komen - is het een of meer dan één .

Als er meer dan één argument is en u wilt in elk geval toegang krijgen tot het tweede argument, kunt u dit doen door propertyname : nth(variable_name, 2) .

Verstandige standaardwaarden

SASS geeft u de mogelijkheid om elke parameter weg te laten, behalve degene die u natuurlijk wilt overschrijven. Laten we het default-box voorbeeldvoorbeeld opnieuw nemen:

@mixin default-box ($color: red, $borderColor: blue) {
    color: $color;
    border: 1px solid $borderColor;
    clear: both;
    display: block;
    margin: 5px 0;
    padding: 5px 10px;
}

Hier noemen we nu dat de mixin de tweede parameter heeft overschreven

footer, header{ @include default-box ($borderColor: #ccc); }

de waarde van $borderColor is #ccc , terwijl $color red blijft

Optionele argumenten

Met de optionele argumenten van SASS kunt u een parameter alleen gebruiken als u de waarde ervan opgeeft; anders wordt het genegeerd. Laten we een voorbeeld nemen van de volgende mixin:

@mixin galerie-thumbnail ($img-height:14em, $img-width: null) {
    width: $img-width;
    height: $img-height;
    outline: 1px solid lightgray;
    outline-offset: 5px;
}

Dus een oproep aan

.default { 
  @include galerie-thumbnail; 
}
.with-width { 
  @include galerie-thumbnail($img-width: 12em);
}
.without-height { 
  @include galerie-thumbnail($img-height: null);
}

zal eenvoudig het volgende uitvoeren in het CSS-bestand:

.default {
  height: 14em;
  outline: 1px solid lightgray;
  outline-offset: 5px;
}

.with-width {
  width: 12em;
  height: 14em;
  outline: 1px solid lightgray;
  outline-offset: 5px;
}

.without-height {
  outline: 1px solid lightgray;
  outline-offset: 5px;
}

SASS voert geen eigenschappen uit met null als hun waarde, wat erg handig is als we een optioneel argument in onze call moeten opnemen of niet.

@ inhoudsrichtlijn

Mixins kunnen een blok met SASS-compatibele code worden doorgegeven, die vervolgens binnen de mixin beschikbaar komt als de @content richtlijn.

@mixin small-screen {
  @media screen and (min-width: 800px;) {
    @content;
  }
}

@include small-screen {
  .container {
    width: 600px;
  }
}

En dit zou het volgende opleveren:

  @media screen and (min-width: 800px;) {
    .container {
      width: 600px;
    }
  }

Mixins kunnen de @content richtlijn gebruiken en nog steeds parameters accepteren.

@mixin small-screen($offset) {...


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