wagtail/client/scss/tools/_mixins.general.scss

129 wiersze
2.5 KiB
SCSS

// =============================================================================
// Mixins
// =============================================================================
// Please note that the mixins partial shouldn't include any classes. This is so
// it can be included in any file without accidentally producing output
// Turns on font-smoothing when used. Use sparingly.
@mixin font-smoothing {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@mixin clearfix() {
&:before,
&:after {
content: ' ';
display: table;
}
&:after {
clear: both;
}
}
@mixin unlist() {
margin-top: 0;
margin-bottom: 0;
padding-inline-start: 0;
list-style-type: none;
font-style: normal;
li {
list-style-type: none;
font-style: normal;
}
}
// remove list styles, but only for the immediate element -
// allow nested lists inside it to keep the default style
@mixin unlistimmediate() {
margin-top: 0;
margin-bottom: 0;
padding-inline-start: 0;
list-style-type: none;
font-style: normal;
> li {
list-style-type: none;
font-style: normal;
}
}
@mixin transition($transition...) {
body.ready & {
transition: $transition;
}
}
@mixin visuallyhidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
@mixin visuallyvisible {
clip: auto;
height: auto;
width: auto;
margin: initial;
overflow: visible;
position: initial;
}
@mixin svg-icon($size: 1em, $position: text-top) {
width: $size;
height: $size;
vertical-align: $position;
}
@mixin icon() {
@include font-smoothing;
font-style: normal;
font-weight: normal;
font-variant: normal;
speak: none;
text-decoration: none;
width: 1.3em;
line-height: 1em;
text-align: start;
vertical-align: middle;
margin-inline-end: 0.2em;
}
// Applies given rules on hover, for devices that support hover.
@mixin hover {
@media (hover: hover) {
a:hover {
@content;
}
}
}
// Where included, show the focus outline within focusable items instead of around them.
// This is useful when focusable items are tightly packed and there is no space in-between.
@mixin show-focus-outline-inside {
outline-offset: -1 * $focus-outline-width;
}
/**
* Apply styles for the dark theme only.
*/
@mixin dark-theme() {
.w-theme-dark & {
@content;
}
@media (prefers-color-scheme: dark) {
.w-theme-system & {
@content;
}
}
}