この記事では、スクロール可能なポップアップウィンドウ効果を実現するための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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL explain クエリ命令情報の取得原理と例
>>: xshell を使用して VMware で Linux に接続する方法 (2 つの方法)
1.MySqlをダウンロードしてインストールする公式ウェブサイトからMySqlデータベースをダウンロ...
背景: MySQL では、レベルに制限がある場合、たとえば、ツリーの最大深度を事前に決定できる場合、...
vue3コンポーネントの通信モードは次のとおりです。小道具$放出$expose / 参照$属性vモデ...
1. インデックスの役割一般的なアプリケーション システムでは、読み取りと書き込みの比率は約 10:...
Nginx は C 言語で開発されており、Linux で実行することをお勧めします。もちろん、Win...
この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...
1. はじめにこの記事では、Docker を使用して Redis を探索する方法を説明します。 Do...
Ubuntu 18のインストール中に、USBディスクからUbuntuのインストールを開始すると、mm...
この記事の例では、Appleの電卓を実装するためのJSの具体的なコードを参考までに共有しています。具...
実践こそが真実をテストする唯一の方法です。この記事では、インデックスの全体的な使用法についてのみ説明...
目次tomcatをデプロイする1.ダウンロードして解凍する2. 設定ファイルを変更する移植プロジェク...
Docker 学習https://www.cnblogs.com/poloyy/p/15257059...
目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...
MySQL データベースに保存されるデータが徐々に増加すると、元のストレージ領域がいっぱいになり、M...
<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...