Skip to content

Commit

Permalink
Improve gradients
Browse files Browse the repository at this point in the history
- Use a semitransparent gradient from light to dark which works on any background-color
- Store the gradient as a custom property (--bs-gradient)
- Remove `.bg-gradient-*` variants in favour of `.bg-gradient` which works even when `$enable-gradients` are enabled
- Add gradients to navbar, active page links and badges when gradients are enabled
  • Loading branch information
MartijnCuppens authored and olsza committed Oct 3, 2020
1 parent a77afb2 commit bdd9358
Show file tree
Hide file tree
Showing 16 changed files with 29 additions and 30 deletions.
1 change: 1 addition & 0 deletions scss/_badge.scss
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
white-space: nowrap;
vertical-align: baseline;
@include border-radius($badge-border-radius);
@include gradient-bg();

// Empty badges collapse automatically
&:empty {
Expand Down
1 change: 0 additions & 1 deletion scss/_helpers.scss
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
@import "helpers/background";
@import "helpers/clearfix";
@import "helpers/colored-links";
@import "helpers/embed";
Expand Down
1 change: 0 additions & 1 deletion scss/_mixins.scss
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
@import "mixins/table-variants";

// Skins
@import "mixins/background-variant";
@import "mixins/border-radius";
@import "mixins/box-shadow";
@import "mixins/gradients";
Expand Down
2 changes: 1 addition & 1 deletion scss/_nav.scss
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
.nav-link.active,
.show > .nav-link {
color: $nav-pills-link-active-color;
background-color: $nav-pills-link-active-bg;
@include gradient-bg($nav-pills-link-active-bg);
}
}

Expand Down
1 change: 1 addition & 0 deletions scss/_navbar.scss
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
padding-right: $navbar-padding-x; // default: null
padding-bottom: $navbar-padding-y;
padding-left: $navbar-padding-x; // default: null
@include gradient-bg();

// Because flex properties aren't inherited, we need to redeclare these first
// few properties so that content nested within behave properly.
Expand Down
2 changes: 1 addition & 1 deletion scss/_pagination.scss
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
&.active .page-link {
z-index: 3;
color: $pagination-active-color;
background-color: $pagination-active-bg;
@include gradient-bg($pagination-active-bg);
border-color: $pagination-active-border-color;
}

