Vue はスクロール可能なポップアップウィンドウ効果を実装します

Vue はスクロール可能なポップアップウィンドウ効果を実装します

この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

これは最初の実装です

効果画像:

ポップアップウィンドウコード:

ポップアップ

<テンプレート lang="html">
    <div v-if="表示" class="modal-bg" @click="閉じるモーダル">
      <div class="modal_con">
        <div class="modal_content">
          <div class="modal-container">
            <div class="modal_main">
              <p class="modal-header">{{dataList.title}}</p>
              <div class="rules_text">
                <p
                  v-for="(item, index) in dataList.rules"
                  クラス="rules_txt"
                  :key="インデックス"
                >
                  {{ アイテム }}
                </p>
              </div>
          </div>
        </div>
          <div class="footer_rules">
            <div class="tips"></div>
              <div class="rules_button">
                <div class="button" @click="closeModal">
                  <p class="button_text">了解しました</p>
                </div>
              </div>
            </div>
        </div>
      </div>

    </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'ポップアップ'、
  小道具: {
    見せる: {
      タイプ: ブール値、
      デフォルト: false
    },
  },
  データ () {
    戻る {
      データリスト: {
        ルール:
          「1. これは最初のデータです、ああ...」
          「2. これは2番目のデータです、ああ...」
          「3. これは3番目のデータです、あぁ…」
          「4. これは 4 番目のデータです...」
        ]、
        褒美: [
          「1. 活動規則 第1条 データ データ データ データ」、
          「2. 活動規則 第2条 データデータデータ」
          「2. 活動規則 第3条 データデータデータ」
        ]

      }
    }
  },
  メソッド: {
    モーダルを閉じる() {
      this.$emit('closeModal')
    },
  }
}
</スクリプト>

<style lang="css" スコープ>
.modal_con {
  幅: 80%;
  高さ: 287px;
  背景: #ffffff;
  オーバーフロー: 非表示;
  マージン: 0 自動;

  位置: 固定;
  上位: 50%;
  左: 50%;
  変換: translate(-50%, -50%);
  境界線の半径: 8px;
}
.modal_content {
  高さ: 100%;
  背景色: #fff;
}
.modal-bg {
  幅: 100%;
  高さ: 100%;
  背景色: rgba(0, 0, 0, 0.6);
  位置: 固定;
  上: 0;
  左: 0;
  zインデックス: 999;
}
.modal-container {
  高さ: 78%;
  テキスト配置: 中央;
  ディスプレイ: フレックス;
  flex-direction: 列;
  overflow-y: スクロール;
  /* ios には次の属性が必要です*/
  -webkit-オーバーフロースクロール: タッチ;
}

.rules_txt {
  フォントサイズ: 15px;
  フォントファミリ: PingFangSC、PingFangSC-Regular;
  フォントの太さ: 400;
  テキスト配置: 両端揃え;
  色: #666666;
  パディング: 0 20px;
  上マージン: 8px;
  下マージン: 0;
}

.rules_txt:最後の子{
  パディング下部: 40px;
}
.modal-header {
  フォントサイズ: 17px;
  フォントファミリー: PingFang、PingFang-SC;
  フォントの太さ: 太字;
  テキスト配置: 中央;
  色: #333333;
  マージン: 0;
  パディング上部: 20px;
}
.報酬タイトル{
  フォントサイズ: 17px;
  フォントファミリー: PingFang、PingFang-SC;
  フォントの太さ: 太字;
  テキスト配置: 中央;
  色: #333333;
  パディング: 0;
  上マージン: 14px;
  下マージン: 6px;
}
.footer_rules {
  幅: 100%;
  高さ: 22%;
  位置: 絶対;
  下部: 0;
}
.ヒント {
  /* 幅: 100%;
  不透明度: 0.6;
  高さ: 49px;
  背景: linear-gradient(180deg, rgba(255, 255, 255, 0.5), #ffffff);
  テキスト配置: 中央;
  行の高さ: 49px;
  フォントサイズ: 18px; */
}
.rules_button {
  幅: 100%;
  背景: #ffffff;
  パディング下部: 20px;
  右下の境界線の半径: 8px;
  左下の境界線の半径: 8px;
}
。ボタン {
  幅: 90%;
  ディスプレイ: フレックス;
  コンテンツの中央揃え: 中央;
  コンテンツの位置を中央揃えにします。
  背景: 線形グラデーション(270度, #1283ff, #50a3ff);
  境界線の半径: 4px;
  テキスト配置: 中央;
  マージン: 0 自動;
}
.ボタンテキスト{
  フォントサイズ: 15px;
  フォントファミリー: PingFang、PingFang-SC;
  フォントの太さ: SC;
  色: #ffffff;
  ディスプレイ: フレックス;
  コンテンツの中央揃え: 中央;
  コンテンツの位置を中央揃えにします。
  マージン: 0;
  パディング: 12px 0;
}
.rules_con {
  パディング下部: 80px;
}
</スタイル>

Home.vue ページでポップアップ ウィンドウを使用します。

<!-- イベントルールのポップアップウィンドウ-->
 <テンプレート>
<div>
 <div @click="クリックポップアップ">
            <span>クリックするとポップアップウィンドウが開きます</span>
          </div>
 <ポップアップ
      v-show="isRulesShow"
      @closeModal="isRulesShow = false"
      :show="isRulesShow"
    >
    </ポップアップ>
</div>
</テンプレート>
<スクリプト>
'./Popup' から Popup をインポートします
エクスポートデフォルト{
名前:"ホーム",
コンポーネント:
 ポップアップ
},
データ () {
    戻る {
      isRulesShow: フラグ
      }
    },
    時計:
    isRulesShow (v) {
      もし(動詞){
        //main.js でメインページのスライドメソッドを無効にする
        this.noScroll()
      } それ以外 {
        //メインページはスライドできます this.canScroll()
      }
    },
  },
   方法:{
 //アクティビティルールポップアップウィンドウ clickPopup () {
      this.isRulesShow = true
    },
 }
}
</スクリプト>
   <style lang="scss" スコープ>
