Wstęp do preprocesora Sass – dyrektywa @mixin


Wraz z rozwojem projektu, powstawaniem nowych modułów i funkcjonalności, kod CSS warstwy wizualnej staje się coraz bardziej złożony. Utrzymanie i rozwój kaskadowych arkuszy stylów może okazać się problematyczne.

Jak usprawnić swoją pracę i zoptymalizować pisany przez nas kod?

Bardzo dobrym rozwiązaniem okazuje się użycie preprocesora CSS.

W tym wpisie zostanie przedstawiona dyrektywa @mixin – potężne narzędzie, które oferuje nam preprocesor Sass.

 

@mixin

Dyrektywa @mixin, nazywana też w języku polskim domieszką (w tym wpisie będę używać obu tych określeń zamiennie), pozwala na zdefiniowanie zestawu właściwości CSS, których można użyć w dowolnym miejscu w kodzie Sass.

Po kompilacji do wynikowego kodu CSS zestaw reguł zdefiniowanych w domieszce wyświetla się tak samo, jak pozostałe, statycznie dodane właściwości CSS. Używanie domieszek w kodzie Sass pozwala nam na pracę zgodnie z zasadą DRY (ang. Don’t Repeat Yourself).

Domieszki definiuje się za pomocą dyrektywy @mixin. Aby móc wykorzystać zdefiniowaną już domieszkę, wystarczy dołączyć ją za pomocą dyrektywy @include w dowolnym miejscu w kodzie.

Poniżej prosty przykład w jaki sposób definiujemy domieszki oraz jak możemy ich użyć w kodzie:


@mixin sample { 
 
   color: #78a614;
  
}
  
 
h1 {
  
   @include sample; 
}

 
Dyrektywa @mixin może zaoferować zdecydowanie więcej.

Oprócz określania statycznych reguł CSS, możemy również użyć argumentów w deklaracji dyrektywy @mixin, jak również zdefiniować dla nich domyślne wartości. Kiedy może okazać się to przydatne? Na przykład wtedy, gdy atrybuty powinny przyjmować różne wartości.
Poniżej przykład zastosowania dyrektywy @mixin wraz z argumentami:


