純粋な CSS でカスタムラジオボタンとチェックボックス機能を実装する

純粋な CSS でカスタムラジオボタンとチェックボックス機能を実装する

1. 効果を達成する

2 知識ポイント

2.1 <label> タグ

HTML では、<label> タグは通常、<input> タグと一緒に使用されます。<label> タグは、入力要素のラベル (マーカー) を定義します。ラベル要素は、ユーザーに特別な効果をもたらすものではありません。<label> タグの目的は、マウス ユーザーの使いやすさを向上させることです。ユーザーが <label> タグ内のコンテンツをクリックすると、ブラウザーは自動的にラベルに関連付けられたコントロールにフォーカスを移動します<label> タグは、ラジオ ボタンやチェック ボタンでよく使用されます。このタグを使用した後は、ラベル タグ内のコンテンツをクリックして、対応するラジオ ボタンやチェック ボタンを選択することもできます。

<label> タグの構文形式:

<label for="関連コントロール ID" form="フォーム ID のリスト">テキスト コンテンツ</label>

関連付けられたコントロールの ID は、通常、入力要素の ID を参照します。HTML5 では、新しい属性 form が追加されました。form 属性は、スペースで区切られた、属する 1 つ以上のフォームの ID リストを指定するために使用されます。<label> タグがフォーム タグ <form> 内にない場合は、form 属性を使用して、属するフォームを指定する必要があります。

<label> 要素には特別なスタイル設定の考慮事項はありません。構造的には、<label> は単純なインライン要素なので、<span> 要素や <a> 要素とほぼ同じ方法でスタイルを適用できます。

2.2 CSS3 ボックスシャドウプロパティ

boxShadow プロパティは、ボックスに 1 つ以上のドロップ シャドウを追加します。このプロパティは、カンマで区切られた影のリストであり、各影は 2 ~ 4 個の長さの値、オプションの色の値、およびオプションの inset キーワードで指定されます。省略された長さの値は 0 です。

文法:

box-shadow: h-shadow v-shadow ぼかし スプレッド カラー インセット;

2.3 CSS3 トランジションプロパティ

transition プロパティは、要素の遷移効果を設定するために使用されます。 4 つの省略形プロパティは次のとおりです。

遷移プロパティ

遷移期間

遷移タイミング関数

遷移遅延

文法

transition: プロパティ期間タイミング関数遅延;

2.4 CSS3 :checkedセレクタ

:checked セレクターは、チェックされているすべての入力要素に一致します (ラジオ ボタンまたはチェックボックスにのみ適用されます)。

2.5 CSS要素+要素セレクタ

要素 + 要素セレクターは、指定された最初の要素の直後の要素 (内部ではない) を選択するために使用されます。

たとえば、<div> 要素の直後にあるすべての <p> 要素を選択します。

div+p{ 背景色:黄色; }

3 コードの実装

<!DOCTYPE html>
<html>
  <ヘッド>
    <メタ文字セット="utf-8">
    <タイトル></タイトル>
    <スタイル タイプ="text/css">
      #主要 {
        ディスプレイ: フレックス;
        コンテンツの中央揃え: 中央;
        アイテムの位置を中央揃えにします。
        flex-wrap: ラップ;
      }
 
      #包む {
        位置: 相対的;
        マージン: 10px;
      }
 
      。アイテム {
        幅: 100ピクセル;
        高さ: 100px;
        背景色: #9E9E9E;
        位置: 相対的;
        ボックスシャドウ: 0 0 0 3px #dbe0e3;
        遷移: すべて 0.5 秒;
        カーソル: ポインタ;
      }
 
      .item画像{
        幅: 20px;
        高さ: 20px;
        位置: 絶対;
        下: 0px;
        右: 0px;
        不透明度: 0;
      }
 
            入力[type="radio"],
      入力[type="チェックボックス"] {
        表示: なし;
      }
 
      入力:チェック済み+ラベル.item {
        ボックスシャドウ: 0 0 0 3px #00a3ff;
        色: #FFFFFF;
        背景色: #efad4c;
      }
 
      入力:チェック済み+ラベル.item画像{
        不透明度: 1;
      }
      
      。コンテンツ {
        フォントサイズ: 30px;
        テキスト配置: 中央;
        行の高さ: 100px;
      }
