jQueryで劇場の座席選択と予約の効果を実現

jQueryで劇場の座席選択と予約の効果を実現

jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。

効果は以下のとおりです。

コードは次のとおりです。

<!DOCTYPE html>
<html>

<ヘッド>
    <メタ文字セット="utf-8">
    <meta name="viewport" content="width=デバイス幅; initial-scale=1.0">
    <title>jQuery 劇場座席選択および予約エフェクト コード</title>
    <meta name="keywords" content="jQuery,座席選択">

    <スタイル タイプ="text/css">
        .デモ{
            幅: 700ピクセル;
            マージン: 40px 自動 0 自動;
            最小高さ: 450px;
        }
        
        @media スクリーンと (最大幅: 360px) {
            .デモ{
                幅: 340ピクセル
            }
        }
        
        。フロント {
            幅: 300ピクセル;
            マージン: 5px 32px 45px 32px;
            背景色: #f0f0f0;
            色: #666;
            テキスト配置: 中央;
            パディング: 3px;
            境界線の半径: 5px;
        }
        
        .予約の詳細{
            フロート: 右;
            位置: 相対的;
            幅: 200ピクセル;
            高さ: 450px;
        }
        
        .予約詳細 h3 {
            マージン: 5px 5px 0 0;
            フォントサイズ: 16px;
        }
        
        .予約詳細 p {
            行の高さ: 26px;
            フォントサイズ: 16px;
            色: #999
        }
        
        .booking-details p span {
            色: #666
        }
        
        div.seatChartsセル{
            色: #182C4E;
            高さ: 25px;
            幅: 25px;
            行の高さ: 25px;
            マージン: 3px;
            フロート: 左;
            テキスト配置: 中央;
            アウトライン: なし;
            フォントサイズ: 13px;
        }
        
        div.seatCharts-シート {
            色: #fff;
            カーソル: ポインタ;
            -webkit-border-radius: 5px;
            -moz-border-radius: 5px;
            境界線の半径: 5px;
        }
        
        div.seatCharts行{
            高さ: 35px;
        }
        
        div.seatCharts-seat.available {
            背景色: #B9DEA0;
        }
        
        div.seatCharts-seat.focused {
            背景色: #76B474;
            境界線: なし;
        }
        
        div.seatCharts-seat.selected {
            背景色: #E6CAC4;
        }
        
        div.seatCharts-seat.unavailable {
            背景色: #472B34;
            カーソル: 許可されていません。
        }
        
        div.seatChartsコンテナ{
            右境界線: 1px 点線 #adadad;
            幅: 400ピクセル;
            パディング: 20px;
            フロート: 左;
        }
        
        div.seatCharts-凡例 {
            左パディング: 0px;
            位置: 絶対;
            下: 16px;
        }
        
        ul.seatCharts-凡例リスト {
            左パディング: 0px;
        }
        
        .seatCharts-凡例アイテム {
            フロート: 左;
            幅: 90ピクセル;
            上マージン: 10px;
            行の高さ: 2;
        }
        
        span.seatCharts-legendDescription {
            左マージン: 5px;
            行の高さ: 30px;
        }
        
        .チェックアウトボタン{
            表示: ブロック;
            幅: 80ピクセル;
            高さ: 24px;
            行の高さ: 20px;
            マージン: 10px 自動;
            境界線: 1px 実線 #999;
            フォントサイズ: 14px;
            カーソル: ポインタ
        }
        
        #選択された座席{
            最大高さ: 150px;
            オーバーフロー-y: 自動;
            オーバーフローx: なし;
            幅: 200ピクセル;
        }
        
        #選択された座席 li {
            フロート: 左;
            幅: 72px;
            高さ: 26px;
            行の高さ: 26px;
            境界線: 1px 実線 #d3d3d3;
            背景: #f7f7f7;
            マージン: 6px;
            フォントサイズ: 14px;
            フォントの太さ: 太字;
            テキスト配置: 中央
        }
    </スタイル>

</head>

