diff --git a/scss/_card.scss b/scss/_card.scss index e3314219f6413db9d32b68185422532aa1bcd974..fe394c44822a7ee55e1ec46f642a9b2a85efd71d 100644 --- a/scss/_card.scss +++ b/scss/_card.scss @@ -2,6 +2,8 @@ // Base styles // +@use "sass:math"; + .card { position: relative; display: flex; @@ -55,7 +57,7 @@ } .card-subtitle { - margin-top: -$card-title-spacer-y / 2; + margin-top: math.div(-$card-title-spacer-y, 2); margin-bottom: 0; } @@ -106,9 +108,9 @@ // .card-header-tabs { - margin-right: -$card-cap-padding-x / 2; + margin-right: math.div(-$card-cap-padding-x, 2); margin-bottom: -$card-cap-padding-y; - margin-left: -$card-cap-padding-x / 2; + margin-left: math.div(-$card-cap-padding-x, 2); border-bottom: 0; @if $nav-tabs-link-active-bg != $card-bg { @@ -120,8 +122,8 @@ } .card-header-pills { - margin-right: -$card-cap-padding-x / 2; - margin-left: -$card-cap-padding-x / 2; + margin-right: math.div(-$card-cap-padding-x, 2); + margin-left: math.div(-$card-cap-padding-x, 2); } // Card image diff --git a/scss/_carousel.scss b/scss/_carousel.scss index d389c3042e1d2f4d3e9d30d9661551006d0d6a95..b9b760a55cf86cc3dc956c4dc0fbe59f5c97990a 100644 --- a/scss/_carousel.scss +++ b/scss/_carousel.scss @@ -11,6 +11,8 @@ // 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end // is the upcoming slide in transition. +@use "sass:math"; + .carousel { position: relative; } @@ -202,9 +204,9 @@ .carousel-caption { position: absolute; - right: (100% - $carousel-caption-width) / 2; + right: math.div(100% - $carousel-caption-width, 2); bottom: $carousel-caption-spacer; - left: (100% - $carousel-caption-width) / 2; + left: math.div(100% - $carousel-caption-width, 2); padding-top: $carousel-caption-padding-y; padding-bottom: $carousel-caption-padding-y; color: $carousel-caption-color; diff --git a/scss/_functions.scss b/scss/_functions.scss index f92355f422327f7ad753ffc94be9d9cf510e9d6c..2f66603705b06a1a403ff2e10d528b4a9613be7a 100644 --- a/scss/_functions.scss +++ b/scss/_functions.scss @@ -4,6 +4,8 @@ // Ascending // Used to evaluate Sass maps like our grid breakpoints. +@use "sass:math"; + @mixin _assert-ascending($map, $map-name) { $prev-key: null; $prev-num: null; @@ -123,7 +125,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 $l1: luminance($background); $l2: luminance(opaque($background, $foreground)); - @return if($l1 > $l2, ($l1 + .05) / ($l2 + .05), ($l2 + .05) / ($l1 + .05)); + @return if($l1 > $l2, math.div($l1 + .05, $l2 + .05), math.div($l2 + .05, $l1 + .05)); } // Return WCAG2.0 relative luminance @@ -137,7 +139,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 ); @each $name, $value in $rgb { - $value: if($value / 255 < .03928, $value / 255 / 12.92, nth($_luminance-list, $value + 1)); + $value: if(math.div($value, 255) < .03928, math.div(math.div($value, 255), 12.92), nth($_luminance-list, $value + 1)); $rgb: map-merge($rgb, ($name: $value)); } diff --git a/scss/_images.scss b/scss/_images.scss index b11b45a37bb04e620d288b2434a9b66218870966..883f62959aefc44707ad81d467a6d38f7f384abf 100644 --- a/scss/_images.scss +++ b/scss/_images.scss @@ -5,6 +5,8 @@ // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps) // which weren't expecting the images within themselves to be involuntarily resized. // See also https://github.com/twbs/bootstrap/issues/18178 +@use "sass:math"; + .img-fluid { @include img-fluid(); } @@ -32,7 +34,7 @@ } .figure-img { - margin-bottom: $spacer / 2; + margin-bottom: math.div($spacer, 2); line-height: 1; } diff --git a/scss/_modal.scss b/scss/_modal.scss index 4a0e3b861dcb642b6b75230b3a668b5c2d6f8324..bff1711abcffcec5800235de05fb4ff4d358e0b1 100644 --- a/scss/_modal.scss +++ b/scss/_modal.scss @@ -5,6 +5,8 @@ // Container that the modal scrolls within +@use "sass:math"; + .modal { position: fixed; top: 0; @@ -110,8 +112,8 @@ @include border-top-radius($modal-content-inner-border-radius); .btn-close { - padding: ($modal-header-padding-y / 2) ($modal-header-padding-x / 2); - margin: ($modal-header-padding-y / -2) ($modal-header-padding-x / -2) ($modal-header-padding-y / -2) auto; + padding: math.div($modal-header-padding-y, 2) math.div($modal-header-padding-x, 2); + margin: math.div($modal-header-padding-y, -2) math.div($modal-header-padding-x, -2) math.div($modal-header-padding-y, -2) auto; } } @@ -138,7 +140,7 @@ flex-shrink: 0; align-items: center; // vertically center justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items - padding: $modal-inner-padding - $modal-footer-margin-between / 2; + padding: $modal-inner-padding - math.div($modal-footer-margin-between, 2); border-top: $modal-footer-border-width solid $modal-footer-border-color; @include border-bottom-radius($modal-content-inner-border-radius); @@ -146,7 +148,7 @@ // This solution is far from ideal because of the universal selector usage, // but is needed to fix https://github.com/twbs/bootstrap/issues/24800 > * { - margin: $modal-footer-margin-between / 2; + margin: math.div($modal-footer-margin-between, 2); } } diff --git a/scss/_offcanvas.scss b/scss/_offcanvas.scss index f1d9945641bc9217564694d2adaf35089f6dfeed..41182356b50f65e96e61a049892a47e4b6238a62 100644 --- a/scss/_offcanvas.scss +++ b/scss/_offcanvas.scss @@ -1,3 +1,5 @@ +@use "sass:math"; + .offcanvas { position: fixed; bottom: 0; @@ -21,8 +23,8 @@ padding: $offcanvas-padding-y $offcanvas-padding-x; .btn-close { - padding: ($offcanvas-padding-y / 2) ($offcanvas-padding-x / 2); - margin: ($offcanvas-padding-y / -2) ($offcanvas-padding-x / -2) ($offcanvas-padding-y / -2) auto; + padding: math.div($offcanvas-padding-y, 2) math.div($offcanvas-padding-x, 2); + margin: math.div($offcanvas-padding-y, -2) math.div($offcanvas-padding-x, -2) math.div($offcanvas-padding-y, -2) auto; } } diff --git a/scss/_popover.scss b/scss/_popover.scss index da00f700fd56bc3aed750b50e1ec7cf40bbaa771..a32df6b658d5a62d8fd164fcaa92edd150752b73 100644 --- a/scss/_popover.scss +++ b/scss/_popover.scss @@ -1,3 +1,5 @@ +@use "sass:math"; + .popover { position: absolute; top: 0; @@ -40,13 +42,13 @@ &::before { bottom: 0; - border-width: $popover-arrow-height ($popover-arrow-width / 2) 0; + border-width: $popover-arrow-height math.div($popover-arrow-width, 2) 0; border-top-color: $popover-arrow-outer-color; } &::after { bottom: $popover-border-width; - border-width: $popover-arrow-height ($popover-arrow-width / 2) 0; + border-width: $popover-arrow-height math.div($popover-arrow-width, 2) 0; border-top-color: $popover-arrow-color; } } @@ -60,13 +62,13 @@ &::before { left: 0; - border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0; + border-width: math.div($popover-arrow-width, 2) $popover-arrow-height math.div($popover-arrow-width, 2) 0; border-right-color: $popover-arrow-outer-color; } &::after { left: $popover-border-width; - border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0; + border-width: math.div($popover-arrow-width, 2) $popover-arrow-height math.div($popover-arrow-width, 2) 0; border-right-color: $popover-arrow-color; } } @@ -78,13 +80,13 @@ &::before { top: 0; - border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2); + border-width: 0 math.div($popover-arrow-width, 2) $popover-arrow-height math.div($popover-arrow-width, 2); border-bottom-color: $popover-arrow-outer-color; } &::after { top: $popover-border-width; - border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2); + border-width: 0 math.div($popover-arrow-width, 2) $popover-arrow-height math.div($popover-arrow-width, 2); border-bottom-color: $popover-arrow-color; } } @@ -96,7 +98,7 @@ left: 50%; display: block; width: $popover-arrow-width; - margin-left: -$popover-arrow-width / 2; + margin-left: math.div(-$popover-arrow-width, 2); content: ""; border-bottom: $popover-border-width solid $popover-header-bg; } @@ -110,13 +112,13 @@ &::before { right: 0; - border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height; + border-width: math.div($popover-arrow-width, 2) 0 math.div($popover-arrow-width, 2) $popover-arrow-height; border-left-color: $popover-arrow-outer-color; } &::after { right: $popover-border-width; - border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height; + border-width: math.div($popover-arrow-width, 2) 0 math.div($popover-arrow-width, 2) $popover-arrow-height; border-left-color: $popover-arrow-color; } } diff --git a/scss/_toasts.scss b/scss/_toasts.scss index 5c533d7f5daa6a9d7c10dc64a15563ddbfc8f868..93122c5489a8ba47a0eed3908098ffda8b746540 100644 --- a/scss/_toasts.scss +++ b/scss/_toasts.scss @@ -1,3 +1,5 @@ +@use "sass:math"; + .toast { width: $toast-max-width; max-width: 100%; @@ -40,7 +42,7 @@ @include border-top-radius(subtract($toast-border-radius, $toast-border-width)); .btn-close { - margin-right: $toast-padding-x / -2; + margin-right: math.div($toast-padding-x, -2); margin-left: $toast-padding-x; } } diff --git a/scss/_tooltip.scss b/scss/_tooltip.scss index 2993bf7dedd65a6ac97441616a946f1c1f512871..1511c0090e7df9b564a0c8046d74e09ad5652b23 100644 --- a/scss/_tooltip.scss +++ b/scss/_tooltip.scss @@ -1,4 +1,6 @@ // Base class +@use "sass:math"; + .tooltip { position: absolute; z-index: $zindex-tooltip; @@ -37,7 +39,7 @@ &::before { top: -1px; - border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0; + border-width: $tooltip-arrow-height math.div($tooltip-arrow-width, 2) 0; border-top-color: $tooltip-arrow-color; } } @@ -53,7 +55,7 @@ &::before { right: -1px; - border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0; + border-width: math.div($tooltip-arrow-width, 2) $tooltip-arrow-height math.div($tooltip-arrow-width, 2) 0; border-right-color: $tooltip-arrow-color; } } @@ -67,7 +69,7 @@ &::before { bottom: -1px; - border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height; + border-width: 0 math.div($tooltip-arrow-width, 2) $tooltip-arrow-height; border-bottom-color: $tooltip-arrow-color; } } @@ -83,7 +85,7 @@ &::before { left: -1px; - border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height; + border-width: math.div($tooltip-arrow-width, 2) 0 math.div($tooltip-arrow-width, 2) $tooltip-arrow-height; border-left-color: $tooltip-arrow-color; } } diff --git a/scss/_variables.scss b/scss/_variables.scss index 93ccb25a56f18ae733807394c106c76b774541fe..ef0acdc3a94c696b9ba7192a92ef88bade84d3fc 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -6,6 +6,8 @@ // Color system // scss-docs-start gray-color-variables +@use "sass:math"; + $white: #fff !default; $gray-100: #f8f9fa !default; $gray-200: #e9ecef !default; @@ -250,8 +252,8 @@ $gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default; $spacer: 1rem !default; $spacers: ( 0: 0, - 1: $spacer / 4, - 2: $spacer / 2, + 1: math.div($spacer, 4), + 2: math.div($spacer, 2), 3: $spacer, 4: $spacer * 1.5, 5: $spacer * 3, @@ -350,7 +352,7 @@ $gutters: $spacers !default; // Container padding -$container-padding-x: $grid-gutter-width / 2 !default; +$container-padding-x: math.div($grid-gutter-width, 2) !default; // Components @@ -461,7 +463,7 @@ $font-sizes: ( // scss-docs-end font-sizes // scss-docs-start headings-variables -$headings-margin-bottom: $spacer / 2 !default; +$headings-margin-bottom: math.div($spacer, 2) !default; $headings-font-family: null !default; $headings-font-style: null !default; $headings-font-weight: 500 !default; @@ -718,7 +720,7 @@ $input-height-border: $input-border-width * 2 !default; $input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default; $input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default; -$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default; +$input-height-inner-quarter: add($input-line-height * .25em, math.div($input-padding-y, 2)) !default; $input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default; $input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default; @@ -943,7 +945,7 @@ $nav-pills-link-active-bg: $component-active-bg !default; // Navbar // scss-docs-start navbar-variables -$navbar-padding-y: $spacer / 2 !default; +$navbar-padding-y: math.div($spacer, 2) !default; $navbar-padding-x: null !default; $navbar-nav-link-padding-x: .5rem !default; @@ -952,7 +954,7 @@ $navbar-brand-font-size: $font-size-lg !default; // Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default; $navbar-brand-height: $navbar-brand-font-size * $line-height-base !default; -$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default; +$navbar-brand-padding-y: math.div($nav-link-height - $navbar-brand-height, 2) !default; $navbar-brand-margin-end: 1rem !default; $navbar-toggler-padding-y: .25rem !default; @@ -1002,7 +1004,7 @@ $dropdown-border-radius: $border-radius !default; $dropdown-border-width: $border-width !default; $dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default; $dropdown-divider-bg: $dropdown-border-color !default; -$dropdown-divider-margin-y: $spacer / 2 !default; +$dropdown-divider-margin-y: math.div($spacer, 2) !default; $dropdown-box-shadow: $box-shadow !default; $dropdown-link-color: $gray-900 !default; @@ -1014,7 +1016,7 @@ $dropdown-link-active-bg: $component-active-bg !default; $dropdown-link-disabled-color: $gray-500 !default; -$dropdown-item-padding-y: $spacer / 4 !default; +$dropdown-item-padding-y: math.div($spacer, 4) !default; $dropdown-item-padding-x: $spacer !default; $dropdown-header-color: $gray-600 !default; @@ -1083,12 +1085,12 @@ $pagination-border-radius-lg: $border-radius-lg !default; // scss-docs-start card-variables $card-spacer-y: $spacer !default; $card-spacer-x: $spacer !default; -$card-title-spacer-y: $spacer / 2 !default; +$card-title-spacer-y: math.div($spacer, 2) !default; $card-border-width: $border-width !default; $card-border-radius: $border-radius !default; $card-border-color: rgba($black, .125) !default; $card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default; -$card-cap-padding-y: $card-spacer-y / 2 !default; +$card-cap-padding-y: math.div($card-spacer-y, 2) !default; $card-cap-padding-x: $card-spacer-x !default; $card-cap-bg: rgba($black, .03) !default; $card-cap-color: null !default; @@ -1096,7 +1098,7 @@ $card-height: null !default; $card-color: null !default; $card-bg: $white !default; $card-img-overlay-padding: $spacer !default; -$card-group-margin: $grid-gutter-width / 2 !default; +$card-group-margin: math.div($grid-gutter-width, 2) !default; // scss-docs-end card-variables // Accordion @@ -1144,8 +1146,8 @@ $tooltip-color: $white !default; $tooltip-bg: $black !default; $tooltip-border-radius: $border-radius !default; $tooltip-opacity: .9 !default; -$tooltip-padding-y: $spacer / 4 !default; -$tooltip-padding-x: $spacer / 2 !default; +$tooltip-padding-y: math.div($spacer, 4) !default; +$tooltip-padding-x: math.div($spacer, 2) !default; $tooltip-margin: 0 !default; $tooltip-arrow-width: .8rem !default; @@ -1311,7 +1313,7 @@ $list-group-border-color: rgba($black, .125) !default; $list-group-border-width: $border-width !default; $list-group-border-radius: $border-radius !default; -$list-group-item-padding-y: $spacer / 2 !default; +$list-group-item-padding-y: math.div($spacer, 2) !default; $list-group-item-padding-x: $spacer !default; $list-group-item-bg-scale: -80% !default; $list-group-item-color-scale: 40% !default;