</スタイル>
  </head>
  <本文>
    <div id="メイン">
      
      <h1>複数選択</h1>
      <div id="wrap">
          <input type="チェックボックス" name="1" id="item1" />
        <ラベルの項目1">
          <div class="item">
            <div class="content">
              1
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="チェックボックス" name="1" id="item2" />
        <ラベルの項目2">
          <div class="item">
            <div class="content">
              2
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="チェックボックス" name="1" id="item3" />
        <ラベル>
          <div class="item">
            <div class="content">
              3
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="チェックボックス" name="1" id="item4" />
        <ラベル>
          <div class="item">
            <div class="content">
              4
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="チェックボックス" name="1" id="item5" />
        <ラベル>
          <div class="item">
            <div class="content">
              5
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      
      <h1>単一選択</h1>
      <div id="wrap">
          <input type="radio" name="1" id="item6" />
        <ラベルの項目6">
          <div class="item">
            <div class="content">
              1
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="radio" name="1" id="item7" />
        <ラベルの項目7">
          <div class="item">
            <div class="content">
              2
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="radio" name="1" id="item8" />
        <ラベルの項目="item8">
          <div class="item">
            <div class="content">
              3
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="radio" name="1" id="item9" />
        <ラベルの項目="item9">
          <div class="item">
            <div class="content">
              4
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
      <div id="wrap">
      
        <input type="radio" name="1" id="item10" />
        <ラベル>
          <div class="item">
            <div class="content">
              5
            </div>
            <img src="ico_checkon.svg" />
          </div>
        </ラベル>
      </div>
    </div>
  </本文>
</html>

純粋な CSS でカスタム ラジオ ボタンとチェック ボックスを実装する方法に関するこの記事はこれで終わりです。より関連性の高い CSS カスタム ラジオ ボタンとチェック ボックスについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  IE、Firefox、Chromeブラウザではスペースの表示が異なります

>>:  MySQL をベースにしたシンプルな検索エンジンを実装する

推薦する

nodejsとyarnをインストールし、Taobaoソースプロセスレコードを構成する

目次1. nodejsをダウンロードする2. ダブルクリックしてインストール3. グローバル npm...

Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)

tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率...

HTMLフォーム要素の詳しい解説(パート2)

HTML 入力属性値属性value 属性は、入力フィールドの初期値を指定します。 <フォーム...

HTML のオートコンプリートを無効にして履歴を表示しないようにする

入力ボックスには、コンテンツを入力するときに常に入力履歴が表示されます。これを無効にする現在の方法は...

シンプルな時計を実装するJavaScript

この記事では、JavaScriptでシンプルな時計を実装するための具体的なコードを参考までに紹介しま...

ブラウザの自動フォーム入力によるウェブページのスタイル損失の原因の分析と解決

バックエンドからフロントエンドまで、なんと悲劇なのでしょう。他の人の CSS を自分の jsp We...

MySQLの誤操作後にbinlog2sqlを使用して素早くロールバックする方法の詳細な説明

序文日常の仕事や勉強では、データベースを操作するときに「不注意」によるミスを犯すことは避けられません...

Nginx サービスを使用してサブドメイン環境を構築し、2D マップの読み込みパフォーマンスを向上させる方法を説明します。

1. 背景最近、友人が大規模なマップの読み込みが遅いという問題に遭遇しました。iServer のパ...

Vueで複数の添付ファイルをアップロードする実装例

目次序文コアコードコードのファイル表示部分序文この記事では主に、Vue プロジェクトでの添付ファイル...

CSSページ下部固定を実現する8つの方法の詳細な説明

ページを書いているときに、ページの内容が小さくてフッターがページの真ん中に留まってしまうといった状況...

MySQL アップグレードのベストプラクティス

MySQL 5.7 には、オンライン DDL、マルチソース レプリケーション、拡張された半同期、テー...

vuexプロジェクトにおけるログインステータス管理の実践プロセス

目次道具:ログインシナリオ:練習する:シナリオ1: 思考と実践シナリオ2: 思考と実践要約する道具:...

Nginx の場所と proxy_pass パスの設定の問題の概要

目次1. Nginxロケーションの基本設定1.1 Nginx 設定ファイル1.2 Pythonスクリ...

自動開始および停止コマンドを適用するには、Docker サービスを再起動します (推奨)

Docker サービス アプリケーションを再起動するコマンドを見てみましょう。具体的な内容は次のと...

mysql5.7.18のインストールと初期パスワードの変更方法

CentosでのMySQLのインストールについては、以前の記事を参照してください。 Centos7....