@mixin headline ($color, $size: 12px) { 
   color: $color; 
   font-size: $size; 
}
 
 
h1 { 
   @include headline(#68a614); 
}

Jak widać w przykładzie zastosowano domieszkę, która przyjmuje dwa argumenty, z czego jeden ($size) posiada domyślnie zdefiniowaną wartość, która wynosi 12px.
W wywołaniu domieszki możemy w argumentach podać zarówno wartości dla obu argumentów, jak i pominąć argument $size (staje się on parametrem opcjonalnym) – wówczas zostanie użyta zdefiniowana już przez nas wcześniej wartość domyślna.

Co w sytuacji, gdy nie mamy pewności ile argumentów będziemy chcieli przekazać?
Interesujący przykład z użyciem nieokreślonej liczby argumentów jest przedstawiony poniżej:


@mixin margin($values...) {     
    @each $val in $values { 
        margin: #{$val}; 
    } 
} 
div { 
    @include margin(5px 1px 10px 3px); 
}

W tym przypadku podaliśmy kilka argumentów, które zostały potraktowane przez naszą domieszkę jako lista, którą przypisane zostają do właściwości margin. Jest to świetne rozwiązanie w przypadku, gdy nie wiemy z góry ile argumentów powinien przyjąć nasz mixin.
Dzięki temu nasz kod zyskuje na przejrzystości oraz jest bardzo zwięzły.

Parę słów o dziedziczeniu – dyrektywa @extend

Pisząc o mixinach nie sposób nie wspomnieć o dyrektywie @extend.
Do czego ona służy? Najprościej ujmując, użycie @extend umożliwia udostępnienie właściwości CSS z jednego selektora na drugi.
@extend bardzo łatwo pomylić z dyrektywą @mixin, ponieważ w kodzie Sass wydają się one bardzo podobne w działaniu.
Różnice zauważalne są po skompilowaniu kodu.

Spójrzmy na przykład:


.info { 
   font-size: 28px; 
   text-transform: uppercase; 
} 
 
.success { 
   @extend .info; 
   color: #C779D0; 
}

Po skompilowaniu otrzymujemy taki oto kod:


.info, 
.success { 
   font-size: 28px; 
   Text-transform: uppercase; 
} 
 
.success { 
   color: #C779D0; 
}

Selektory zostały zgrupowane w miejscu, w którym zdefiniowaliśmy dyrektywę @extend. W przeciwieństwie do @mixin, tutaj w skompilowanym kodzie zestawy właściwości nie są kopiowane – zamiast tego otrzymujemy zgrupowane selektory, które korzystają z tego samego zestawu właściwości. Dodatkowo @extend nie przyjmuje argumentów.
Przy nierozważnym zastosowaniu dyrektywy @extend może okazać się, że w skompilowanym kodzie otrzymamy grupę kilkudziesięciu (sic!) zgrupowanych selektorów, przez co możemy otrzymać niechciane i nieoczekiwane rezultaty.

Do dzieła!

Podsumowując, dyrektywa @mixin stwarza ogromne możliwości dla developera oraz pozwala na pisanie eleganckiego i zwięzłego kodu. Dzięki temu kod jest łatwiejszy w utrzymaniu a jego rozwijanie jest zdecydowanie łatwiejsze.

Kiedy warto sięgnąć po użycie mixinów?
Na przykład wtedy, gdy widzimy, że dany zestaw reguł CSS powtarza się, lub kiedy reguły tworzą jakąś semantyczną grupę właściwości – na przykład style dla obramowania.

W internecie można znaleźć wiele domieszek gotowych do użycia w projekcie. Zachęcamy do eksperymentowania i tworzenia własnych dyrektyw, skrojonych na miarę naszych potrzeb.

Więcej na temat dyrektywy @mixin można przeczytać na stronie preprocesora Sass: https://sass-lang.com/guide

Kinga Nowak
Front-End Developer

SALESmanago o platforma Customer Engagement, zaprojektowana dla efektywnych i głodnych sukcesu zespołów marketingowych w eCommerce. Dla marketerów, którzy pragną być zaufanymi partnerami dla swoich CEO. Z naszego rozwiązania korzysta ponad 2000 biznesów online średniej wielkości w 50 krajach oraz liczne globalne marki takie jak Starbucks, Vodafone, Lacoste, New Balance czy Victoria's Secret.

SALESmanago zapewnia maksymalizację wzrostu przychodów oraz poprawy wskaźników KPI dla eCommerce wykorzystując trzy zasady: (1) Customer Intimacy, aby stworzyć autentyczne relacje z klientami w oparciu o dane Zero- i First-Party, (2) Precision Execution, aby zapewnić doskonałe omnichannelowe doświadczenie klienta dzięki hiper-personalizacji oraz (3) Growth Intelligence, która łączy wskazówki opracowane przez specjalistów oraz AI, umożliwiając pragmatyczne i szybkie podejmowanie decyzji w celu maksymalizacji efektu.

Czytaj więcej na: www.salesmanago.pl

Czym jest Customer Data Platform? CDP w pigułce część 1
Czym jest Customer Data Platform? CDP w pigułce część 1

    W serii trzech artykułów CDP w pigułce przybliżamy podstawowe kwestie dotyczące Customer Data Platform: czym one są, czym różnią się od dotychczasowych systemów, dlaczego są lepsze i – co najważniejsze – w jaki sposób Ty i Twoja firma możecie wykorzystać ich ogromne możliwości. W tym artykule wyjaśniamy, czym jest Customer Data Platform, jaki […]

4 rzeczy na temat pomiaru wydajności sklepu, o których powinien wiedzieć każdy marketingowiec
4 rzeczy na temat pomiaru wydajności sklepu, o których powinien wiedzieć każdy marketingowiec

    Skuteczny rozwój każdej działalności wymaga sprawnego i precyzyjnego pomiaru wyników. Co ciekawe, różne badania i ankiety wskazują, że marketingowcy eCommerce uważają, że brakuje im umiejętności w tym zakresie. W tym artykule omówimy 4 problemy i trendy związane z pomiarem wyników oraz wskażemy rozwiązania, które sprawią, że Twój zestaw technologii i aplikacji marketingowych będzie […]

Zwiększ konwersję w eCommerce i zbieraj dane Zero-Party dzięki nowemu, stworzonemu z myślą o smartfonach, Email Design Studio
Zwiększ konwersję w eCommerce i zbieraj dane Zero-Party dzięki nowemu, stworzonemu z myślą o smartfonach, Email Design Studio

    Nowe Email Design Studio wyznacza standardy w email marketingu w zakresie customer engagement i budowania poczucia więzi z marką . Używając naszego unikalnego, zaprojektowanego z myślą o urządzeniach mobilnych kreatora emaili, zwiększysz poziom konwersji i zbierzesz cenne dane Zero-Party, które pozwolą Ci jeszcze lepiej zrozumieć swoich klientów.   E-mail wciąż jest królem marketingu […]

Ten artykuł został wygenerowany przez AI. Dotyczy e-maili, treści generowanych przez AI i Twojej przyszłości
Ten artykuł został wygenerowany przez AI. Dotyczy e-maili, treści generowanych przez AI i Twojej przyszłości

    Uwaga: ten artykuł (z wyjątkiem nagłówków i formatowania) został w całości wygenerowany przez sztuczną inteligencję   Wygeneruj post na blogu o chwytliwych tematach e-maili   Napisanie chwytliwego tematu wiadomości e-mail jest ważną częścią tworzenia skutecznej kampanii e-mail marketingu. Dobry temat może zachęcić odbiorców do otwarcia e-maila i przeczytania jego treści, a zły może […]

Pracuj jak dziesięciu najlepszych marketerów naraz! Różnica między Workflow, który działa, a takim, który nie bardzo
Pracuj jak dziesięciu najlepszych marketerów naraz! Różnica między Workflow, który działa, a takim, który nie bardzo

    Lean Marketing wymaga skuteczności, ale taki tytuł może wydawać się przesadą. To nie jest jednak wygórowane oczekiwanie, a propozycja rozwiązania. Jest to wykonalne – jeśli masz odpowiedni Workflow. W tym artykule wyjaśnimy, czym jest Workflow, jak działa, kto odpowiada za jego efektywność, a ostatecznie – jak skorzystać z doświadczenia twórców szablonów. Utrata produktywności […]

[Nowa funkcjonalność] Szablony Workflow opracowane przez ekspertów eCommerce, dopasowane do twoich celów marketingowych
[Nowa funkcjonalność] Szablony Workflow opracowane przez ekspertów eCommerce, dopasowane do twoich celów marketingowych

    Zebraliśmy naszych czołowych ekspertów eCommerce, którzy na co dzień pracują z największymi światowymi markami, aby całkowicie przeprojektować szablony Workflow w naszej Bibliotece. Ludzie ci włożyli tysiące godzin swojego doświadczenia i unikatową wiedzę w stworzenie nowych, ulepszonych szablonów. Wszystko to, aby zaoszczędzić Twój czas. Ponadto, do Biblioteki dodaliśmy Generator Workflow — pierwszą taką funkcję […]

[Nowa Funkcjonalność] Zmaksymalizuj swój wpływ i kontrolę dzięki nowemu eCommerce Dashboard
[Nowa Funkcjonalność] Zmaksymalizuj swój wpływ i kontrolę dzięki nowemu eCommerce Dashboard

    Nasza najnowsza funkcjonalność, eCommerce Dashboard, agreguje dane z platform eCommerce oraz oprogramowania marketingowego i prezentuje je w jednym miejscu, w czasie rzeczywistym, 24 godziny na dobę, 7 dni w tygodniu. Jako, że umożliwia szybki przegląd wydajności sklepu internetowego, a także szczegółowe śledzenie różnych aspektów biznesu, stanowi niezwykle skuteczne, wielokanałowe narzędzie Growth Intelligence.   […]

SALESmanago przeprowadzi się do dedykowanego biurowca w Ocean Office Park na krakowskim Zabłociu
SALESmanago przeprowadzi się do dedykowanego biurowca w Ocean Office Park na krakowskim Zabłociu

    SALESmanago, największa w Polsce i najszybciej rosnąca firma tworząca rozwiązania technologiczne dla eCommerce, we wrześniu przyszłego roku przenosi swoją siedzibę do nowo powstającego Ocean Office Park na krakowskim zabłociu. Grupa Cavatina rozpoczęła już prace nad biurowcem, który zapewni dedykowaną, nowoczesną przestrzeń dla blisko 700 obecnych i przyszłych pracowników SALESmanago.    Charakterystyczny, okrągły Ocean […]

6 prognoz na Black Friday dla eCommerce. Czego oczekuje od Ciebie Internet i co z tym zrobić?
6 prognoz na Black Friday dla eCommerce. Czego oczekuje od Ciebie Internet i co z tym zrobić?

    Black Friday będzie rokiem 2022 w pigułce. Internet pęka w szwach od prognoz i strategii. W tym artykule przedstawiamy sześć najbardziej rozpowszechnionych, istotnych lub po prostu interesujących. Przedstawiamy również nasze podejście do nich. Ale przede wszystkim podpowiadamy, co z nimi zrobić. Na honorowe wyróżnienie zasługują prognozy: zabawki rozejdą się jak świeże bułeczki, ubrania […]

Jak zwiększyć Customer Lifetime Value dzięki platformie Customer Engagement
Jak zwiększyć Customer Lifetime Value dzięki platformie Customer Engagement

    Zwiększanie Customer Lifetime Value to jeden z najskuteczniejszych sposobów na podniesieniea przychodów. W końcu klient, którego już mamy, kosztuje nas znacznie mniej niż konwersja nowego użytkownika. W tym artykule pokażemy cztery scenariusze, w których możesz inteligentnie wykorzystać platformę Customer Engagement, aby zapewnić klientom większą wartość i zarobić więcej pieniędzy w tym procesie.   […]