Mixin pro offsetové polohování - Triky CSS

Anonim

Pokud existuje jedna zkratka CSS dramaticky mine, to je ten, aby bylo možné definovat positionvlastnost, stejně jako čtyři ofsetové vlastnosti ( top, right, bottom, left).

Naštěstí je to obvykle něco, co lze vyřešit pomocí preprocesoru CSS, jako je Sass. Musíme pouze vytvořit jednoduchý mixin, který nám ušetří ruční deklaraci 5 vlastností.

/// Shorthand mixin for offset positioning /// @param (String) $position - Either `relative`, `absolute` or `fixed` /// @param (Length) $top (null) - Top offset /// @param (Length) $right (null) - Right offset /// @param (Length) $bottom (null) - Bottom offset /// @param (Length) $left (null) - Left offset @mixin position($position, $top: null, $right: null, $bottom: null, $left: null) ( position: $position; top: $top; right: $right; bottom: $bottom; left: $left; )

Jde o to, že se při použití tohoto mixinu spoléháme na pojmenované argumenty, abychom se vyhnuli tomu, že je musíme nastavovat všechny, když je požadován pouze jeden nebo dva. Zvažte následující kód:

.foo ( @include position(absolute, $top: 1em, $left: 50%); )

… Který se skládá do:

.foo ( position: absolute; top: 1em; left: 50%; )

Ve skutečnosti Sass nikdy nevytvoří vlastnost, která má hodnotu null.

Zjednodušení API

Mohli bychom přesunout typ pozice na název mixinu, místo abychom ji museli definovat jako první argument. K tomu potřebujeme tři další mixiny, které budou sloužit jako aliasy mixu `pozice`, který jsme právě definovali.

/// Shorthand mixin for absolute positioning /// Serves as an alias for `position(absolute,… )` /// @param (Arglist) $args - Offsets /// @require (mixin) position @mixin absolute($args… ) ( @include position(absolute, $args… ); ) /// Shorthand mixin for relative positioning /// Serves as an alias for `position(relative,… )` /// @param (Arglist) $args - Offsets /// @require (mixin) position @mixin relative($args… ) ( @include position(relative, $args… ); ) /// Shorthand mixin for fixed positioning /// Serves as an alias for `position(fixed,… )` /// @param (Arglist) $args - Offsets /// @require (mixin) position @mixin fixed($args… ) ( @include position(fixed, $args… ); )

Přepisujeme náš předchozí příklad:

.foo ( @include absolute($top: 1em, $left: 50%); )

Jít dále

Pokud chcete syntaxi blíže syntaxi navržené Nib (Stylusův rámec), doporučuji se podívat na tento článek.

.foo ( @include absolute(top 1em left 50%); )