コニファ・ロゴ

csstest:CSSだけで、toggleボタンの状態をテキスト表示

checkboxを利用したtoggleボタンをCSSだけで作ります。初期は赤色の円が左側、クリックするとchecked状態になり、円は青色になり右側に移動します。ボタンの下側にこのボタンの状態をテキストの色名で表示します。色名テキストは、p要素の子要素に対して:before疑似要素で、予期の「赤色」を表示し、checked状態の時、label .input:checked の間接セレクタで、「青色」と書き換えています。また、この色名部分をクリックして、ボタンをtoggleすることも可能(ブラウザにより)です。

ボタンの円の色や、テキスト表示を「オフ、オン」や「NO、YES」などとで変更することで汎用的に利用できます。

サンプル

サンプルのhtmlソース

<label for="toggle">
  <input class="input" type="checkbox" id="toggle"/>
  <div class="toggle-wrapper"><span class="selector"></span></div>
  <p class="notification">toggleボタンの状態: <span class="selected"></span></p>
</label>

サンプルのCSSソース

label {
  pointer-events: none;
}
label .input {
  display: none;
}
label .input:checked + .toggle-wrapper > .selector {
  left: calc(100% - 50px);
  background-color: #3957ee;
}
label .input:checked ~ .notification > .selected:before {
  content: "青色";
  color:blue;
}
label .toggle-wrapper {
  position: relative;
  width: 120px;
  height: 60px;
  background-color: #eaeaea;
  border-radius: 999px;
  margin: auto;
  cursor: pointer;
  pointer-events: all;
}
label .toggle-wrapper .selector {
  width: 40px;
  height: 40px;
  position: absolute;
  top: 50%;
  left: 10px;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  background-color: #ee5f39;
  transition: left 0.25s ease;
  border-radius: 50%;
}
label .notification {
  font-size: 20px;
  width: 100%;
}
label .notification .selected:before {
  content: "赤色";
  color:red;
  font-size: 20px;
  border-bottom: 2px solid;
}

 

 

戻るボタン