Микин за офсет позиционирање - ЦСС-трикови

Anonim

Ако постоји једна скраћеница ЦСС драматично промашаји, то је онај што је могуће дефинисати positionимовину, као и четири оффсет својства ( top, right, bottom, left).

Срећом, ово је обично нешто што се може решити ЦСС претпроцесором као што је Сасс. Морамо само да направимо једноставан микс да нас сачувају од ручног пријављивања 5 својстава.

/// 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; )

Ствар је у томе што се при коришћењу ове комбинације ослањамо на именоване аргументе како бисмо избегли да их све поставимо када су жељени само један или два. Узмите у обзир следећи код:

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

… Који се компајлира у:

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

Заправо, Сасс никада не даје својство које има вредност null.

Поједностављивање АПИ-ја

Могли бисмо преместити тип позиције у име комбинације, уместо да га морамо дефинисати као први аргумент. Да бисмо то урадили, требају нам три додатна миксина који ће служити као псеудоними за микс `положаја` који смо управо дефинисали.

/// 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… ); )

Преписивање нашег претходног примера:

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

Иде даље

Ако желите синтаксу ближу оној коју је предложио Ниб (Стилусов оквир), препоручујем вам да погледате овај чланак.

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