【CSS】コピペでOK!チェックボックスのデザインを変更する方法

【CSS】コピペでOK!チェックボックスのデザインを変更する方法

チェックボックスのデザインをCSSで変える方法を記述します。チェックボックスのデザインはCSSのプロパティでは変更できないのでチェックが付くボックスの箇所は削除して、変わりに疑似要素を活用してデザインを作成します。

デフォルトのチェックボックスのスタイルを削除

まずはチェックボックスのスタイルを削除します。

input{
  margin: 0;
  padding: 0;
  background: none;
  border: none;
  border-radius: 0;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

参考:https://www.nxworld.net/15-useful-css-snippets-in-form-style.html

Nx World

チェックすると四角が塗りつぶされる

チェックすると四角内が塗りつぶされます。四角自体は疑似要素で作成しています。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check1">
<input type="checkbox" id="check1"><label for="check1">チェックしてね1</label>
</div>

CSS

div.check1 label{
  position:relative;
  padding-left:1.5em;
}
div.check1 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 2px #555;
  top:50%;
  bottom:0;
  margin-top:-10px;
  transition:0.3s;
}
div.check1 input[type="checkbox"]:checked + label:before{
  background:#555;
}

チェックするとマークが出る

チェックすると枠内に四角のマークが出ます。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check2">
<input type="checkbox" id="check2"><label for="check2">チェックしてね2</label>
</div>

CSS

div.check2 label{
  position:relative;
  padding-left:1.5em;
}
div.check2 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-10px;
  transition:0.3s;
}
div.check2 label:after{
  content:"";
  display:block;
  box-sizing:border-box;
  height:12px;
  width:12px;
  position:absolute;
  background: #555;
  top:50%;
  left:4px;
  margin-top:-6px;
  transition:0.3s;
  opacity:0;
}
div.check2 input[type="checkbox"]:checked + label:after{
  opacity:1;
}

チェックするとマークが出る2

先に紹介したものの丸バージョンです。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check3">
<input type="checkbox" id="check3"><label for="check3">チェックしてね3</label>
</div>

CSS

div.check3 label{
  position:relative;
  padding-left:1.5em;
}
div.check3 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-10px;
  transition:0.3s;
  border-radius:50%;
}
div.check3 label:after{
  content:"";
  display:block;
  box-sizing:border-box;
  height:12px;
  width:12px;
  position:absolute;
  background: #555;
  top:50%;
  left:4px;
  margin-top:-6px;
  transition:0.3s;
  opacity:0;
  border-radius:50%;
}
div.check3 input[type="checkbox"]:checked + label:after{
  opacity:1;
}

チェックするとマークが拡大されながら表示される

先に紹介したマークが出るものに更に拡大されるという動きを加えたものです。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check4">
<input type="checkbox" id="check4"><label for="check4">チェックしてね4</label>
</div>

CSS

div.check4 label{
  position:relative;
  padding-left:1.5em;
}
div.check4 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-10px;
  transition:0.3s;
}
div.check4 label:after{
  content:"";
  display:block;
  box-sizing:border-box;
  height:12px;
  width:12px;
  position:absolute;
  background: #555;
  top:50%;
  left:4px;
  margin-top:-6px;
  transition:0.3s;
  opacity:0;
  transform:scale(0.8);
}
div.check4 input[type="checkbox"]:checked + label:after{
  opacity:1;
  transform:scale(1);
}

チェックするとマークが拡大&回転

先に紹介したものに更に動きを追加し若干回転する様になっています。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check5">
<input type="checkbox" id="check5"><label for="check5">チェックしてね5</label>
</div>

CSS

div.check5 label{
  position:relative;
  padding-left:1.5em;
}
div.check5 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-10px;
  transition:0.3s;
}
div.check5 label:after{
  content:"";
  display:block;
  box-sizing:border-box;
  height:12px;
  width:12px;
  position:absolute;
  background: #555;
  top:50%;
  left:4px;
  margin-top:-6px;
  transition:0.3s;
  opacity:0;
  transform:scale(0.8) rotate(-15deg);
}
div.check5 input[type="checkbox"]:checked + label:after{
  opacity:1;
  transform:scale(1) rotate(0deg);
}

