KNACSS/sass/abstracts/_mixins.scss

71 lines
2.0 KiB
SCSS
Raw Permalink Normal View History

2019-08-14 12:30:26 +02:00
// Visually-hidden mixin
@mixin visually-hidden {
position: absolute !important;
border: 0 !important;
height: 1px !important;
width: 1px !important;
padding: 0 !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
}
2017-10-30 15:42:32 +01:00
// font-size Mixin
2017-10-30 18:23:28 +01:00
// compiles to font-size mobile + font-size desktop on small-plus devices
2017-10-30 15:42:32 +01:00
// ex. h2 { @include font-size(h2);}
@mixin font-size($elem) {
2017-10-30 18:23:28 +01:00
$q: map-get($font-sizes, $elem);
$mob: map-get($q, "mobile");
$desk: map-get($q, "desktop");
font-size: $mob;
2017-10-30 15:42:32 +01:00
@include respond-to("small-up") {
2017-10-30 18:23:28 +01:00
font-size: $desk;
2017-10-30 15:42:32 +01:00
}
}
2017-08-01 12:33:42 +02:00
// Grid Mixin
// arguments are : columns number, gutter, min-breakpoint
// ex. .ingrid { @include grid(4, 1rem, 640px); }
@mixin grid($number:1, $gutter:0, $breakpoint:0) {
@supports (display: grid) {
@media (min-width: $breakpoint) {
display: grid;
grid-template-columns: repeat($number, 1fr);
grid-gap: $gutter;
}
2017-08-01 12:33:42 +02:00
}
}
2016-09-21 10:05:29 +02:00
// Additionnal "utility" breakpoints aliases
2016-12-01 15:45:23 +01:00
// ex. @include respond-to("medium-up") {...}
2017-04-21 22:40:35 +02:00
$bp-aliases: (
2017-06-21 10:50:33 +02:00
'tiny' : (max-width: #{$tiny - 1}),
'small' : (max-width: #{$small - 1}),
'medium' : (max-width: #{$medium - 1}),
'large' : (max-width: #{$large - 1}),
'extra-large' : (max-width: #{$extra-large - 1}),
'tiny-up' : (min-width: #{$tiny}),
'small-up' : (min-width: #{$small}),
'medium-up' : (min-width: #{$medium}),
'large-up' : (min-width: #{$large}),
'extra-large-up' : (min-width: #{$extra-large}),
2017-04-21 22:40:35 +02:00
'retina' : (min-resolution: 2dppx)
);
// Source : https://www.sitepoint.com/managing-responsive-breakpoints-sass/
@mixin respond-to($name) {
// If the key exists in the map
@if map-has-key($bp-aliases, $name) {
// Prints a media query based on the value
@media #{inspect(map-get($bp-aliases, $name))} {
@content;
}
2016-09-21 10:05:29 +02:00
}
2017-04-21 22:40:35 +02:00
// If the key doesn't exist in the map
@else {
@warn "Unfortunately, no value could be retrieved from `#{$breakpoint}`. "
+ "Please make sure it is defined in `$breakpoints` map.";
2016-09-21 10:05:29 +02:00
}
}