Font-Awesome/scss/_mixins.scss
2016-08-09 22:50:38 -04:00

103 lines
2.5 KiB
SCSS

// Mixins
// --------------------------
@mixin fa-icon() {
display: inline-block;
font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@mixin fa-icon-rotate($degrees, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
-webkit-transform: rotate($degrees);
-ms-transform: rotate($degrees);
transform: rotate($degrees);
}
@mixin fa-icon-flip($horiz, $vert, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
-webkit-transform: scale($horiz, $vert);
-ms-transform: scale($horiz, $vert);
transform: scale($horiz, $vert);
}
// Include one icon or list of icons.
// @param {string|list} $icon Icon name or list of icons names to include.
@mixin fa-include-icon($icon){
// Is a icon name
@if type-of($icon) == 'string' {
@if map-has-key($fa-iconlist, $icon) {
.#{$fa-css-prefix}-#{$icon}:before {
content: "#{map-get($fa-iconlist, $icon)}";
}
} @else {
@warn "Unfortunately, no value could be retrieved from `#{$icon}`. "
+ "Please make sure it is defined in $fa-iconlist` map.";
}
// Is not a list and is not a string
} @else {
// Is a list of icons name
@if type-of($icon) == 'list' {
@each $name in $icon {
@include fa-include-icon($name);
}
} @else {
@warn "Mixin `fa-include-icons`: only can recive string or list.";
}
}
}
// Include all icons defineds.
@mixin fa-include-all-icons(){
@each $name, $icon in $fa-iconlist {
@include fa-include-icon($name);
}
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
@mixin sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
border: 0;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
@mixin sr-only-focusable {
&:active,
&:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
}