* {
  タッチアクション:パン-y;
}
</スタイル>

ポップアップウィンドウ内の本文が一緒にスクロールしてしまう問題を解決

main.js内

//ポップアップボックスはスライド禁止です Vue.prototype.noScroll = function () {
  var mo = 関数 (e) { e.preventDefault() }
  document.body.style.overflow = '隠し'
  document.addEventListener('touchmove', mo, false,{passive: false })// ページのスライドを無効にする}
 
//ポップアップボックスはスライドできます Vue.prototype.canScroll = function () {
  var mo = 関数 (e) {
    e.preventDefault()
  }
  document.body.style.overflow = ''// スクロールバーが表示されます document.removeEventListener('touchmove', mo, false,{passive: false })
}

ページを使用する場合:

//メインページのスライドを無効にする this.noScroll()
//メインページはスライドできます this.canScroll()

//スタイルも追加します:
* {
  タッチアクション:パン-y;
}

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

以下もご興味があるかもしれません:
  • Vueコンポーネントを使用してシンプルなポップアップ効果を実装する
  • vue.js ポップアップコンポーネントに関する知識ポイントのまとめ
  • 素晴らしい Vue ポップアップ コンポーネント
  • Vueポップアップメッセージコンポーネントの使い方
  • VUEは、自由にドラッグできるポップアップコンポーネントを実装しています。
  • Vueは、「詳細を表示」ボタンをクリックして詳細リストをポップアップウィンドウに表示する操作を実装します。
  • Vue のトーストポップアップコンポーネントの詳細な例
  • Vue でポップアップ コンポーネントを閉じるときに操作を破棄して非表示にする
  • Vueがポップアップしたら、携帯電話のリターンキーを押してポップアップ機能を閉じます(ページはジャンプしません)
  • VUEを使用して、テーブル内の文字数が5文字を超える場合はテキスト情報を非表示にし、マウスを動かすとすべての文字を表示します。

<<:  MySQL explain クエリ命令情報の取得原理と例

>>:  xshell を使用して VMware で Linux に接続する方法 (2 つの方法)

推薦する

jsを使って簡単な計算機を作る

この記事では、jsで簡単な計算機を作成する具体的なコードを参考までに共有します。具体的な内容は次のと...

nginx proxy_cache キャッシュ設定の詳細な説明

序文:私は仕事柄、オンラインライブストリーミングの分野に携わっており、ビデオの再生やダウンロードには...

HTML メタビューポート属性の説明

ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...

Docker が PostgreSQL を起動するときに複数のデータベースを作成するためのソリューション

1 はじめに「DockerでPostgreSQLを起動する方法といくつかの接続ツールのおすすめ」の記...

JavaScript データのフラット化の詳細な説明

目次フラット化とは何か再帰トストリング減らすアンダーコア_.平坦化_。連合_。違い要約するフラット化...

無効にするとフォームの入力が送信できない問題の解決方法

以前、追加と変更を一緒に記述したテストプログラムを書いたことがあります。変更が必要な場合は、フォーム...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...

DockerにMinIOをインストールするための詳細な手順

目次1. docker環境が正常かどうかを確認する2. miniIOイメージをダウンロードする3. ...

Dockerはブリッジを追加し、IPアドレスの範囲を設定します

バイナリ docker 19.03 バージョンがインストール後に docker0 ブリッジを自動的に...

PHP スケジュールバックアップ MySQL および mysqldump 構文パラメータの詳細

まず、MySQL バックアップ コマンド mysqldump の一般的な操作例をいくつか紹介します。...

antd+reactプロジェクトをviteに移行するためのソリューションの詳細な説明

Antd+react+webpackは、多くの場合、Reactテクノロジースタックに基づくフロントエ...

MySQL の悲観的ロックと楽観的ロックの理解と応用分析

この記事では、例を使用して MySQL の悲観的ロックと楽観的ロックについて説明します。ご参考までに...

Bash スクリプトでの配列メソッドの作成と使用の概要

Bashで配列を定義するbash スクリプトで新しい配列を作成する方法は 2 つあります。 1 つ目...

jsプロキシの原理の詳細な説明

目次プロキシモードとは何ですか?実例を紹介例を使ってプロキシモデルの定義を理解するプロキシとはget...

Linux サーバーのスクリプトを自動的にバックアップする方法 (mysql、添付ファイルのバックアップ)

1.backup.shスクリプトファイルを作成する #!/bin/sh ソースフォルダ=/データ ...