mirror of
https://github.com/twbs/bootstrap.git
synced 2025-09-01 01:21:49 +02:00
Implement CSS layers
Rearrange and comment import stack Move content stylesheets to new folder
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
@use "../mixins/clearfix" as *;
|
||||
|
||||
.clearfix {
|
||||
@include clearfix();
|
||||
@layer helpers {
|
||||
.clearfix {
|
||||
@include clearfix();
|
||||
}
|
||||
}
|
||||
|
@@ -3,9 +3,11 @@
|
||||
@use "../variables" as *;
|
||||
|
||||
// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
|
||||
@each $color, $value in $theme-colors {
|
||||
.text-bg-#{$color} {
|
||||
color: color-contrast($value) if($enable-important-utilities, !important, null);
|
||||
background-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
@layer helpers {
|
||||
@each $color, $value in $theme-colors {
|
||||
.text-bg-#{$color} {
|
||||
color: color-contrast($value) if($enable-important-utilities, !important, null);
|
||||
background-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,32 +3,34 @@
|
||||
@use "../variables" as *;
|
||||
|
||||
// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
|
||||
@each $color, $value in $theme-colors {
|
||||
.link-#{$color} {
|
||||
color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
@layer helpers {
|
||||
@each $color, $value in $theme-colors {
|
||||
.link-#{$color} {
|
||||
color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
$hover-color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));
|
||||
color: RGBA(#{to-rgb($hover-color)}, var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(to-rgb($hover-color), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// One-off special link helper as a bridge until v6
|
||||
.link-body-emphasis {
|
||||
color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
$hover-color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));
|
||||
color: RGBA(#{to-rgb($hover-color)}, var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(to-rgb($hover-color), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, .75)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, .75)) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// One-off special link helper as a bridge until v6
|
||||
.link-body-emphasis {
|
||||
color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, .75)) if($enable-important-utilities, !important, null);
|
||||
text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, .75)) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,9 @@
|
||||
@use "../config" as *;
|
||||
|
||||
.focus-ring:focus {
|
||||
outline: 0;
|
||||
// By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
|
||||
box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
|
||||
@layer helpers {
|
||||
.focus-ring:focus {
|
||||
outline: 0;
|
||||
// By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
|
||||
box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
|
||||
}
|
||||
}
|
||||
|
@@ -1,28 +1,31 @@
|
||||
@use "../config" as *;
|
||||
@use "../variables" as *;
|
||||
@use "../mixins/transition" as *;
|
||||
.icon-link {
|
||||
display: inline-flex;
|
||||
gap: $icon-link-gap;
|
||||
align-items: center;
|
||||
text-decoration-color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, .5));
|
||||
text-underline-offset: $icon-link-underline-offset;
|
||||
backface-visibility: hidden;
|
||||
|
||||
> .bi {
|
||||
flex-shrink: 0;
|
||||
width: $icon-link-icon-size;
|
||||
height: $icon-link-icon-size;
|
||||
fill: currentcolor;
|
||||
@include transition($icon-link-icon-transition);
|
||||
}
|
||||
}
|
||||
@layer helpers {
|
||||
.icon-link {
|
||||
display: inline-flex;
|
||||
gap: $icon-link-gap;
|
||||
align-items: center;
|
||||
text-decoration-color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, .5));
|
||||
text-underline-offset: $icon-link-underline-offset;
|
||||
backface-visibility: hidden;
|
||||
|
||||
.icon-link-hover {
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
> .bi {
|
||||
transform: var(--#{$prefix}icon-link-transform, $icon-link-icon-transform);
|
||||
flex-shrink: 0;
|
||||
width: $icon-link-icon-size;
|
||||
height: $icon-link-icon-size;
|
||||
fill: currentcolor;
|
||||
@include transition($icon-link-icon-transition);
|
||||
}
|
||||
}
|
||||
|
||||
.icon-link-hover {
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
> .bi {
|
||||
transform: var(--#{$prefix}icon-link-transform, $icon-link-icon-transform);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,37 +5,39 @@
|
||||
|
||||
// Shorthand
|
||||
|
||||
.fixed-top {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-fixed;
|
||||
}
|
||||
@layer helpers {
|
||||
.fixed-top {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-fixed;
|
||||
}
|
||||
|
||||
.fixed-bottom {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-fixed;
|
||||
}
|
||||
.fixed-bottom {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-fixed;
|
||||
}
|
||||
|
||||
// Responsive sticky top and bottom
|
||||
@each $breakpoint in map.keys($grid-breakpoints) {
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||
// Responsive sticky top and bottom
|
||||
@each $breakpoint in map.keys($grid-breakpoints) {
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||
|
||||
.sticky#{$infix}-top {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: $zindex-sticky;
|
||||
}
|
||||
.sticky#{$infix}-top {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: $zindex-sticky;
|
||||
}
|
||||
|
||||
.sticky#{$infix}-bottom {
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
z-index: $zindex-sticky;
|
||||
.sticky#{$infix}-bottom {
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
z-index: $zindex-sticky;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,15 +1,17 @@
|
||||
// scss-docs-start stacks
|
||||
.hstack {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
align-self: stretch;
|
||||
}
|
||||
@layer helpers {
|
||||
// scss-docs-start stacks
|
||||
.hstack {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
align-self: stretch;
|
||||
}
|
||||
|
||||
.vstack {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
flex-direction: column;
|
||||
align-self: stretch;
|
||||
.vstack {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
flex-direction: column;
|
||||
align-self: stretch;
|
||||
}
|
||||
// scss-docs-end stacks
|
||||
}
|
||||
// scss-docs-end stacks
|
||||
|
@@ -4,14 +4,16 @@
|
||||
// Stretched link
|
||||
//
|
||||
|
||||
.stretched-link {
|
||||
&::#{$stretched-link-pseudo-element} {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: $stretched-link-z-index;
|
||||
content: "";
|
||||
@layer helpers {
|
||||
.stretched-link {
|
||||
&::#{$stretched-link-pseudo-element} {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: $stretched-link-z-index;
|
||||
content: "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,11 @@
|
||||
@use "../mixins/text-truncate" as *;
|
||||
|
||||
//
|
||||
// Text truncation
|
||||
//
|
||||
|
||||
.text-truncate {
|
||||
@include text-truncate();
|
||||
@layer helpers {
|
||||
.text-truncate {
|
||||
@include text-truncate();
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,9 @@
|
||||
// Visually hidden
|
||||
//
|
||||
|
||||
.visually-hidden,
|
||||
.visually-hidden-focusable:not(:focus):not(:focus-within) {
|
||||
@include visually-hidden();
|
||||
@layer helpers {
|
||||
.visually-hidden,
|
||||
.visually-hidden-focusable:not(:focus):not(:focus-within) {
|
||||
@include visually-hidden();
|
||||
}
|
||||
}
|
||||
|
@@ -1,10 +1,12 @@
|
||||
@use "../variables" as *;
|
||||
|
||||
.vr {
|
||||
display: inline-block;
|
||||
align-self: stretch;
|
||||
width: $vr-border-width;
|
||||
min-height: 1em;
|
||||
background-color: currentcolor;
|
||||
opacity: $hr-opacity;
|
||||
@layer helpers {
|
||||
.vr {
|
||||
display: inline-block;
|
||||
align-self: stretch;
|
||||
width: $vr-border-width;
|
||||
min-height: 1em;
|
||||
background-color: currentcolor;
|
||||
opacity: $hr-opacity;
|
||||
}
|
||||
}
|
||||
|
@@ -1,11 +1,11 @@
|
||||
@import "clearfix";
|
||||
@import "color-bg";
|
||||
@import "colored-links";
|
||||
@import "focus-ring";
|
||||
@import "icon-link";
|
||||
@import "position";
|
||||
@import "stacks";
|
||||
@import "visually-hidden";
|
||||
@import "stretched-link";
|
||||
@import "text-truncation";
|
||||
@import "vr";
|
||||
@forward "clearfix";
|
||||
@forward "color-bg";
|
||||
@forward "colored-links";
|
||||
@forward "focus-ring";
|
||||
@forward "icon-link";
|
||||
@forward "position";
|
||||
@forward "stacks";
|
||||
@forward "visually-hidden";
|
||||
@forward "stretched-link";
|
||||
@forward "text-truncation";
|
||||
@forward "vr";
|
||||
|
Reference in New Issue
Block a user