Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@hougasian
Last active October 26, 2022 16:00
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hougasian/63b519f6d74674087de5dcdac5ad7861 to your computer and use it in GitHub Desktop.
Save hougasian/63b519f6d74674087de5dcdac5ad7861 to your computer and use it in GitHub Desktop.
Generated by SassMeister.com.
// ----
// libsass (v3.5.4)
// ----
// padding and margin
$spacer: 1rem;
$spacers: (
0: 0,
1: ($spacer * .25),
2: ($spacer * .5),
3: $spacer,
4: ($spacer * 2),
5: ($spacer * 3),
6: ($spacer * 4.5),
7: ($spacer * 6.5)
);
$xy-border: (
top: t,
bottom: b,
left: l,
right: r
);
// set solid borders
@each $direction in $xy-border {
.border-#{nth($direction, 1)} {
border-#{nth($direction, 1)}: 1px solid;
border-color: grey;
}
}
// padding and spacers
@each $prop, $letter in (margin: m, padding: p) {
@each $direction, $d in $xy-border {
@each $unit, $rem in $spacers {
.#{$letter}#{$d}-#{$unit} {
#{$prop}-#{$direction}: #{$rem};
}
.#{$letter}x-#{$unit} {
#{$prop}: 0 $rem;
}
.#{$letter}y-#{$unit} {
#{$prop}: $rem 0;
}
}
}
}
.border-top {
border-top: 1px solid;
border-color: grey;
}
.border-bottom {
border-bottom: 1px solid;
border-color: grey;
}
.border-left {
border-left: 1px solid;
border-color: grey;
}
.border-right {
border-right: 1px solid;
border-color: grey;
}
.mt-0 {
margin-top: 0;
}
.mx-0 {
margin: 0 0;
}
.my-0 {
margin: 0 0;
}
.mt-1 {
margin-top: 0.25rem;
}
.mx-1 {
margin: 0 0.25rem;
}
.my-1 {
margin: 0.25rem 0;
}
.mt-2 {
margin-top: 0.5rem;
}
.mx-2 {
margin: 0 0.5rem;
}
.my-2 {
margin: 0.5rem 0;
}
.mt-3 {
margin-top: 1rem;
}
.mx-3 {
margin: 0 1rem;
}
.my-3 {
margin: 1rem 0;
}
.mt-4 {
margin-top: 2rem;
}
.mx-4 {
margin: 0 2rem;
}
.my-4 {
margin: 2rem 0;
}
.mt-5 {
margin-top: 3rem;
}
.mx-5 {
margin: 0 3rem;
}
.my-5 {
margin: 3rem 0;
}
.mt-6 {
margin-top: 4.5rem;
}
.mx-6 {
margin: 0 4.5rem;
}
.my-6 {
margin: 4.5rem 0;
}
.mt-7 {
margin-top: 6.5rem;
}
.mx-7 {
margin: 0 6.5rem;
}
.my-7 {
margin: 6.5rem 0;
}
.mb-0 {
margin-bottom: 0;
}
.mx-0 {
margin: 0 0;
}
.my-0 {
margin: 0 0;
}
.mb-1 {
margin-bottom: 0.25rem;
}
.mx-1 {
margin: 0 0.25rem;
}
.my-1 {
margin: 0.25rem 0;
}
.mb-2 {
margin-bottom: 0.5rem;
}
.mx-2 {
margin: 0 0.5rem;
}
.my-2 {
margin: 0.5rem 0;
}
.mb-3 {
margin-bottom: 1rem;
}
.mx-3 {
margin: 0 1rem;
}
.my-3 {
margin: 1rem 0;
}
.mb-4 {
margin-bottom: 2rem;
}
.mx-4 {
margin: 0 2rem;
}
.my-4 {
margin: 2rem 0;
}
.mb-5 {
margin-bottom: 3rem;
}
.mx-5 {
margin: 0 3rem;
}
.my-5 {
margin: 3rem 0;
}
.mb-6 {
margin-bottom: 4.5rem;
}
.mx-6 {
margin: 0 4.5rem;
}
.my-6 {
margin: 4.5rem 0;
}
.mb-7 {
margin-bottom: 6.5rem;
}
.mx-7 {
margin: 0 6.5rem;
}
.my-7 {
margin: 6.5rem 0;
}
.ml-0 {
margin-left: 0;
}
.mx-0 {
margin: 0 0;
}
.my-0 {
margin: 0 0;
}
.ml-1 {
margin-left: 0.25rem;
}
.mx-1 {
margin: 0 0.25rem;
}
.my-1 {
margin: 0.25rem 0;
}
.ml-2 {
margin-left: 0.5rem;
}
.mx-2 {
margin: 0 0.5rem;
}
.my-2 {
margin: 0.5rem 0;
}
.ml-3 {
margin-left: 1rem;
}
.mx-3 {
margin: 0 1rem;
}
.my-3 {
margin: 1rem 0;
}
.ml-4 {
margin-left: 2rem;
}
.mx-4 {
margin: 0 2rem;
}
.my-4 {
margin: 2rem 0;
}
.ml-5 {
margin-left: 3rem;
}
.mx-5 {
margin: 0 3rem;
}
.my-5 {
margin: 3rem 0;
}
.ml-6 {
margin-left: 4.5rem;
}
.mx-6 {
margin: 0 4.5rem;
}
.my-6 {
margin: 4.5rem 0;
}
.ml-7 {
margin-left: 6.5rem;
}
.mx-7 {
margin: 0 6.5rem;
}
.my-7 {
margin: 6.5rem 0;
}
.mr-0 {
margin-right: 0;
}
.mx-0 {
margin: 0 0;
}
.my-0 {
margin: 0 0;
}
.mr-1 {
margin-right: 0.25rem;
}
.mx-1 {
margin: 0 0.25rem;
}
.my-1 {
margin: 0.25rem 0;
}
.mr-2 {
margin-right: 0.5rem;
}
.mx-2 {
margin: 0 0.5rem;
}
.my-2 {
margin: 0.5rem 0;
}
.mr-3 {
margin-right: 1rem;
}
.mx-3 {
margin: 0 1rem;
}
.my-3 {
margin: 1rem 0;
}
.mr-4 {
margin-right: 2rem;
}
.mx-4 {
margin: 0 2rem;
}
.my-4 {
margin: 2rem 0;
}
.mr-5 {
margin-right: 3rem;
}
.mx-5 {
margin: 0 3rem;
}
.my-5 {
margin: 3rem 0;
}
.mr-6 {
margin-right: 4.5rem;
}
.mx-6 {
margin: 0 4.5rem;
}
.my-6 {
margin: 4.5rem 0;
}
.mr-7 {
margin-right: 6.5rem;
}
.mx-7 {
margin: 0 6.5rem;
}
.my-7 {
margin: 6.5rem 0;
}
.pt-0 {
padding-top: 0;
}
.px-0 {
padding: 0 0;
}
.py-0 {
padding: 0 0;
}
.pt-1 {
padding-top: 0.25rem;
}
.px-1 {
padding: 0 0.25rem;
}
.py-1 {
padding: 0.25rem 0;
}
.pt-2 {
padding-top: 0.5rem;
}
.px-2 {
padding: 0 0.5rem;
}
.py-2 {
padding: 0.5rem 0;
}
.pt-3 {
padding-top: 1rem;
}
.px-3 {
padding: 0 1rem;
}
.py-3 {
padding: 1rem 0;
}
.pt-4 {
padding-top: 2rem;
}
.px-4 {
padding: 0 2rem;
}
.py-4 {
padding: 2rem 0;
}
.pt-5 {
padding-top: 3rem;
}
.px-5 {
padding: 0 3rem;
}
.py-5 {
padding: 3rem 0;
}
.pt-6 {
padding-top: 4.5rem;
}
.px-6 {
padding: 0 4.5rem;
}
.py-6 {
padding: 4.5rem 0;
}
.pt-7 {
padding-top: 6.5rem;
}
.px-7 {
padding: 0 6.5rem;
}
.py-7 {
padding: 6.5rem 0;
}
.pb-0 {
padding-bottom: 0;
}
.px-0 {
padding: 0 0;
}
.py-0 {
padding: 0 0;
}
.pb-1 {
padding-bottom: 0.25rem;
}
.px-1 {
padding: 0 0.25rem;
}
.py-1 {
padding: 0.25rem 0;
}
.pb-2 {
padding-bottom: 0.5rem;
}
.px-2 {
padding: 0 0.5rem;
}
.py-2 {
padding: 0.5rem 0;
}
.pb-3 {
padding-bottom: 1rem;
}
.px-3 {
padding: 0 1rem;
}
.py-3 {
padding: 1rem 0;
}
.pb-4 {
padding-bottom: 2rem;
}
.px-4 {
padding: 0 2rem;
}
.py-4 {
padding: 2rem 0;
}
.pb-5 {
padding-bottom: 3rem;
}
.px-5 {
padding: 0 3rem;
}
.py-5 {
padding: 3rem 0;
}
.pb-6 {
padding-bottom: 4.5rem;
}
.px-6 {
padding: 0 4.5rem;
}
.py-6 {
padding: 4.5rem 0;
}
.pb-7 {
padding-bottom: 6.5rem;
}
.px-7 {
padding: 0 6.5rem;
}
.py-7 {
padding: 6.5rem 0;
}
.pl-0 {
padding-left: 0;
}
.px-0 {
padding: 0 0;
}
.py-0 {
padding: 0 0;
}
.pl-1 {
padding-left: 0.25rem;
}
.px-1 {
padding: 0 0.25rem;
}
.py-1 {
padding: 0.25rem 0;
}
.pl-2 {
padding-left: 0.5rem;
}
.px-2 {
padding: 0 0.5rem;
}
.py-2 {
padding: 0.5rem 0;
}
.pl-3 {
padding-left: 1rem;
}
.px-3 {
padding: 0 1rem;
}
.py-3 {
padding: 1rem 0;
}
.pl-4 {
padding-left: 2rem;
}
.px-4 {
padding: 0 2rem;
}
.py-4 {
padding: 2rem 0;
}
.pl-5 {
padding-left: 3rem;
}
.px-5 {
padding: 0 3rem;
}
.py-5 {
padding: 3rem 0;
}
.pl-6 {
padding-left: 4.5rem;
}
.px-6 {
padding: 0 4.5rem;
}
.py-6 {
padding: 4.5rem 0;
}
.pl-7 {
padding-left: 6.5rem;
}
.px-7 {
padding: 0 6.5rem;
}
.py-7 {
padding: 6.5rem 0;
}
.pr-0 {
padding-right: 0;
}
.px-0 {
padding: 0 0;
}
.py-0 {
padding: 0 0;
}
.pr-1 {
padding-right: 0.25rem;
}
.px-1 {
padding: 0 0.25rem;
}
.py-1 {
padding: 0.25rem 0;
}
.pr-2 {
padding-right: 0.5rem;
}
.px-2 {
padding: 0 0.5rem;
}
.py-2 {
padding: 0.5rem 0;
}
.pr-3 {
padding-right: 1rem;
}
.px-3 {
padding: 0 1rem;
}
.py-3 {
padding: 1rem 0;
}
.pr-4 {
padding-right: 2rem;
}
.px-4 {
padding: 0 2rem;
}
.py-4 {
padding: 2rem 0;
}
.pr-5 {
padding-right: 3rem;
}
.px-5 {
padding: 0 3rem;
}
.py-5 {
padding: 3rem 0;
}
.pr-6 {
padding-right: 4.5rem;
}
.px-6 {
padding: 0 4.5rem;
}
.py-6 {
padding: 4.5rem 0;
}
.pr-7 {
padding-right: 6.5rem;
}
.px-7 {
padding: 0 6.5rem;
}
.py-7 {
padding: 6.5rem 0;
}
@PauliCZ44
Copy link

