JSネイティブ2列シャトル選択ボックスの実装例

JSネイティブ2列シャトル選択ボックスの実装例

いつ使うか

選択動作を完了するには、2 つの列間で要素を直感的に移動してください。

1 つ以上のオプションを選択した後、対応する矢印キーをクリックして、選択したオプションを別の列に移動します。 左の列はsource 、右の列はtargetです。API の設計もこれら 2 つの概念を反映しています。

では、早速コードを見てみましょう。

構造的ブランチ

画像-20211026181412467

コード

データ選択.html

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>2 列シャトル選択ボックス</title>
    <link rel="スタイルシート" href="css/dS.css" rel="外部nofollow" >
    <script src="js/jquery.min.js"></script>
    <スタイル>
        体 {
            /*背景:#000c3b;*/
        }
    </スタイル>
</head>
<本文>
	<div style="margin:40px;">
	<ul id="シャトルボックス">
		<li class="shuttle_box_li シャトルボックス_near">
			<ul id="shuttle_box_left">
				<li class="outside">李白&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="date" class="inside" style="width:150px;"/>
				</li>
				<li class="outside">蘇志&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="date" class="inside" style="width:150px;"/>
				</li>
				<li class="outside">王安石 <input type="date" class="inside" style="width:150px;"/>
				</li>
				<li class="outside">李尚銀 <input type="date" class="inside" style="width:150px;"/>
				</li>
			</ul>
		</li>
		<li class="shuttle_box_li" id="shuttle_box_mid">
			<button id="shuttle_box_toRight">>></button>
			<button id="shuttle_box_toLeft"><< </button>
		</li>
		<li class="shuttle_box_li シャトルボックス_near">
			<ul id="shuttle_box_right">
				<li>王偉 <input type="date" class="inside" style="width:150px;"/>
				</li>
			</ul>
		</li>
	</ul>
	</div>
<script src="js/ds.js"></script>
</本文>
</html>

dS.css

body、div、dl、dt、dd、ul、ol、li、h1、h2、h3、h4、h5、h6、pre、form、fieldset、input、p、blockquote、th、td {
    マージン:0; パディング:0;
    リストスタイル: なし;
}
本文{背景色: #e3e3e3;余白: 0px;}
#shuttle_box{幅:700px;ズーム:1;マージン:0px自動;}
#シャトルボックス:後{
    コンテンツ: "。";
    クリア: 両方;
    表示: ブロック;
    高さ: 0;
    オーバーフロー: 非表示;
    可視性: 非表示;
}
.shuttle_box_li{高さ: 540px;フロート: 左;}
.shuttle_box_near{width:300px;background-color:#ffffff;overflow-y: scroll;overflow-x:hidden;border-radius: 10px;border:5px solid #f4f4f4}
.shuttle_box_li_act{color:#ffffff !important;background-color: #009688 !important;border-bottom: 1px solid #ffffff;transition: all .01s;}
.shuttle_box_near::-webkit-scrollbar{/*全体的なスクロールバーのスタイル*/
    width: 6px; /*高さと幅はそれぞれ水平スクロールバーと垂直スクロールバーのサイズに対応します*/
    高さ: 1px;
}
.shuttle_box_near::-webkit-scrollbar-thumb{/*スクロールバー内の小さな四角形*/
    境界線の半径: 20px;
    背景色: rgba(0,0,0,0.5);
}
.shuttle_box_near::-webkit-scrollbar-track{/*スクロールバー内のトラック*/
    背景色: rgba(0,0,0,0.2);
    境界線の半径: 20px;
}
.shuttle_box_near li{
    パディング:8px;
    下部境界線: 1px 実線 #ffffff;
    背景色: #f4f4f4;
    カーソル: ポインタ;
    遷移: すべて .5 秒;
}
.shuttle_box_li_act:hover{不透明度: 0.7;遷移: すべて .01s;}
#shuttle_box_mid{幅:80px;テキスト配置: center;}
#shuttle_box_mid ボタン{
    幅: 50px;
    高さ:30px;
    表示: ブロック;
    マージン:20px 自動;
    行の高さ: 30px;
    色:白;
    カーソル: ポインタ;
    背景色: #009688;
    境界線の半径: 5px;
    遷移: すべて .5 秒;
    境界線:なし;
}
#shuttle_box_mid ボタン:hover{不透明度: 0.7;遷移: すべて .5s;}
#shuttle_box_toRight{マージントップ:225px !重要;}

ds.js

$(ドキュメント).ready(関数() {
        //シャトルボックスの左側を選択$("#shuttle_box_left").on('click', 'li', function () {
            $(this).hasClass('shuttle_box_li_act') の場合 {
                $(this).removeClass('shuttle_box_li_act');
            } それ以外 {
                $(this).addClass('shuttle_box_li_act');
            }
        });

        //クリックイベントで内部イベントを選択する $(".inside").bind('click', function(event1) {
            イベント1.stopPropagation();
        });

});


