<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<div class="form-check">
- <label class="form-check-label">
- <input type="checkbox" class="form-check-input">
- Check me out
- </label>
+ <input type="checkbox" class="form-check-input" id="exampleCheck1">
+ <label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Default checkboxes and radios are improved upon with the help of `.form-check`, **a single class for both input types that improves the layout and behavior of their HTML elements**. Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.
-Disabled checkboxes and radios are supported, but to provide a `not-allowed` cursor on hover of the parent `<label>`, you'll need to add the `.disabled` class to the parent `.form-check`. The disabled class will also lighten the text color to help indicate the input's state.
+Disabled checkboxes and radios are supported, but to provide a `not-allowed` cursor on hover of the parent `<label>`, you'll need to add the `disabled` attribute to the `.form-check-input`. The disabled attribute will apply a lighter color to help indicate the input's state.
+
+Checkboxes and radios use are built to support HTML-based form validation and provide concise, accessible labels. As such, our `<input>`s and `<label>`s are sibling elements as opposed to an `<input>` within a `<label>`. This is slightly more verbose as you must specify `id` and `for` attributes to relate the `<input>` and `<label>`.
### Default (stacked)
{% example html %}
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox" value="">
- Option one is this and that—be sure to include why it's great
+ <input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
+ <label class="form-check-label" for="defaultCheck1">
+ Default checkbox
</label>
</div>
-<div class="form-check disabled">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox" value="" disabled>
- Option two is disabled
+<div class="form-check">
+ <input class="form-check-input" type="checkbox" value="" id="defaultCheck2" disabled>
+ <label class="form-check-label" for="defaultCheck2">
+ Disabled checkbox
</label>
</div>
{% endexample %}
{% example html %}
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
- Option one is this and that—be sure to include why it's great
+ <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
+ <label class="form-check-label" for="exampleRadios1">
+ Default radio
</label>
</div>
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
- Option two can be something else and selecting it will deselect option one
+ <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
+ <label class="form-check-label" for="exampleRadios2">
+ Second default radio
</label>
</div>
<div class="form-check disabled">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
- Option three is disabled
+ <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
+ <label class="form-check-label" for="exampleRadios3">
+ Disabled radio
</label>
</div>
{% endexample %}
{% example html %}
<div class="form-check form-check-inline">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1"> 1
- </label>
+ <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1">
+ <label class="form-check-label" for="inlineCheckbox1">1</label>
</div>
<div class="form-check form-check-inline">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2"> 2
- </label>
+ <input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2">
+ <label class="form-check-label" for="inlineCheckbox2">2</label>
</div>
-<div class="form-check form-check-inline disabled">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled> 3
- </label>
+<div class="form-check form-check-inline">
+ <input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled>
+ <label class="form-check-label" for="inlineCheckbox3">3 (disabled)</label>
</div>
{% endexample %}
{% example html %}
<div class="form-check form-check-inline">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> 1
- </label>
+ <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1">
+ <label class="form-check-label" for="inlineRadio1">1</label>
</div>
<div class="form-check form-check-inline">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> 2
- </label>
+ <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2">
+ <label class="form-check-label" for="inlineRadio2">2</label>
</div>
-<div class="form-check form-check-inline disabled">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled> 3
- </label>
+<div class="form-check form-check-inline">
+ <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled>
+ <label class="form-check-label" for="inlineRadio3">3 (disabled)</label>
</div>
{% endexample %}
{% example html %}
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input position-static" type="checkbox" id="blankCheckbox" value="option1" aria-label="...">
- </label>
+ <input class="form-check-input position-static" type="checkbox" id="blankCheckbox" value="option1" aria-label="...">
</div>
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input position-static" type="radio" name="blankRadio" id="blankRadio1" value="option1" aria-label="...">
- </label>
+ <input class="form-check-input position-static" type="radio" name="blankRadio" id="blankRadio1" value="option1" aria-label="...">
</div>
{% endexample %}
</div>
<div class="form-group">
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox"> Check me out
+ <input class="form-check-input" type="checkbox" id="gridCheck">
+ <label class="form-check-label" for="gridCheck">
+ Check me out
</label>
</div>
</div>
<legend class="col-form-label col-sm-2 pt-0">Radios</legend>
<div class="col-sm-10">
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
- Option one is this and that—be sure to include why it's great
+ <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
+ <label class="form-check-label" for="gridRadios1">
+ First radio
</label>
</div>
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
- Option two can be something else and selecting it will deselect option one
+ <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
+ <label class="form-check-label" for="gridRadios2">
+ Second radio
</label>
</div>
<div class="form-check disabled">
- <label class="form-check-label">
- <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
- Option three is disabled
+ <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
+ <label class="form-check-label" for="gridRadios3">
+ Third disabled radio
</label>
</div>
</div>
<div class="col-sm-2">Checkbox</div>
<div class="col-sm-10">
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox"> Check me out
+ <input class="form-check-input" type="checkbox" id="gridCheck1">
+ <label class="form-check-label" for="gridCheck1">
+ Example checkbox
</label>
</div>
</div>
</div>
<div class="col-auto">
<div class="form-check mb-2">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox"> Remember me
+ <input class="form-check-input" type="checkbox" id="autoSizingCheck">
+ <label class="form-check-label" for="autoSizingCheck">
+ Remember me
</label>
</div>
</div>
{% example html %}
<form>
<div class="form-row align-items-center">
- <div class="col-sm-3">
+ <div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputName">Name</label>
- <input type="text" class="form-control mb-2 mb-sm-0" id="inlineFormInputName" placeholder="Jane Doe">
+ <input type="text" class="form-control" id="inlineFormInputName" placeholder="Jane Doe">
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputGroupUsername">Username</label>
- <div class="input-group mb-2 mb-sm-0">
+ <div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
</div>
</div>
- <div class="col-auto">
- <div class="form-check mb-2 mb-sm-0">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox"> Remember me
+ <div class="col-auto my-1">
+ <div class="form-check">
+ <input class="form-check-input" type="checkbox" id="autoSizingCheck2">
+ <label class="form-check-label" for="autoSizingCheck2">
+ Remember me
</label>
</div>
</div>
- <div class="col-auto">
+ <div class="col-auto my-1">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
{% example html %}
<form>
<div class="form-row align-items-center">
- <div class="col-auto">
+ <div class="col-auto my-1">
<label class="mr-sm-2" for="inlineFormCustomSelect">Preference</label>
- <select class="custom-select mb-2 mr-sm-2" id="inlineFormCustomSelect">
+ <select class="custom-select mr-sm-2" id="inlineFormCustomSelect">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
- <div class="col-auto">
- <label class="custom-control custom-checkbox mb-2 mr-sm-2">
- <input type="checkbox" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Remember my preference</span>
- </label>
+ <div class="col-auto my-1">
+ <div class="custom-control custom-checkbox mr-sm-2">
+ <input type="checkbox" class="custom-control-input" id="customControlAutosizing">
+ <label class="custom-control-label" for="customControlAutosizing">Remember my preference</label>
+ </div>
</div>
- <div class="col-auto">
- <button type="submit" class="btn btn-primary mb-2">Submit</button>
+ <div class="col-auto my-1">
+ <button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
<div class="form-check mb-2 mr-sm-2">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox"> Remember me
+ <input class="form-check-input" type="checkbox" id="inlineFormCheck">
+ <label class="form-check-label" for="inlineFormCheck">
+ Remember me
</label>
</div>
{% example html %}
<form class="form-inline">
- <label class="mr-2" for="inlineFormCustomSelectPref">Preference</label>
- <select class="custom-select mb-2 mr-sm-2" id="inlineFormCustomSelectPref">
+ <label class="my-1 mr-2" for="inlineFormCustomSelectPref">Preference</label>
+ <select class="custom-select my-1 mr-sm-2" id="inlineFormCustomSelectPref">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
- <label class="custom-control custom-checkbox mb-2 mr-sm-2">
- <input type="checkbox" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Remember my preference</span>
- </label>
+ <div class="custom-control custom-checkbox my-1 mr-sm-2">
+ <input type="checkbox" class="custom-control-input" id="customControlInline">
+ <label class="custom-control-label" for="customControlInline">Remember my preference</label>
+ </div>
- <button type="submit" class="btn btn-primary mb-2">Submit</button>
+ <button type="submit" class="btn btn-primary my-1">Submit</button>
</form>
{% endexample %}
</select>
</div>
<div class="form-check">
- <label class="form-check-label">
- <input class="form-check-input" type="checkbox"> Can't check this
+ <input class="form-check-input" type="checkbox" id="disabledFieldsetCheck" disabled>
+ <label class="form-check-label" for="disabledFieldsetCheck">
+ Can't check this
</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
{% example html %}
<form class="was-validated">
- <label class="custom-control custom-checkbox">
- <input type="checkbox" class="custom-control-input" required>
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Check this custom checkbox</span>
- </label>
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" class="custom-control-input" id="customControlValidation1" required>
+ <label class="custom-control-label" for="customControlValidation1">Check this custom checkbox</label>
+ </div>
- <div class="custom-controls-stacked d-block my-3">
- <label class="custom-control custom-radio">
- <input id="radioStacked1" name="radio-stacked" type="radio" class="custom-control-input" required>
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Toggle this custom radio</span>
- </label>
- <label class="custom-control custom-radio">
- <input id="radioStacked2" name="radio-stacked" type="radio" class="custom-control-input" required>
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Or toggle this other custom radio</span>
- </label>
+ <div class="custom-control custom-radio">
+ <input type="radio" class="custom-control-input" id="customControlValidation2" name="radio-stacked" required>
+ <label class="custom-control-label" for="customControlValidation2">Toggle this custom radio</label>
+ </div>
+ <div class="custom-control custom-radio">
+ <input type="radio" class="custom-control-input" id="customControlValidation3" name="radio-stacked" required>
+ <label class="custom-control-label" for="customControlValidation3">Or toggle this other custom radio</label>
</div>
<select class="custom-select d-block my-3" required>
### Checkboxes and radios
-Each checkbox and radio is wrapped in a `<label>` for three reasons:
-
-- It provides a larger hit areas for checking the control.
-- It provides a helpful and semantic wrapper to help us replace the default `<input>`s.
-- It triggers the state of the `<input>` automatically, meaning no JavaScript is required.
+Each checkbox and radio is wrapped in a `<div>` with a sibling `<span>` to create our custom control and a `<label>` for the accompanying text. Structurally, this is the same approach as our default `.form-check`.
-We hide the default `<input>` with `opacity` and use the `.custom-control-indicator` to build a new custom form indicator in its place. Unfortunately we can't build a custom one from just the `<input>` because CSS's `content` doesn't work on that element.
+We use the sibling selector (`~`) for all our `<input>` states—like `:checked`—to properly style our custom form indicator. When combined with the `.custom-control-label` class, we can also style the text for each item based on the `<input>`'s state.
-We use the sibling selector (`~`) for all our `<input>` states—like `:checked`—to properly style our custom form indicator. When combined with the `.custom-control-description` class, we can also style the text for each item based on the `<input>`'s state.
+We hide the default `<input>` with `opacity` and use the `.custom-control-label` to build a new custom form indicator in its place with `::before` and `::after`. Unfortunately we can't build a custom one from just the `<input>` because CSS's `content` doesn't work on that element.
In the checked states, we use **base64 embedded SVG icons** from [Open Iconic](https://useiconic.com/open). This provides us the best control for styling and positioning across browsers and devices.
#### Checkboxes
{% example html %}
-<label class="custom-control custom-checkbox">
- <input type="checkbox" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Check this custom checkbox</span>
-</label>
+<div class="custom-control custom-checkbox">
+ <input type="checkbox" class="custom-control-input" id="customCheck1">
+ <label class="custom-control-label" for="customCheck1">Check this custom checkbox</label>
+</div>
{% endexample %}
Custom checkboxes can also utilize the `:indeterminate` pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).
<div class="bd-example bd-example-indeterminate">
- <label class="custom-control custom-checkbox">
- <input type="checkbox" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Check this custom checkbox</span>
- </label>
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" class="custom-control-input" id="customCheck2">
+ <label class="custom-control-label" for="customCheck2">Check this custom checkbox</label>
+ </div>
</div>
If you're using jQuery, something like this should suffice:
#### Radios
{% example html %}
-<label class="custom-control custom-radio">
- <input id="radio1" name="radio" type="radio" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Toggle this custom radio</span>
-</label>
-<label class="custom-control custom-radio">
- <input id="radio2" name="radio" type="radio" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Or toggle this other custom radio</span>
-</label>
+<div class="custom-control custom-radio">
+ <input type="radio" id="customRadio1" name="customRadio" class="custom-control-input">
+ <label class="custom-control-label" for="customRadio1">Toggle this custom radio</label>
+</div>
+<div class="custom-control custom-radio">
+ <input type="radio" id="customRadio2" name="customRadio" class="custom-control-input">
+ <label class="custom-control-label" for="customRadio2">Or toggle this other custom radio</label>
+</div>
{% endexample %}
-#### Disabled
-
-Custom checkboxes and radios can also be disabled. Add the `disabled` boolean attribute to the `<input>` and the custom indicator and label description will be automatically styled.
+#### Inline
{% example html %}
-<label class="custom-control custom-checkbox">
- <input type="checkbox" class="custom-control-input" disabled>
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Check this custom checkbox</span>
-</label>
-
-<label class="custom-control custom-radio">
- <input id="radio3" name="radioDisabled" type="radio" class="custom-control-input" disabled>
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Toggle this custom radio</span>
-</label>
+<div class="custom-control custom-radio custom-control-inline">
+ <input type="radio" id="customRadioInline1" name="customRadioInline1" class="custom-control-input">
+ <label class="custom-control-label" for="customRadioInline1">Toggle this custom radio</label>
+</div>
+<div class="custom-control custom-radio custom-control-inline">
+ <input type="radio" id="customRadioInline2" name="customRadioInline1" class="custom-control-input">
+ <label class="custom-control-label" for="customRadioInline2">Or toggle this other custom radio</label>
+</div>
{% endexample %}
-#### Stacked
+#### Disabled
-Custom checkboxes and radios are inline to start. Add a parent with class `.custom-controls-stacked` to ensure each form control is on separate lines.
+Custom checkboxes and radios can also be disabled. Add the `disabled` boolean attribute to the `<input>` and the custom indicator and label description will be automatically styled.
{% example html %}
-<div class="custom-controls-stacked">
- <label class="custom-control custom-radio">
- <input id="radioStacked3" name="radio-stacked" type="radio" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Toggle this custom radio</span>
- </label>
- <label class="custom-control custom-radio">
- <input id="radioStacked4" name="radio-stacked" type="radio" class="custom-control-input">
- <span class="custom-control-indicator"></span>
- <span class="custom-control-description">Or toggle this other custom radio</span>
- </label>
+<div class="custom-control custom-checkbox">
+ <input type="checkbox" class="custom-control-input" id="customCheckDisabled" disabled>
+ <label class="custom-control-label" for="customCheckDisabled">Check this custom checkbox</label>
+</div>
+
+<div class="custom-control custom-radio">
+ <input type="radio" id="radio3" name="radioDisabled" id="customRadioDisabled" class="custom-control-input" disabled>
+ <label class="custom-control-label" for="customRadioDisabled">Toggle this custom radio</label>
</div>
{% endexample %}
.custom-control {
position: relative;
- display: inline-flex;
+ display: block;
min-height: (1rem * $line-height-base);
padding-left: $custom-control-gutter;
+}
+
+.custom-control-inline {
+ display: inline-flex;
margin-right: $custom-control-spacer-x;
}
z-index: -1; // Put the input behind the label so it doesn't overlay text
opacity: 0;
- &:checked ~ .custom-control-indicator {
+ &:checked ~ .custom-control-label::before {
color: $custom-control-indicator-checked-color;
@include gradient-bg($custom-control-indicator-checked-bg);
@include box-shadow($custom-control-indicator-checked-box-shadow);
}
- &:focus ~ .custom-control-indicator {
+ &:focus ~ .custom-control-label::before {
// the mixin is not used here to make sure there is feedback
box-shadow: $custom-control-indicator-focus-box-shadow;
}
- &:active ~ .custom-control-indicator {
+ &:active ~ .custom-control-label::before {
color: $custom-control-indicator-active-color;
background-color: $custom-control-indicator-active-bg;
@include box-shadow($custom-control-indicator-active-box-shadow);
}
&:disabled {
- ~ .custom-control-indicator {
- background-color: $custom-control-indicator-disabled-bg;
- }
+ ~ .custom-control-label {
+ color: $custom-control-label-disabled-color;
- ~ .custom-control-description {
- color: $custom-control-description-disabled-color;
+ &::before {
+ background-color: $custom-control-indicator-disabled-bg;
+ }
}
}
}
-// Custom indicator
+// Custom control indicators
//
-// Generates a shadow element to create our makeshift checkbox/radio background.
+// Build the custom controls out of psuedo-elements.
-.custom-control-indicator {
- position: absolute;
- top: (($line-height-base - $custom-control-indicator-size) / 2);
- left: 0;
- display: block;
- width: $custom-control-indicator-size;
- height: $custom-control-indicator-size;
- pointer-events: none;
- user-select: none;
- background-color: $custom-control-indicator-bg;
- @include box-shadow($custom-control-indicator-box-shadow);
+.custom-control-label {
+ margin-bottom: 0;
+ // Background-color and (when enabled) gradient
&::before {
+ position: absolute;
+ top: (($line-height-base - $custom-control-indicator-size) / 2);
+ left: 0;
+ display: block;
+ width: $custom-control-indicator-size;
+ height: $custom-control-indicator-size;
+ pointer-events: none;
+ content: "";
+ user-select: none;
+ background-color: $custom-control-indicator-bg;
+ @include box-shadow($custom-control-indicator-box-shadow);
+ }
+
+ // Foreground (icon)
+ &::after {
+ position: absolute;
+ top: (($line-height-base - $custom-control-indicator-size) / 2);
+ left: 0;
display: block;
width: $custom-control-indicator-size;
height: $custom-control-indicator-size;
}
}
+
// Checkboxes
//
// Tweak just a few things for checkboxes.
.custom-checkbox {
- .custom-control-indicator {
+ .custom-control-label::before {
@include border-radius($custom-checkbox-indicator-border-radius);
}
- .custom-control-input:checked ~ .custom-control-indicator {
- @include gradient-bg($custom-control-indicator-checked-bg);
-
+ .custom-control-input:checked ~ .custom-control-label {
&::before {
+ @include gradient-bg($custom-control-indicator-checked-bg);
+ }
+ &::after {
background-image: $custom-checkbox-indicator-icon-checked;
}
}
- .custom-control-input:indeterminate ~ .custom-control-indicator {
- @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
- @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
-
+ .custom-control-input:indeterminate ~ .custom-control-label {
&::before {
+ @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
+ @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
+ }
+ &::after {
background-image: $custom-checkbox-indicator-icon-indeterminate;
}
}
// Tweak just a few things for radios.
.custom-radio {
- .custom-control-indicator {
+ .custom-control-label::before {
border-radius: $custom-radio-indicator-border-radius;
}
- .custom-control-input:checked ~ .custom-control-indicator {
- @include gradient-bg($custom-control-indicator-checked-bg);
-
+ .custom-control-input:checked ~ .custom-control-label {
&::before {
- background-image: $custom-radio-indicator-icon-checked;
+ @include gradient-bg($custom-control-indicator-checked-bg);
}
- }
-}
-
-
-// Layout options
-//
-// By default radios and checkboxes are `inline-block` with no additional spacing
-// set. Use these optional classes to tweak the layout.
-
-.custom-controls-stacked {
- display: flex;
- flex-direction: column;
-
- .custom-control {
- margin-bottom: $custom-control-spacer-y;
-
- + .custom-control {
- margin-left: 0;
+ &::after {
+ background-image: $custom-radio-indicator-icon-checked;
}
}
}