<本文>


    <div id="メイン">

        <div class="demo">
            <div id="座席マップ">
                <div class="front">画面</div>
            </div>
            <div class="予約の詳細">
                <p>映画: <span>インターステラー</span></p>
                <p>時間: <span>11月14日 21:00</span></p>
                <p>座席数:</p>
                <ul id="選択された座席"></ul>
                <p>投票数: <span id="counter">0</span></p>
                <p>合計: <b>¥<span id="total">0</span></b></p>

                <button class="checkout-button">購入を確認</button>

                <div id="凡例"></div>
            </div>
            <div style="clear:both"></div>
        </div>

        <br />
    </div>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.12.1.min.js"></script>
    <script type="text/javascript" src="jquery.seat-charts.min.js"></script>
    <script type="text/javascript">
        var price = 70; /*チケット価格*/
        $(ドキュメント).ready(関数() {
            var $cart = $('#選択された座席'),
                /*座席エリア*/
                $counter = $('#counter')、
                /*投票数*/
                $total = $('#total'); /*合計金額*/

            var sc = $('#seat-map').seatCharts({
                map: [ /* 座席表 */
                    「ああああああ」、
                    「ああああああ」、
                    '__________'、
                    「ああああああ__」、
                    「ああああああ」、
                    「ああああああ」、
                    「ああああああ」、
                    「ああああああ」、
                    「ああああああ」、
                    「あああああ」
                ]、
                ネーミング:
                    上: 偽、
                    getLabel: 関数(文字、行、列) {
                        戻り列;
                    }
                },
                legend: { /*凡例を定義する*/
                    ノード: $('#legend'),
                    アイテム: [
                        ['a', 'available', '空席'],
                        ['a'、'入手不可'、'販売済み']
                    ]
                },
                click: function() { /*クリックイベント*/
                    if (this.status() == 'available') { /*オプションの座席*/
                        $('<li>' + (this.settings.row + 1) + 'row' + this.settings.label + 'seat</li>')
                            .attr('id', 'cart-item-' + this.settings.id)
                            .data('seatId', this.settings.id)
                            .appendTo($cart);

                        $counter.text(sc.find('selected').length + 1);
                        $total.text(合計(sc) + 価格を再計算します);

                        '選択された' を返します。
                    } else if (this.status() == 'selected') { /*選択済み*/
                        /*数量を更新*/
                        $counter.text(sc.find('selected').length - 1);
                        /*合計を更新*/
                        $total.text(合計(sc) - 価格を再計算します);

                        /*予約席を削除*/
                        $('#cart-item-' + this.settings.id).remove();
                        /*オプションシート*/
                        'available' を返します。
                    } else if (this.status() == 'unavailable') { /*販売済み*/
                        '利用不可' を返します。
                    } それ以外 {
                        this.style() を返します。
                    }
                }
            });
            /*販売済み席*/
            sc.get(['1_2', '4_4', '4_5', '6_6', '6_7', '8_5', '8_6', '8_7', '8_8', '10_1', '10_2']).status('利用不可');

        });
        /*合計金額を計算します*/
        関数 recalculateTotal(sc) {
            var 合計 = 0;
            sc.find('selected').each(function() {
                合計 += 価格;
            });

            合計を返します。
        }
   
</本文>

</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • jQuery をベースにオンラインでの座席選択と予約を実現 - Cinema
  • jQuery オンライン座席選択プラグイン 座席表 特殊効果 コード共有
  • jQuery によるオンライン座席選択 - 高速鉄道バージョン

<<:  MySQL 5.7.19 インストールディレクトリに my.ini ファイルを作成する方法

>>:  Nginx に React プロジェクトをデプロイする方法の例

推薦する

すべてのウェブ開発者が知っておくべき61のこと

通常、全員のスピーチを最初から最後まで読む必要があります。ただし、Stack Overflow には...

Vue でのルーティングガードの具体的な使用法

目次1. グローバルガード1.1 グローバルフロントガード1.2 グローバルポストルートガード1.3...

MySQL でメタデータ ロックがブロックされている場所を確認する方法

MySQL でメタデータ ロックがブロックされている場所を確認する方法手順: 1. セッション1の実...

きちんとしたHTMLマークアップを使用してページを構築します

インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...

Reactはいくつかの方法でパラメータを渡します

目次親コンポーネントと子コンポーネント間でパラメータを渡すルーティングパラメータステータスの改善コン...

JavaScriptはスタック構造の詳細なプロセスを実装する

目次1. スタック構造を理解する2. スタック構造のカプセル化3. 10進数を2進数に変換する1. ...

Web コンポーネントの内部イベント コールバックと問題点の分析

目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...

MySQL でテーブルデータをクリアする 2 つの方法とその違い

MySQL でデータを削除するには 2 つの方法があります。切り詰めは大まかな伐採の一種である削除は...

Dockerはdockerfileを使用してnode.jsアプリケーションを起動します

Dockerfileの作成expressによって自動的に作成されたディレクトリを例にとると、ディレク...

CSS3の新しいセレクタの例

構造(位置)擬似クラスセレクタ(CSS3) :first-child : 指定されたセレクタは、親要...

Nginx シグナル制御

Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

Link と @import の違いを詳しく見る

ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...

MySQLの高可用性アーキテクチャの詳細な説明

目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...

意外と知らないLinuxのSSHコマンドの使い方7選を徹底解説

システム管理者は複数のサーバーを同時に管理する場合があり、これらのサーバーは異なる場所に配置されてい...

静的ウェブサイトをRSSに変換するツール

<br /> この記事は allwebdesignresources.com から Ra...