Vue はカスタム「モーダル ポップアップ ウィンドウ」コンポーネントのサンプル コードを実装します

Vue はカスタム「モーダル ポップアップ ウィンドウ」コンポーネントのサンプル コードを実装します

序文

ダイアログ ボックスは非常に一般的なコンポーネントであり、さまざまな場所で使用されます。通常、組み込みのアラートを使用してダイアログ ボックスをポップアップできますが、設計された図の場合はどうでしょうか。そのため、ダイアログ ボックスを自分で作成する必要があります。詳細な実装プロセスを見てみましょう。

レンダリング

上記のスクリーンショットでは、赤い枠線は「テキスト、アイコン、または画像」が編集可能な部分であることを示しています。

サンプルコード

1. ポップアップコンポーネントquitDialog.vueコンポーネントを作成する

<テンプレート>
  <トランジショングループ名='フェード'>
    <!-- ポップアップウィンドウを終了-->
    <div class="quit_dialog"
         キー= "1"
         @click="isQuit = false"
         v-if="isQuit"
         @touchmove.prevent>
    </div>
    <div class="quit_box"
         v-show="isQuit"
         キー="2">
      <img :src="画像URL"
           :alt="img読み込みヒント">
           <div class="quit_title">{{title}}</div>
      <p>{{コンテンツ}}</p>
      <button class="quit_btn" @click="leftClick">{{btnText}}</button>
      <button class="quit_close" @click="rightClick">{{rightText}}</button>
    </div>
  </トランジショングループ>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  名前: 'ポップアップ'、
  データ () {
    戻る {
      isQuit: false、
      画像URL: ''、
      タイトル: ''、
      コンテンツ: ''、
      btnテキスト: ''、
      右テキスト: ''
    }
  },
  メソッド: {
    左クリック(){
      this.leftBtn()
      this.isQuit = false
    },
    右クリック(){
      this.rightBtn()
      this.isQuit = false
    }
  }
}
</スクリプト>
<style lang="scss" スコープ>
// ポップアップウィンドウを終了します。フェードイン、
.フェードアウトアクティブ{
  不透明度: 0;
}
.フェード-エンター-アクティブ、
.フェードアウトアクティブ{
  遷移: 不透明度 0.35 秒;
}
// グローバルポップアップ window.quit_dialog {
  背景: rgba(0,0,0,.5);
  位置: 固定;
  上: 0;
  左: 0;
  高さ: 100%;
  幅: 100%;
  zインデックス: 10000;
}
 
