Mixiny w Sass pozwalają na definiowanie stylów, które mogą być ponownie używane w całym arkuszu stylów bez konieczności powtarzania kodu. Mixiny są szczególnie przydatne, gdy potrzebujesz używać tych samych deklaracji CSS w wielu miejscach.
Aby zdefiniować mixin, użyj dyrektywy @mixin, a następnie podaj nazwę mixina. Na przykład:
1@mixin reset-list {
2 margin: 0;
3 padding: 0;
4 list-style: none;
5}Aby użyć mixina, użyj dyrektywy @include, a następnie podaj nazwę mixina. Na przykład:
1ul, ol {
2 @include reset-list;
3}Po skompilowaniu powyższy kod do CSS, otrzymamy:
1ul, ol {
2 margin: 0;
3 padding: 0;
4 list-style: none;
5}Mixiny w Sass mogą także przyjmować argumenty, co czyni je jeszcze bardziej elastycznymi. Przykładowo, możemy stworzyć mixin, który generuje style dla przycisków o różnych kolorach:
1@mixin button-color($color) {
2 background-color: $color;
3 color: white;
4 &:hover {
5 background-color: darken($color, 10%);
6 }
7}
8
9.button-primary {
10 @include button-color(blue);
11}
12
13.button-danger {
14 @include button-color(red);
15}Po skompilowaniu do CSS otrzymamy:
1.button-primary {
2 background-color: blue;
3 color: white;
4}
5.button-primary:hover {
6 background-color: darkblue;
7}
8
9.button-danger {
10 background-color: red;
11 color: white;
12}
13.button-danger:hover {
14 background-color: darkred;
15}Jak widać, mixiny są bardzo potężnym narzędziem w Sass, które pozwala na znaczne uproszczenie kodu i zwiększenie jego reużywalności. Pamiętaj jednak, aby używać ich z umiarem, aby uniknąć niepotrzebnego komplikowania kodu.
Utwórz następującą strukturę plików dla projektu:
1project/
2|-- scss/
3| |-- _mixins.scss
4| |-- main.scss
5|-- css/
6| |-- main.css
7|-- index.htmlW pliku _mixins.scss zdefiniuj mixin reset-list, który resetuje styl list:
1// _mixins.scss
2@mixin reset-list {
3 margin: 0;
4 padding: 0;
5 list-style: none;
6}Dodaj mixin button-style, który pozwoli na tworzenie przycisków o różnych kolorach:
1// _mixins.scss
2@mixin button-style($color) {
3 background-color: $color;
4 color: white;
5 padding: 10px 20px;
6 border: none;
7 border-radius: 5px;
8 cursor: pointer;
9 &:hover {
10 background-color: darken($color, 10%);
11 }
12}Dodaj mixin center-flex, który ustawi elementy we flexboxie na środku:
1// _mixins.scss
2@mixin center-flex {
3 display: flex;
4 justify-content: center;
5 align-items: center;
6}W pliku main.scss zaimportuj mixiny i użyj ich do stylizacji elementów:
1// main.scss
2@use 'mixins';
3
4ul, ol {
5 @include mixins.reset-list;
6}
7
8.button-primary {
9 @include mixins.button-style(blue);
10}
11
12.button-danger {
13 @include mixins.button-style(red);
14}
15
16.container {
17 @include mixins.center-flex;
18 height: 100vh;
19}Utwórz plik index.html i dodaj do niego następującą strukturę:
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Projekt Sass</title>
7 <link rel="stylesheet" href="css/main.css">
8</head>
9<body>
10 <div class="container">
11 <ul>
12 <li>Element 1</li>
13 <li>Element 2</li>
14 <li>Element 3</li>
15 </ul>
16 <button class="button-primary">Przycisk Primary</button>
17 <button class="button-danger">Przycisk Danger</button>
18 </div>
19</body>
20</html>Użyj narzędzia do kompilacji Sass (np. node-sass, Dart Sass, czy preprocesora w edytorze) do wygenerowania pliku CSS (main.css) z pliku Sass (main.scss).
Zadanie to pomoże Ci zrozumieć, jak definiować i używać mixinów w Sass, co prowadzi do bardziej zorganizowanego i efektywnego kodu CSS.