Problem with this code is that it does produce multiple mx/my and px/py classes. That is because of wrong use of nested loops. Use this code, where i nested loops little bit differently.


$spacer: 1rem;
$spacers: (
  1: ($spacer * .25),
  2: ($spacer * .5),
  3: $spacer,
  4: ($spacer * 2),
  5: ($spacer * 3),
);
$xy-border: ( top: t, right: r, bottom: b, left: l );


// padding and spacers
@each $prop, $letter in (margin: m, padding: p) { 
  @each $unit, $rem in $spacers {
        // For x and y is it sufficient to loop on this level.
        .#{$letter}x-#{$unit} {
          #{$prop}: 0 $rem;
        }
        .#{$letter}y-#{$unit} {
          #{$prop}: $rem 0;
        }
    @each $direction, $d in $xy-border {
      .#{$letter}#{$d}-#{$unit} {
        #{$prop}-#{$direction}: #{$rem};
      }
    }
  }
}

@hougasian
Copy link
Author

thanks for posting @PauliCZ44
i forgot about this gist; the production code for this changed years ago 😀

@peterankelein
Copy link

peterankelein commented Oct 26, 2022

Handy gist. Using @PauliCZ44's update, I added negative margin classes that follow Bootstrap 5's naming convention:

$spacers: (
  1: ($spacer * .25),
  2: ($spacer * .5),
  3: $spacer,
  4: ($spacer * 2),
  5: ($spacer * 3),
);
$negative-spacers: (
  1: ($spacer * -.25),
  2: ($spacer * -.5),
  3: ($spacer * -1),
  4: ($spacer * -2),
  5: ($spacer * -3),
);
$xy-border: ( top: t, right: r, bottom: b, left: l );

// padding and margin classes
@each $prop, $letter in (margin: m, padding: p) { 
  @each $unit, $rem in $spacers {
        // For x and y is it sufficient to loop on this level.
    .#{$letter}x-#{$unit} {
          #{$prop}: 0 $rem;
        }
        .#{$letter}y-#{$unit} {
          #{$prop}: $rem 0;
        }
    @each $direction, $d in $xy-border {
      .#{$letter}#{$d}-#{$unit} {
        #{$prop}-#{$direction}: #{$rem};
      }
    }
  }
}

// negative margin classes
@each $prop, $letter in (margin: m) { 
  @each $unit, $rem in $negative-spacers {
        // For x and y is it sufficient to loop on this level.  
    .#{$letter}x-n#{$unit} {
      #{$prop}: 0 $rem;
    }
    .#{$letter}y-n#{$unit} {
      #{$prop}: $rem 0;
    }
    @each $direction, $d in $xy-border {
      .#{$letter}#{$d}-n#{$unit} {
        #{$prop}-#{$direction}: #{$rem};
      }
    }
  }
}

@hougasian
Copy link
Author

nice @peterankelein 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment