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

推薦する

JavaScript ES 新機能ブロックスコープ

目次1. ブロックスコープとは何ですか? 2. ブロックスコープが必要なのはなぜですか? 3. 関数...

よくある MySQL 設計エラーをご存知ですか?

インターネットの発達により、バスを待ったり地下鉄に乗ったりする時間など、断片的な時間を活用して、いつ...

IntelliJ IDEA で Java を使用して MySQL データベースに接続する方法の詳細な説明

1. MySQLデータベースをダウンロードし、インストールして設定するダウンロードアドレス: htt...

nginx プロキシでの複数の 302 応答の解決策 (nginx Follow 302)

proxy_intercept_errors と recursive_error_pages を使...

myisamchk および mysqlcheck ツールを使用して破損した MySQL データベース ファイルを迅速に修復する方法

サーバーのデータベース ハード ディスク領域がいっぱいだったため、大量のデータの書き込みに失敗し、「...

HTML にオーディオファイルを挿入してブラウザで再生する場合の互換性の問題

HTML にオーディオ ファイルを挿入した後 (mp3 ファイルを再生した後) に発生したいくつかの...

JSはGMTとUTCのタイムゾーンを完全に理解しています

目次序文1. GMT GMTとはGMTの歴史2. UTC UTCとはUTC は次の 2 つの部分で構...

JavaScript スクリプトが実行されるタイミングの詳細な説明

JavaScript スクリプトは HTML 内のどこにでも埋め込むことができますが、いつ呼び出され...

vscodeで保存した後のHTML自動フォーマットの問題を解決する

vsCode のバージョンは最近更新され、現在のバージョン番号は 1.43 です。実際、vsCode...

MySQL のデータ型とフィールド属性の原理と使用法の詳細な説明

この記事では、MySQL のデータ型とフィールド属性について説明します。ご参考までに、詳細は以下の通...

Ubuntu20のtzselect設定時間失敗問題、Raspberry Piサーバ(推奨)

2 日前、Raspberry Pi サーバーを Ubuntu 20 にアップグレードしました。今日...

Linux を使用して時間指定ファイルが占有するディスク容量を計算する方法

スケジュールされたタスク エディターを開きます。Cent は、デフォルトで vim を使用して直接開...

MySQLの大規模テーブル最適化ソリューションについての簡単な説明

背景Alibaba Cloud RDS for MySQL(MySQL バージョン 5.7)データベ...

プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装

目次バイト機能使用環境プロジェクトを構築する構成vite.config.ts tsconfig.js...