【HTML/CSS】カスタムスライダーの作り方


概要

この記事では、HTML/CSSを使用してカスタムスライダーを作成する方法を紹介しています。

要点

  • <input type="range">要素をカスタマイズして、外観やスタイルを自由に変更するコード例

  • スタイルの設定方法やブラウザ間の互換性についても説明


コード

/* ベースのスタイル */
input[type="range"] {
    -webkit-appearance: none; /* ブラウザのデフォルトのスタイルをリセット */
    appearance: none;
    width: 100%; /* 幅を100%に設定 */
    height: 10px; /* スライダーの高さ */
    background: #ddd ; /* スライダーの背景色 */
    border-radius: 5px; /* 角丸 */
    outline: none; /* フォーカス時のアウトラインを非表示に */
}

/* スライダーのつまみ */
input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none; /* ブラウザのデフォルトのスタイルをリセット */
    appearance: none;
    width: 20px; /* つまみの幅 */
    height: 20px; /* つまみの高さ */
    background: #555 ; /* つまみの背景色 */
    border-radius: 50%; /* つまみを丸くする */
    cursor: pointer; /* マウスを合わせた時のカーソルをポインターに */
}

/* Firefox用のスタイル */
input[type="range"]::-moz-range-thumb {
    width: 20px; /* つまみの幅 */
    height: 20px; /* つまみの高さ */
    background: #555 ; /* つまみの背景色 */
    border-radius: 50%; /* つまみを丸くする */
    cursor: pointer; /* マウスを合わせた時のカーソルをポインターに */
}


コード解説

/* ベースのスタイル */
input[type="range"] {
    -webkit-appearance: none; /* ブラウザのデフォルトのスタイルをリセット */
    appearance: none;
    width: 100%; /* 幅を100%に設定 */
    height: 10px; /* スライダーの高さ */
    background: #ddd ; /* スライダーの背景色 */
    border-radius: 5px; /* 角丸 */
    outline: none; /* フォーカス時のアウトラインを非表示に */
}

● input[type="range"]
<input> 要素の中で、 type 属性が "range" に設定されたスライダー要素の基本的なスタイルを定義

 -webkit-appearance: none; と appearance: none;
ブラウザのデフォルトのスタイルをリセットして、カスタムスタイルを適用するための指定です。

 width: 100%;
スライダーの幅を親要素に対して100%に設定し、親要素いっぱいに広がるようにしてます。

 height: 10px;
スライダーの高さ(太さ)を設定します。

 background: #ddd ;
スライダーの背景色を変更できます。

● border-radius: 5px;
スライダーの角を丸くします。

● outline: none;
フォーカス時のアウトラインを非表示にします。デフォルトではブラウザによってフォーカス時に青い枠が表示されますが、ここで非表示にすることでスタイルが統一されます。

/* スライダーのつまみ */
input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none; /* ブラウザのデフォルトのスタイルをリセット */
    appearance: none;
    width: 20px; /* つまみの幅 */
    height: 20px; /* つまみの高さ */
    background: #555 ; /* つまみの背景色 */
    border-radius: 50%; /* つまみを丸くする */
    cursor: pointer; /* マウスを合わせた時のカーソルをポインターに */
}


この記事が気に入ったらサポートをしてみませんか?