28 Apr 2023

Using HTML and CSS to create a custom checkbox

Checkboxes are an essential part of any web form that allows users to make a selection. While most web developers use the default checkboxes that come with the browser, there are situations where you may want to create custom checkboxes that fit your website's design.

In this tutorial, we will learn how to create custom checkboxes using HTML and CSS.

HTML

We will start by creating a basic HTML structure for our custom checkbox. First, we will create a label element that will wrap around our checkbox.

<label class="checkbox">
  <input type="checkbox">
  <span class="checkmark"></span>
</label>

Inside the label element, we will add an input element with a type attribute of checkbox. This is the actual checkbox that users will interact with.

Next, we will add a span element with a class of checkmark. This is where we will create the custom appearance of our checkbox.

CSS

Now that we have our basic HTML structure, we can add CSS styles to create our custom checkbox.

First, we will style the checkbox class to give it some basic appearance.

.checkbox {
  display: inline-block;
  position: relative;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding-left: 25px;
  margin-bottom: 15px;
}

Here, we set the display property to inline-block so that the checkbox appears on the same line as the label text. We also set the position property to relative so that we can position the checkmark within the label.

Next, we set the cursor property to pointer to indicate to users that the checkbox is clickable. We also set the font-size and line-height properties to ensure that the label text and checkbox are vertically centered.

Finally, we set the padding-left property to create some space between the checkbox and the label text. We also set the margin-bottom property to create some vertical space between multiple checkboxes in a form.

Next, we will create the appearance of the checkmark.

.checkmark {
  position: absolute;
  top: 0;
  left: 0;
  height: 20px;
  width: 20px;
  background-color: #fff;
  border: 2px solid #ccc;
  border-radius: 4px;
}

input[type="checkbox"]:checked + .checkmark:after {
  content: "";
  display: block;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  height: 10px;
  width: 10px;
  background-color: #ccc;
  border-radius: 2px;
}

Here, we set the position property of the checkmark to absolute so that we can position it within the label element. We also set the top and left properties to 0 to position the checkmark in the top-left corner of the label.

We set the height and width properties of the checkmark to 20px to create a square shape. We also set the background-color and border properties to create a white square with a grey border.

Next, we use the :after pseudo-element to create the appearance of the checkmark when the checkbox is checked. We use the content property to add an empty content to the pseudo-element. We set the display property to block to make the pseudo-element visible. We also set the position property to absolute to position the pseudo-element within the label element.

We use the top and left properties along with the transform property to center the checkmark within the checkmark element.

We set the height and width properties of the checkmark to 10px to create a smaller square shape than the checkmark element. We also set the background-color and border-radius properties to create a grey square with rounded corners.

Finally, we use the input[type="checkbox"]:checked + .checkmark:after selector to target the pseudo-element only when the checkbox is checked. We use the + selector to select the next sibling element of the input element, which is the checkmark element.

Final thoughts

By using HTML and CSS, we can create custom checkboxes that fit our website's design. With a few lines of code, we have created a custom checkbox that is both functional and visually appealing.

Custom checkboxes can be used to enhance the user experience and provide a more personalized feel to web forms. They can also be used to create unique interactions and animations that engage users and make the website more interesting.

In conclusion, custom checkboxes are a simple and effective way to enhance the design of your website and provide a more engaging user experience. With the power of HTML and CSS, the possibilities are endless!