Zoeken…


Syntaxis

  • @extend .<className>
  • @extend .<className>, .<className>
  • @extend .<className> !optional
  • @extend .<className>, .<className> !optional

parameters

Parameter Details
naam van de klasse De klasse die u wilt uitbreiden.

Opmerkingen

Met de @extend regel van Sass kunt u CSS-eigenschappen over meerdere klassen delen, waardoor de code DROOG en beter leesbaar blijft.

Een klasse uitbreiden

.message
  color: white

.message-important
  @extend .message
  background-color: red

Dit neemt alle stijlen van .message en voegt ze toe aan .message-important . Het genereert de volgende CSS:

.message, .message-important {
  color: white;
}

.message-important {
  background-color: red;
}

Uitbreiden van meerdere klassen

.message
  color: white

.important
  background-color: red

.message-important
  @extend .message, .important

In de bovenstaande code wordt @extend op één regel gebruikt om de code van meerdere klassen toe te voegen aan .message-important . Het is echter mogelijk om één verlenging per regel als volgt te gebruiken:

.message-important
    @extend .message
    @extend .important

Elk van deze methoden genereert de volgende CSS:

.message, .message-important {
  color: white;
}

.important, .message-important {
  background-color: red;
}

Chaining breidt uit

.message
  color: white
  background: black

.message-important
  @extend .message
  font-weight: bold

.message-error
  @extend .message-important
  font-style: italic

Deze code zorgt ervoor dat .message-error zich uitstrekt van .message-important , wat betekent dat het code bevat van zowel .message-important als .message , omdat .method-important zich uitstrekt van .message . Dit resulteert in de volgende CSS:

.message, .message-important, .message-error {
  color: white;
  background: black;
}

.message-important, .message-error {
  font-weight: bold;
}

.message-error {
  font-style: italic;
}

Disclaimer: zorg ervoor dat de klasse (s) waarvan u uitbreidt slechts één keer in de code voorkomt, anders kan Sass een rommelige, ingewikkelde CSS genereren.

Optioneel Verlengt

Soms wilt u misschien dat een @extend optioneel is en niet vereist dat de opgegeven klasse in uw code @extend .

.message-important
  @extend .message !optional
  background: red

Dit resulteert in de volgende CSS:

.message-important {
  background: red;
}

Disclaimer: dit is handig tijdens de ontwikkeling wanneer u misschien nog niet al uw code hebt geschreven en geen fouten wilt, maar deze moet waarschijnlijk in de productie worden verwijderd omdat dit tot onverwachte resultaten kan leiden.

placeholders

Soms maakt u klassen die op zichzelf niet worden gebruikt, maar eerder worden uitgebreid binnen andere regelsets. Dit betekent dat het gecompileerde CSS-bestand groter is dan nodig is. Placeholder-selectors lossen dit probleem op.

Placeholder-selectors zijn vergelijkbaar met class-selectors, maar ze gebruiken het procentteken (%) in plaats van de (.) Die voor klassen wordt gebruikt. Ze worden niet weergegeven in de gecompileerde CSS.

%button {
    border: 5px solid black;
    border-radius: 5px;
    margin: 0;
} 

.error-button {
    @extend %button;
    background-color: #FF0000;
}

.success-button {
    @extend %button;
    background-color: #00FF00;
}

Dit compileert naar de volgende CSS:

.error-button, .success-button {
    border: 5px solid black;
    border-radius: 5px;
    margin: 0;
}

.error-button {
    background-color: #FF0000;
}

.success-button {
    background-color: #00FF00;
}

De ouder verlengen

Doorgaans proberen we de ouder zo uit te breiden:

.parent {
  style: value;

  @extend &;
}

Zal resulteren in een foutmelding dat de ouder niet kan worden verlengd. Dit is logisch, maar er is een oplossing. Sla de ouderkiezer eenvoudig op in een variabele.

.parent {
  $parent: &;
  style: value;
  @extend #{&};
}

Er is geen voordeel om dit in het bovenstaande voorbeeld te doen, maar dit geeft je de mogelijkheid om ouderstijlen te verpakken vanuit een meegeleverde mixin.



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