In Bootstrap 4, you can customize the form element design to replace the browser default. You can change the design of the radio button, checkbox, slider, i.e., range, dropdown menu, file upload, toggle button, etc. In this tutorial, you will learn how to implement them.
Custom Checkbox
To implement custom checkboxes, .custom-control and .custom-checkbox classes are used within the <div> tag. And .custom-control-input class is used in <input> with type="checkbox" as the attribute and value.
Example:
<div class="custom-control custom-checkbox">
<input id="terms" class="custom-control-input" name="terms" type="checkbox">
<label class="custom-control-label" for="terms">I agree to the Terms of Service.</label>
</div>
Output:
Custom Switch
The <div> element is used to create custom toggle switches, .custom-control and .custom-switch classes are used around checkboxes. And .custom-control-input class is used for the <input> element. Here is a sample code snippet:
Example:
<div class="custom-control custom-switch">
<input id="subscribe" class="custom-control-input" type="checkbox">
<label class="custom-control-label" for="subscribe">Yes, I want to subscribe.</label>
</div>
Output:
Custom Radio Button
Custom radio buttons are created using a <div> container element with the .custom-control and .custom-radio classes around the radio button. And the .custom-control-input class has to be applied to the input with the type="radio" attribute.
Example:
<p>I am ...</p>
<div class="offset-1">
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="UserType" id="Student" value="Student">
<label class="custom-control-label" for="Student">A Student</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="UserType" id="Institute" value="Institute">
<label class="custom-control-label" for="Institute">An Institute/Training Center</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="UserType" id="Faculty" value="Faculty">
<label class="custom-control-label" for="Faculty">A Faculty</label>
</div>
</div>
Output:
I am ...
Custom Dropdown Select Menu
To create bootstrap 4 custom-design dropdown on select inputs, .custom-select class is used in the <select> element. Here's a sample code snippet of how to use it:
Example:
<select name="course" class="custom-select">
<option selected>Select Course</option>
<option value="BCA">BCA</option>
<option value="MCA">MCA</option>
<option value="BE">BE</option>
<option value="CS">CS</option>
</select>
Output:
Customize the Size of the Custom Menu
You can use the .custom-select-sm class and the .custom-select-lg class to create dropdowns of smaller and larger sizes as per the design requirement. Here's a sample code snippet of how to implement it:
Example:
<select name="language" class="custom-select custom-select-lg mb-3">
<option selected>Custom Large Selection Menu</option>
<option value="cpp">C++ 17</option>
<option value="python">Python 3</option>
<option value="cs">C# 7</option>
</select>
<select name="language" class="custom-select custom-select-sm">
<option selected>Custom Small Selection Menu</option>
<option value="cpp">C++ 17</option>
<option value="python">Python 3</option>
<option value="cs">C# 7</option>
</select>
Output:
Custom Range
To implement Custom Range, .custom-range class is used within <input> tag along with type="range" attribute. Here is a code snippet:
Example:
<label for="customRange">Example of Custom range</label>
<input type="range" class="custom-range" id="customRange" name="range1">
Output:
Custom File Upload
To implement custom file uploads, the .custom-file class is wrapped in a <div> and then the .custom-file-input class is used within the <input> tag along with type="file" attribute. Here's a sample code snippet of how to use it using Bootstrap 4:
Example:
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile">
<label class="custom-file-label" for="customFile">Choose a file</label>
</div>
Output: