Indholdsblokke i mixins i SASS

For at overføre en blok af stile inde i et mixin bruger vi direktivet @content, hvor de nødvendige stile vil blive placeret.

Lad os se på et eksempel:

styles.scss@mixin active {
  * div {
    @content;
  }
}

@include active {
  #block {
    color: red;
  }
}

Kompileringsresultat:

styles.css* div #block {
  color: red; 
}

Det er vigtigt at vide, at hvis vi angiver direktivet @content mere end én gang eller inde i en løkke, så vil blokken af stile også blive kaldt lige så mange gange.

styles.scss@mixin active {
  div {
    @content;
  }
navbar {
    @content;
  }
}
@include active {
  #block {
    color: red;
  }
  button {
    color:green;
  }
}

Efter kompilering vil vi se:

styles.cssdiv #block {
  color: red; 
}
div button {
  color: green; 
}

navbar #block {
  color: red; 
}
navbar button {
  color: green; 
}
Задание 1

Forklar, hvad resultatet af kompileringen af følgende kode vil være:

styles.scss@mixin super-link {
  a {
    @content;
  }
}
@include super-link {
  color: blue;
  text-decoration: underline;
}
Задание 2

Forklar, hvad resultatet af kompileringen af følgende kode vil være:

styles.scss@mixin super-link {
  a {
    @content;
  }
  a .primary-link{
    @content;
    font-weight: bold;
  }
}
@include super-link {
  color: blue;
  text-decoration: underline;
}
Задание 3

Antag, at du har følgende mixin:

styles.scss@mixin colors {
  ...
}

Ved at bruge direktivet @content sæt blå skriftfarve og bølget understregning for alle links, der relaterer sig til #primary.