チェックするとマークが拡大(丸バージョン)

チェックするとマークが拡大されるものの丸バージョンです。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check6">
<input type="checkbox" id="check6"><label for="check6">チェックしてね6</label>
</div>

CSS

div.check6 label{
  position:relative;
  padding-left:1.5em;
}
div.check6 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-10px;
  transition:0.3s;
  border-radius:50%;
}
div.check6 label:after{
  content:"";
  display:block;
  box-sizing:border-box;
  height:12px;
  width:12px;
  position:absolute;
  background: #555;
  top:50%;
  left:4px;
  margin-top:-6px;
  transition:0.3s;
  opacity:0;
  border-radius:50%;
  transform:scale(0.8);
}
div.check6 input[type="checkbox"]:checked + label:after{
  opacity:1;
  transform:scale(1)
}

チェックすると四角がチェックマークに変形するデザイン

チェックすると疑似要素の四角がチェックマークに変形します。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check7">
<input type="checkbox" id="check7"><label for="check7">チェックしてね7</label>
</div>

CSS

div.check7 label{
  position:relative;
  padding-left:1.5em;
}
div.check7 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-10px;
  transition:0.3s;
}
div.check7 input[type="checkbox"]:checked + label:before{
  transform:rotate(45deg);
  border:solid 2px #ddd;
  border-top: 0;
  border-left:0;
  width:13px;
  left:4px;
  margin-top:-15px;
}

チェックすると四角内にチェックマークが出現

チェックすると疑似要素のチェックマークが出現するデザインです。よりチェックボックスらしいデザインで色を変更すれば独自性も演出しやすいです。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check8">
<input type="checkbox" id="check8"><label for="check8">チェックしてね8</label>
</div>

CSS

div.check8 label{
  position:relative;
  padding-left:1.5em;
}
div.check8 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-8px;
  transition:0.3s;
}
div.check8 label:after{
  content:"";
  display:block;
  box-sizing:border-box;
  position:absolute;
  top:50%;
  transition:0.3s;
  transform:rotate(45deg);
  border-bottom:solid 3px #555;
  border-right:solid 3px #555;
  width:12px;
  height:20px;
  left:6px;
  margin-top:-14px;
  opacity:0;
}
div.check8 input[type="checkbox"]:checked + label:after{
  opacity:1;
}

チェックすると四角内にチェックマークがアニメーションしながら出現

上記で紹介したものに更に動きを加えて、チェックをすると上からフェードインしてくるデザインになっています。
※デフォルトのチェックボックスを削除した上で下記CSSを追加して下さい。

DEMO

HTML

<div class="check9">
<input type="checkbox" id="check9"><label for="check9">チェックしてね9</label>
</div>

CSS

div.check9 label{
  position:relative;
  padding-left:1.5em;
}
div.check9 label:before{
  content:"";
  display:block;
  box-sizing:border-box;
  height:20px;
  width:20px;
  position:absolute;
  border:solid 1px #ddd;
  top:50%;
  bottom:0;
  margin-top:-8px;
  transition:0.3s;
}
div.check9 label:after{
  content:"";
  display:block;
  box-sizing:border-box;
  position:absolute;
  top:50%;
  transition:0.2s;
  transform:rotate(45deg);
  border-bottom:solid 3px #555;
  border-right:solid 3px #555;
  width:12px;
  height:20px;
  left:6px;
  margin-top:-20px;
  opacity:0;
}
div.check9 input[type="checkbox"]:checked + label:after{
  opacity:1;
  margin-top:-16px;
}

まとめ

CSSで作るチェックボックスのデザインパターンでした。チェックボックス自体はブラウザごとにデザインが違いますが、この記事の内容を利用してデザインを統一できます。またアイディアが出たら追記していこうと思います。