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> タグの境界線スタイルがブラウザに表示されない問題の解決方法

推薦する

Jira リバース プロキシを実装するための nginx について

概要: nginx リバース プロキシ jira を構成し、https を実装します。Tomcat ...

Windows 上で Zookeeper サーバーを構築するチュートリアル

インストールと設定Apacheの公式ウェブサイトには多くのミラーダウンロードアドレスが用意されており...

mysql order by in の文字順序の詳細な説明 (推奨)

//MySQL ステートメント SELECT * FROM `MyTable` WHERE `id...

Vueでシングルサインオンを実装する方法のまとめ

最近プロジェクトが中断され、RageFrame の研究は一時的に終了しました。この記事では、シングル...

MySQL グラフィカル管理ツール Navicat のインストール手順

目次序文1. 全員にインストールパッケージを用意する2. Navicatをインストールし、Navic...

Vue 親子コンポーネントの相互値の転送と呼び出し

目次1. 親が子コンポーネントに値を渡す2. 子コンポーネントが親コンポーネントに値を渡す3. 子コ...

MySQLクエリキャッシュに関するヒント

目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...

HTML テーブル マークアップ チュートリアル (2): テーブル境界属性 BORDER

デフォルトでは、テーブルの境界線は 0 ですが、テーブルの境界線を設定できます。基本的な構文<...

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

Alibaba Cloud Server の詳細な展開 (グラフィック チュートリアル)

最近、Web 開発のフロントエンドとバックエンドの技術を学んだので、その後の管理を容易にするためにプ...

Docker を使用して pypi プライベート リポジトリを構築する方法

1. 建設1. htpasswd.txtファイルを準備するファイルには、パッケージを倉庫にアップロー...

MySQL学習データベース検索文DQL小百章

目次1. データの簡単な取得2. データの並べ替えと取得2.1. 基本構文2.2. ソート方向を指定...

ウェブページでグレーまたはブラックモードを実現するための CSS3 フィルターコード

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

MySQL 全文インデックスガイド

全文インデックスには特別なクエリ構文が必要です。全文検索はインデックスの有無にかかわらず実行できます...

pagodaを使用してionCube拡張機能をインストールする方法

1. まずパゴダを設置するインストール要件: Python バージョン: 2.6/2.7 (Pago...