//シャトルボックスの右側を選択します$("#shuttle_box_right").on('click', 'li', function () {
    $(this).hasClass('shuttle_box_li_act') の場合 {
        $(this).removeClass('shuttle_box_li_act');
    } それ以外 {
        $(this).addClass('shuttle_box_li_act');
    }
});

//右に移動$("#shuttle_box_toRight").click(function () {
    ($("#shuttle_box_left .shuttle_box_li_act").length == 0) の場合は false を返します。

    $("#shuttle_box_left").find('.shuttle_box_li_act').appendTo("#shuttle_box_right");
    $("#shuttle_box_right li").removeClass('shuttle_box_li_act');

});

//左に移動$("#shuttle_box_toLeft").click(function () {
    ($("#shuttle_box_right .shuttle_box_li_act").length == 0) の場合は false を返します。

    $("#shuttle_box_right .shuttle_box_li_act").appendTo("#shuttle_box_left");
    $("#shuttle_box_left li").removeClass('shuttle_box_li_act');
});

運用結果

ここに画像の説明を挿入

JSネイティブの2列シャトル選択ボックスの実装例に関するこの記事はこれで終わりです。より関連性の高いJSの2列シャトル選択ボックスのコンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMを応援してください。

以下もご興味があるかもしれません:
  • 一般的なオリジナルJSセレクタの使用方法のまとめ
  • js で実装された全国的な州と市の二次リンクのドロップダウン選択メニューの完全な例
  • javascript フォルダ選択ダイアログボックス (Web)
  • JSは美しい時間選択ボックス効果を実現します
  • JSはアイコンまたはボタンをクリックしてファイル選択ボックスをポップアップする実装コード
  • jsは、省、市、地区の3レベルのリンク選択ボックスコード共有を実現します
  • ドロップダウンボックスの選択を実装する js
  • ドロップダウン選択ボックスの美化実装コードを選択 (js+css+picture)

<<:  一般的なDockerコマンドの詳細な説明

>>:  HTML の相対パスと絶対パスの違いの分析

推薦する

Linux で NFS のワンクリック展開を実装する方法

サーバー情報管理サーバー: m01 172.16.1.61サーバー: nfs01 172.16.1....

MySQL データベースのインデックス順序の詳細な説明

目次事件の原因解剖学ファイルの並べ替えファイルのソートが非常に遅いのですが、他に解決策はありますか?...

このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)

朝早くに電話で起こされました。あるプロジェクトのデータベースがダウンしていて起動できないとのことでし...

Vueカスタム指示により、ポップアップウィンドウのドラッグ4辺ストレッチと対角ストレッチ効果を実現

導入同社の最近の Vue フロントエンド プロジェクトの要件: ポップアップ ウィンドウのドラッグ、...

MySQL トランザクション分離レベルと MVCC の詳細な説明

目次トランザクション分離レベル同時トランザクション実行中に発生した問題SQL標準の4つの分離レベルM...

Windows 7 で Python 3.4 を使って MySQL データベースを使用する

Python 3.4でMySQLデータベースを使用する詳細なプロセスは次のとおりです。 Window...

Vue3 (V) HTTPライブラリaxiosの統合の詳細

目次1. axiosをインストールする2. アクシオスの使用1.ホームページでaxiosを参照する2...

レンダリング関数を使用して、拡張性の高いコンポーネントをカプセル化する

必要:バックグラウンド管理では、次のようなレイアウトでデータを表示する必要があることがよくあります。...

JS for ループで setTimeout を使用する 4 つのソリューション

目次概要解決策 1: クロージャ解決策2: 構造を分割する解決策3:解決策4: setTimeout...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...

Linux における「!」の知られざる使用法のまとめ

序文実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!...

MySQLカバーインデックスの利点

一般的な提案は、WHERE 条件のインデックスを作成することですが、これは実際には一方的です。インデ...

HTMLはマウスをホバーしたときにテキストを表示するためにtitle属性を使用します。

コードをコピーコードは次のとおりです。 <a href=# title="ここに表示...

ポートマッピング後に Docker コンテナが突然接続に失敗する問題のトラブルシューティング プロセス

1. 背景通常、外部サービスを提供する必要がある Docker コンテナの場合、起動時に -p コマ...

MySQLでテーブルを接続するいくつかの方法

MySQL テーブルでの接続方法は実は非常に簡単なので、ここではその特徴を簡単にリストします。テーブ...