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 の相対パスと絶対パスの違いの分析

推薦する

vue3 を使用したジグソーパズルゲームのリファクタリングの例

序文プロジェクト内のパズルゲーム(デジタル華容路とも呼ばれる)を再構築するのに 2 日かかりました。...

Vueはドラッグアンドドロップを使用して構造ツリーを作成します

この記事の例では、ドラッグアンドドロップを使用して構造ツリーを作成するVueの具体的なコードを共有し...

MySQLはテーブルデータを復元するためにfrmファイルとibdファイルを使用します

目次frm ファイルと ibd ファイルの紹介frm ファイル回復テーブル構造ibd ファイル回復テ...

js を使ってシンプルな虫眼鏡効果を実現

この記事の例では、参考までに簡単な虫眼鏡効果を実現するためのjsの具体的なコードを共有しています。具...

Tomcat が非同期サーブレットを実装する方法の詳細な説明

序文これまでの Tomcat シリーズの記事を通じて、私のブログを読んでいる学生は Tomcat に...

Linux で MySQL のスケジュールバックアップを実装する方法

実際のプロジェクトでは、緊急事態を防ぐためにデータベースを頻繁にバックアップする必要があります。しば...

よく知られているブラウザのDOCTYPEモード選択メカニズム

ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...

JavaScript オブジェクトを比較する 4 つの方法

目次序文参考比較手動比較浅い比較徹底比較要約する序文JavaScript でプリミティブ値を比較する...

Vue3デスクトップアプリケーションの構築方法

この記事では、Vite を使用して Vue 3 デスクトップ プロジェクトを開発する方法について説明...

innodb_flush_method 値メソッド (例の説明)

innodb_flush_methodのいくつかの典型的な値 fsync: InnoDB は fs...

HTML iframe 使用状況の概要の収集

Iframe 使用状況の詳細な分析<iframe frameborder=0 width=17...

Webpack での publicPath の使用法の詳細な説明

目次出力出力パス出力.publicPath webpack-dev-server の publicP...

MySQL スロークエリログの詳細な理解

目次スロークエリログとは何ですか?スロークエリを有効にする方法ログ分析ツール mysqldumpsh...

Vueプラグインの実装で発生した問題の概要

目次シーン紹介プラグインの実装問題1: 重複したヘッダーコンポーネント質問2: 別の実装アイデア質問...

リモート Linux システムでポートが開いているかどうかを確認する 3 つの方法

これは、Linux 管理者だけでなく、私たち全員にとって非常に重要なトピックです。つまり、IT イン...