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

Skuteczna personalizacja SALESmanago zwiększa przychody z e-commerce
Skuteczna personalizacja SALESmanago zwiększa przychody z e-commerce

    Nowe inteligentne narzędzie powstało z potrzeby większej personalizacji, dzięki której zespoły e-commerce mogłyby tworzyć indywidualne doświadczenia klientów Jak pokazują wyniki z okresu wyprzedaży Black Friday, stosowanie technik personalizacji przyniosło sprzedawcom 19% więcej interakcji   Kraków, 15 stycznia 2025 r.:  SALESmanago – czołowa europejska platforma zarządzania zaangażowaniem klientów obsługująca ponad 3 tys. klientów – […]

SALESmanago nawiązuje współpracę z PrestaShop, aby rozszerzyć swoją ofertę inteligentnych rozwiązań na sektor eCommerce w Europie
SALESmanago nawiązuje współpracę z PrestaShop, aby rozszerzyć swoją ofertę inteligentnych rozwiązań na sektor eCommerce w Europie

    Współpraca stanowi kolejny krok – po niedawnym przejęciu Leadoo – w rozwoju platformy zarządzania zaangażowaniem klientów w Europie.   Kraków, 18 grudnia 2024 r.: SALESmanago, lider segmentu SaaS obsługujący ponad 3 tys. klientów, nawiązał strategiczną współpracę z PrestaShop – jedną z najpopularniejszych platform eCommerce w Europie, która wspiera ponad 300 tys. firm w […]

Skuteczne zarządzanie w erze „growth hackingu”
Skuteczne zarządzanie w erze „growth hackingu”

    W dzisiejszym jakże zmiennym cyfrowym świecie rola dyrektora generalnego znacząco ewoluowała.   Obecnie fundamentem pomyślnego rozwoju firmy na poszczególnych etapach stała się koncepcja „growth hackingu”. Przy czym nie chodzi już tylko o przetrwanie, ale też o to, by wyprzedzić konkurencję w warunkach, które wymagają od nas zwinnego działania i innowacyjności.   Rzecz jasna, na początku nasz cel […]

SALESmanago przejmuje Leadoo: powstaje największa w Europie platforma do zarządzania zaangażowaniem klientów
SALESmanago przejmuje Leadoo: powstaje największa w Europie platforma do zarządzania zaangażowaniem klientów

    Połączenie zaawansowanych narzędzi konwersji Leadoo z kompleksową platformą Customer Engagement SALESmanago Rozszerzona obecność w kluczowych regionach Europy: kraje nordyckie, Wielka Brytania, Benelux oraz Europa Środkowa, Wschodnia i Południowa   Kraków/Helsinki, 26 listopada 2024 – Ważna fuzja w sektorze e-commerce. SALESmanago, wiodąca platforma Customer Engagement (CEP) z siedzibą w Krakowie, ogłasza przejęcie fińskiej platformy […]

Nie czekaj: Dlaczego IV kwartał to idealny moment na pomnożenie efektów działań marketingowych dzięki SALESmanago
Nie czekaj: Dlaczego IV kwartał to idealny moment na pomnożenie efektów działań marketingowych dzięki SALESmanago

    Wkraczając w burzliwy, jak co roku, czwarty kwartał, wiele firm znajduje się sytuacji paradoksalnej. To najbardziej owocny okres w roku, obiecujący najwyższy ruch i sprzedaż, a jednocześnie właśnie wtedy wiele firm unika wdrażania nowych technologii marketingowych. W SALESmanago rozumiemy przyczyny tej wstrzemięźliwości, ale jesteśmy tutaj, aby rzucić wyzwanie mentalności „poczekaj do czwartego kwartału”. […]

Strategie, które powinien znać prezes każdej firmy e-commerce w erze „Growth Hackingu”
Strategie, które powinien znać prezes każdej firmy e-commerce w erze „Growth Hackingu”

    Autor: Brian Plackis Cheng, dyrektor generalny SALESmanago   Rozwój firmy w dzisiejszym i jakże zmiennym cyfrowym świecie to nie lada wyzwanie. Rola dyrektora generalnego ewoluowała – dziś fundamentem pomyślnego rozwoju firmy na poszczególnych etapach stała się koncepcja „growth hackingu”. Nie chodzi już tylko o przetrwanie, ale też o to, by wyprzedzić konkurencję w […]

eCommerce na przemian rozkwita i popada w stagnację
eCommerce na przemian rozkwita i popada w stagnację

    eCommerce jest kapryśny; popada w stagnację, po czym nagle rozkwita. Ścieżki klientów są nieliniowe. To wiemy na pewno. Bez użytecznych danych klientów i spersonalizowanych ścieżek zakupowych firmy eCommerce tracą prospekty i klientów, doprowadzają swoją markę do stagnacji i trwonią swoją przewagę konkurencyjną.   Korzystanie z danych zero-party i zaawansowanej analityki nie jest już […]

Focus Garden rozkwita z SALESmanago
Focus Garden rozkwita z SALESmanago

    Focus Garden, to lider w branży artykułów ogrodniczych, a ich sukces to opowieść o mocy skutecznego wykorzystania automatyzacji marketingu i strategicznego partnerstwa z SALESmanago.   W ciągu zaledwie roku, nasza współpraca z Focus Garden przyniosła zdumiewające rezultaty:   Imponujący zwrot z inwestycji (ROI) – 6108%  134-procentowy wzrost całkowitej sprzedaży i znaczący wzrost liczby […]

SALESmanago ogłasza zmiany na kluczowych stanowiskach: Nowy CEO i CRO
SALESmanago ogłasza zmiany na kluczowych stanowiskach: Nowy CEO i CRO

    SALESmanago, wiodąca platforma CDP i Marketing Automation, z entuzjazmem informuje o istotnych zmianach w swoim zespole kierowniczym. Zmiany mają na celu optymalizację procesu dostarczania rozwiązań dla segmentu średnich przedsiębiorstw.    Po 13 latach kierowania rozwojem firmy w roli Dyrektora Generalnego, współzałożyciel SALESmanago, Grzegorz Błażewicz, obejmuje nieoperacyjną rolę członka Rady Nadzorczej. Będzie tam odpowiadał […]

30 trików i porad dotyczących korzystania z szablonów e-mail, które zostawią konkurencję w tyle.
30 trików i porad dotyczących korzystania z szablonów e-mail, które zostawią konkurencję w tyle.

    Jak prześcignąć konkurencję eCommerce za pomocą czegoś tak prostego jak szablony wiadomości e-mail? Chcemy czy nie, email marketing pozostaje potężnym narzędziem do angażowania klientów, zwiększania sprzedaży i ostatecznie – wyprzedzania konkurencji. Dzięki odpowiednim strategiom i dobrze opracowanym szablonom e-mailowym można skutecznie komunikować się z odbiorcami, budować trwałe relacje i zwiększać zyski.   Poniżej […]