diff default/assets/scss/vendors/bourbon/library/_position.scss @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/default/assets/scss/vendors/bourbon/library/_position.scss	Sat May 31 09:21:51 2025 +0800
@@ -0,0 +1,54 @@
+@charset "UTF-8";
+
+/// Provides a quick method for setting an element’s position. Use a `null`
+/// value to “skip” a side.
+///
+/// @argument {string} $position [relative]
+///   A CSS position value.
+///
+/// @argument {arglist} $coordinates [null]
+///   List of lengths, defined as CSS shorthand.
+///
+/// @example scss
+///   .element {
+///     @include position(absolute, 0 null null 10em);
+///   }
+///
+///   // CSS Output
+///   .element {
+///     left: 10em;
+///     position: absolute;
+///     top: 0;
+///   }
+///
+/// @require {function} _is-length
+///
+/// @require {function} _unpack
+
+@mixin position(
+    $position: relative,
+    $coordinates: null
+  ) {
+
+  @if type-of($position) == list {
+    $coordinates: $position;
+    $position: relative;
+  }
+
+  $coordinates: _unpack($coordinates);
+
+  $offsets: (
+    top:    nth($coordinates, 1),
+    right:  nth($coordinates, 2),
+    bottom: nth($coordinates, 3),
+    left:   nth($coordinates, 4),
+  );
+
+  position: $position;
+
+  @each $offset, $value in $offsets {
+    @if _is-length($value) {
+      #{$offset}: $value;
+    }
+  }
+}