.quit_box {
  幅: 700ピクセル;
  背景: #fff;
  位置: 固定;
  上位: 50%;
  左: 50%;
  左マージン: -350px;
  上マージン: -190px;
  zインデックス: 10001;
  境界線の半径: 10px;
  テキスト配置: 中央;
  パディング: 50px;
  画像{
    幅: 80ピクセル;
  }
 .quit_title{
      色: #666;
      フォントサイズ: 28px;
      マージン: 45px 0px;
  }
  ボタン {
    境界線の半径: 32px;
    パディング:20px 0px;
    フォントサイズ: 26px;
    境界線の半径: 8px;
    幅: 214px;
  }
  .quit_btn{
    色: #03BA82;
    背景: #fff;
    境界線: 1px 実線 #03BA82;
    右マージン: 32px;
  }
  .quit_close {
    背景: 線形グラデーション(0度, #03BA82, #01D695);
    ボックスの影: 0px 3px 4px 0px rgba(1, 84, 58, 0.27);
    境界線: 1px 実線 #03BA82;
    色: #fff;
  }
}
</スタイル>

2. grabDialog.jsを作成する

'vue' から Vue をインポートします
'../components/QuitDialog/QuitDialog' から Grasp をインポートします。
 
const PopupBox = Vue.extend(Grasp)
 
Grasp.install = 関数 (データ) {
  インスタンス = 新しい PopupBox({
    データ
  }).$マウント()
 
  document.body.appendChild(インスタンス.$el)
 
  Vue.nextTick(() => {
    インスタンス.isQuit = true
    // isQuit はポップアップ コンポーネントの isQuit に対応し、可視性を制御するために使用されます})
}
 
デフォルトのGraspをエクスポート

3. グローバル main.js にインポートする

'vue' から Vue をインポートします
'./api/quitDialog' からポップアップをインポートします。
Vue.prototype.$popup = ポップアップ.インストール

4. ページを呼び出すには、関数を呼び出すだけです

メソッド: {
    つかみボタン(){
      これを$grasp({
        imgUrl: require('../../assets/home/quits.png'), // トップ画像。
        imgLoadTip: '画像を読み込んでいます...',
        内容: 「温かいヒント」
        タイトル: 「注意: この学習タスクは完了していません。終了することを確認しますか?」
        btnText: 「残酷な退場」、
        rightText: 「勉強を続ける」
        // 左クリックイベント leftBtn: () => {
          this.$store.dispatch('user/logout').then(() => {
            this.$signalr.LogoutPad()
            this.$signalr.SendMsg(2, 0, 'システムを終了')
            this.$router.push('/login')
          })
        },
        // 右クリックイベント rightBtn: () => {}
      })
    }
}

要約する

これで、Vue でカスタム「モーダル ポップアップ ウィンドウ」コンポーネントを実装する方法に関するこの記事は終了です。Vue でカスタム「モーダル ポップアップ ウィンドウ」コンポーネントに関する関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueカスタムグローバルポップアップコンポーネント操作

<<:  CSS3 タイムラインアニメーション

>>:  <td></td> タグの境界線スタイルがブラウザに表示されない問題の解決方法

推薦する

Puppeteer を使用して Linux (CentOS) で Web ページのスクリーンショット機能を実装する

Linux に puppeteer をインストールするときに、次の問題が発生する可能性があります。こ...

DIV 背景半透明テキスト非半透明スタイル

DIVの背景は半透明ですが、DIV内の文字は半透明ではありませんコードをコピーコードは次のとおりです...

Vueはel-tree遅延読み込みを使用して、追加、削除、変更、クエリ機能を実装します。

Vue のツリー表示については、プロジェクトが使用されています: エフェクト ダイアグラムがツリー...

Nginx ソースコードのコンパイルとインストールのプロセス記録

rpm パッケージのインストールは比較的簡単なので、ここでは説明しません。ほとんどのオープンソース ...

Tencent Cloud Server Centosにデータディスクをマウントする方法

まず、ハードディスクデバイスにデータディスクがあるかどうかを確認します # まずfdisk -lを実...

MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

目次導入説明書実際の経験まとめ導入MySQL は最も人気のあるオープンソース データベースとして、さ...

CSS リセットスタイルリセットの実装例

はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...

CentOS 8 システム FTP サーバーのインストールとパッシブ モードの設定の詳細なチュートリアル

目次1. 基本を理解する2. システム環境を確認する3. ftpコマンドをインストールする[オプショ...

MySQLインデックスマージの使い方

インデックスのマージは、MySQL が最下層で提供するインテリジェントなアルゴリズムです。インデック...

Mysql5.7 のグループ連結関数を使用するときにデータが切り捨てられる問題に対する完璧な解決策

一昨日、本番環境でGROUP_CONCAT関数を使用して選択したデータが切り捨てられ、最大長が102...

CSSブレンドモードとSVGを使用して、製品画像の色を動的に変更します。

数日前、Codepen で @Kyle Wetton が書いた、CSS ブレンディング モードと S...

Dockerコンテナ内でホストDocker操作を呼び出して実行する

まず、この投稿は Docker 初心者向けです。もちろん、ベテランであれば記事中の分割線以降の操作方...

フェッチネットワークリクエストのカプセル化例の詳細な説明

エクスポートデフォルト({ URL、 メソッド = 'GET'、 データ = nu...