SCSS Transitions vereinfachen

Erstellt am: 02.08.2020 um 20:15 Uhr

Ihr nutzt sicherlich auch in euren Projekten CSS-Transitions, um das Ändern eurer Properties zu animieren, oder? Wie macht ihr das? Setzt ihr jedes Mal individuell ein transition? Darauf hatte ich nämlich eine Lust mehr und habe mir hierfür ein SCSS Mixin geschrieben. Das würde ich euch gerne in diesem Blog-Beitrag vorstellen.

Das SCSS-Transition Mixin

Installieren

Ihr könnt euch das das Mixin ganz einfach als npm Paket installieren:

$ npm install --save-dev transition-mixin

oder ihr clont das Github-Repo: https://github.com/NikFlip/transition-mixin

Anschließend müsst ihr nur noch das Mixin per @import in eurer SCSS-Datei importieren:

/* example.scss */

@import 'pfad/zum/transition-mixin';

Das wäre geschafft. Das Mixin könnt ihr nun folgend benutzen:

.my-selector {
    @include transition-mixin();
}

Nutzt ihr das Mixin, ohne Werte hereinzureichen (siehe Beispiel oben). So wird ein transition: all ausgegeben. Ihr könnt jedoch auch bestimmen, welchen Properties animiert werden soll:

.my-selector {
    @include transition-mixin('border-color', 'box-shadow', 'background-size');
}

Das wird dann so ausgegeben:

.my-selector {
  transition: border-color 0.25s ease, box-shadow 0.25s ease, background-size 0.25s ease;
}

Transitions individualisieren

Darüherhinaus könnt ihr auch genaustens bestimmen, wie eure Transitions aussehen sollen. Dazu könnt ihr eine map() als Parameter in das Mixin reichen. Das schaut dann in etwa so aus:

$my-special-transition: (
    property: background-size,
    timing-function: cubic-bezier(0.44,-0.55, 0.24, 2.7)
);

@include transition-mixin($my-special-transition);

Die default-map schaut übrigens so aus:

$map: (
    duration: .25s,
    delay: false, //use something like .25s
    property: background-size,
    timing-function: ease-in,
)

Eine ausführliche Dokumentation samt Tests findet ihr im Github-Repo: transition-mixin.

Auf geht's! Viel Spaß mit dem Mixin.

© 2023 Niklas Köhler