Expand Down
1 change: 1 addition & 0 deletions scss/_root.scss
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
// See https://github.com/sass/sass/issues/2383#issuecomment-336349172
--bs-font-sans-serif: #{inspect($font-family-sans-serif)};
--bs-font-monospace: #{inspect($font-family-monospace)};
--bs-gradient: #{$gradient};
}
5 changes: 5 additions & 0 deletions scss/_utilities.scss
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,11 @@ $utilities: map-merge(
)
)
),
"gradient": (
property: background-image,
class: bg,
values: (gradient: var(--bs-gradient))
),
"white-space": (
property: white-space,
class: text,
Expand Down
5 changes: 5 additions & 0 deletions scss/_variables.scss
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,11 @@ $enable-negative-margins: false !default;
$enable-deprecation-messages: true !default;
$enable-important-utilities: true !default;

// Gradient
//
// The gradient which is added to components if `$enable-gradients` is `true`
// This gradient is also added to elements with `.bg-gradient`
$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;

// Spacing
//
Expand Down
6 changes: 3 additions & 3 deletions scss/forms/_form-check.scss
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,15 @@

&[type="checkbox"] {
@if $enable-gradients {
background-image: escape-svg($form-check-input-checked-bg-image), linear-gradient(180deg, lighten($form-check-input-checked-bg-color, 10%), $form-check-input-checked-bg-color);
background-image: escape-svg($form-check-input-checked-bg-image), var(--bs-gradient);
} @else {
background-image: escape-svg($form-check-input-checked-bg-image);
}
}

&[type="radio"] {
@if $enable-gradients {
background-image: escape-svg($form-check-radio-checked-bg-image), linear-gradient(180deg, lighten($form-check-input-checked-bg-color, 10%), $form-check-input-checked-bg-color);
background-image: escape-svg($form-check-radio-checked-bg-image), var(--bs-gradient);
} @else {
background-image: escape-svg($form-check-radio-checked-bg-image);
}
Expand All @@ -73,7 +73,7 @@
border-color: $form-check-input-indeterminate-border-color;

@if $enable-gradients {
background-image: escape-svg($form-check-input-indeterminate-bg-image), linear-gradient(180deg, lighten($form-check-input-checked-bg-color, 10%), $form-check-input-checked-bg-color);
background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--bs-gradient);
} @else {
background-image: escape-svg($form-check-input-indeterminate-bg-image);
}
Expand Down
5 changes: 0 additions & 5 deletions scss/helpers/_background.scss

This file was deleted.

7 changes: 0 additions & 7 deletions scss/mixins/_background-variant.scss

This file was deleted.

2 changes: 1 addition & 1 deletion scss/mixins/_forms.scss
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
border-color: $color;

&:checked {
@include gradient-bg(lighten($color, 10%), escape-svg($form-check-input-checked-bg-image));
background-color: $color;
}

&:focus {
Expand Down
12 changes: 4 additions & 8 deletions scss/mixins/_gradients.scss
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
// Gradients

@mixin gradient-bg($color, $foreground: null) {
@mixin gradient-bg($color: null) {
background-color: $color;

@if $enable-gradients {
@if $foreground {
background-image: $foreground, linear-gradient(180deg, mix($body-bg, $color, 15%), $color);
} @else {
background-image: linear-gradient(180deg, mix($body-bg, $color, 15%), $color);
}
} @else {
background-color: $color;
background-image: var(--bs-gradient);
}
}

Expand Down
2 changes: 2 additions & 0 deletions site/content/docs/5.0/migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ Changes to our source Sass files and compiled CSS.
- `color-yiq()` function and related variables are renamed to `color-contrast()` since it's not related to YIQ colorspace anymore. [See #30168.](https://github.com/twbs/bootstrap/pull/30168/)
- `$yiq-contrasted-threshold` is renamed `$min-contrast-ratio`.
- `$yiq-text-dark` and `$yiq-text-light` are respectively renamed `$color-contrast-dark` and `$color-contrast-light`.
- Linear gradients are simplified when gradients are enabled and therefore, `gradient-bg()` now only accepts an optional `$color` parameter.
- `bg-gradient-variant()` mixin is removed since the `.bg-gradient` class can now be used to add gradients to elements instead of the `.bg-gradient-*` classes.

## JavaScript

Expand Down
6 changes: 4 additions & 2 deletions site/content/docs/5.0/utilities/colors.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,14 @@ Similar to the contextual text color classes, easily set the background of an el

## Background gradient

When `$enable-gradients` is set to `true` (default is `false`), you can use `.bg-gradient-` utility classes. [Learn about our Sass options]({{< docsref "/customize/sass" >}}) to enable these classes and more.
By adding a `.bg-gradient` class, a linear gradient is added as background image to the backgrounds. This gradient starts with a semi-transparent white which fades out to the bottom.

Do you need a gradient in your custom CSS? Just add `background-image: var(--bs-gradient);`.

{{< markdown >}}
{{< colors.inline >}}
{{- range (index $.Site.Data "theme-colors") }}
- `.bg-gradient-{{ .name }}`
<div class="p-3 mb-2 bg-{{ .name }} bg-gradient {{ if or (eq .name "light") (eq .name "warning") }}text-dark{{ else }}text-white{{ end }}">.bg-{{ .name }}.bg-gradient</div>
{{- end -}}
{{< /colors.inline >}}
{{< /markdown >}}
Expand Down

0 comments on commit bdd9358

Please sign in to comment.