uniAppエディタWeChatスライド問題について

uniAppエディタWeChatスライド問題について

ユニアプリアプレットはWeChatでも同様のドロップダウン問題を抱えることになる

解決策は、app.vueページのonLaunchメソッドにスライドダウンを禁止するメソッドを追加することです。

this.$nextTick(() => {
document.body.addEventListener("touchmove", this.addBodyTouchEvent, {
受動態: 偽
});
});

問題が解決した後、uniAppのエディターコンポーネントをスライドさせることはできません

回避策

データにこれら2つの値を追加します

スライド効果を手動で記述するための touchstart および touchend メソッドを追加します。

タッチスタート(e) {
this.previewScrollTop = e.touches[0].pageY;
},
タッチエンド(e) {
距離をe.changedTouches[0].pageY - this.previewScrollTopとします。
(Math.abs(距離) <= 10) の場合 {
false を返します。
}
//距離が短すぎる場合はスクロールしない let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0],
maxHeight = Math.max(0, dom.scrollHeight - dom.clientHeight), // 最大高さ範囲 tempData = this.scrollTop + (distance >= 0 ? -60 : 60); // 必要な高さデータを計算 if (tempData >= maxHeight) {
this.scrollTop = maxHeight;
DOM のスクロールトップを this.scrollTop に変更します。
} それ以外の場合 (tempData <= 0) {
this.scrollTop = 0;
DOM のスクロールトップを this.scrollTop に変更します。
} それ以外 {
this.scrollTop = tempData;
DOM のスクロールトップを this.scrollTop に変更します。
}
}

このときにスライディング効果が現れます。しかし、滑りがスムーズではありません。

アニメーション化されたトランジション効果を書きたかったのです。しかし。このスライドは、dom.scrollTop プロパティを使用して行われます。このプロパティは CSS プロパティに属していないため、CSS 遷移アニメーションは使用できません。

そこで js メソッドを書きました。

/**
* アニメーションはページ上の指定された位置まで垂直にスクロールします* @param { } dom 要素オブジェクト* @param { Number } currentY 現在の位置* @param { Number } targetY ターゲット位置*/
エクスポート関数 scrollAnimation(dom, currentY, targetY) {
// 移動距離を計算します let needScrollTop = targetY - currentY;
_currentY = currentY とします。
タイムアウトを設定する(() => {
// 呼び出しごとのスライディングフレームの数は毎回異なります。const dist = Math.ceil(needScrollTop / 10);
_currentY += 距離;
dom.scrollTo(_currentY, currentY);
// 移動が 10 ピクセル未満の場合は直接移動し、それ以外の場合はアニメーション効果を実現するために再帰的に呼び出します if (needScrollTop > 10 || needScrollTop < -10) {
scrollAnimation(dom、_currentY、targetY);
} それ以外 {
dom.scrollTo(_currentY, targetY);
}
}, 1);
}

想起

タッチエンド(e) {
距離をe.changedTouches[0].pageY - this.previewScrollTopとします。
(Math.abs(距離) <= 10) の場合 {
false を返します。
}
//距離が短すぎる場合はスクロールしない let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0],
maxHeight = Math.max(0, dom.scrollHeight - dom.clientHeight), // 最大高さ範囲 tempData = this.scrollTop + (distance >= 0 ? -60 : 60); // 必要な高さデータを計算 if (tempData >= maxHeight) {
this.scrollTop = maxHeight;
DOM のスクロールトップを this.scrollTop に変更します。
} それ以外の場合 (tempData <= 0) {
this.scrollTop = 0;
DOM のスクロールトップを this.scrollTop に変更します。
} それ以外 {
this.scrollTop = tempData;
scrollAnimation(dom, 0, this.scrollTop);
}
}

注記:

この質問は、もともと Transform: translateY( y ) プロパティを使用して記述することを意図しており、実際にそのように記述されました。

しかし、やってみると

dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0] とします。 

ここで選択されている要素は、赤いボックスの下の要素です。オフセットを実行すると、要素全体がオフセットされます。文書は完全には表示されませんが、その下に大きな空白スペースがあります。その時はスクリーンショットを撮っていませんでした。遭遇した落とし穴を記録します。

uniAppエディターWeChatスライド問題に関するこの記事はこれで終わりです。 uniAppエディターWeChatスライドに関するその他の関連コンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。 今後とも123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • uniapp アプレットでウォーターフォール フロー レイアウトを実装するためのアイデアとコード
  • Uniapp WeChatアプレット: キー障害の解決策
  • uniapp H5 https クロスドメイン リクエストの実装
  • uniappのグローバル変数実装の詳細な説明
  • Uniappは、スライドページコントロール要素の表示と非表示の効果を実現する小さなプログラムを開発しました。
  • Uniapp WeChatアプレットは1ページに複数のカウントダウンを実現します
  • Uniapp 電子商取引アプレットが注文の 30 分カウントダウンを実装
  • Uniappはスライド可能なタブを実装
  • uniappがインターフェースドメイン名を動的に取得する方法を分析する

<<:  JavaScriptにおけるPromiseの使い方と注意点について(推奨)

>>:  vue 要素 el-transfer にドラッグ機能を追加

推薦する

MySQL 5.7.17 winx64 のインストールと設定方法のグラフィックチュートリアル

Windows インストール mysql-5.7.17-winx64.zip メソッド レコード &...

Linux での crontab スケジュール実行コマンドの詳細な説明

LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | grep ...

ドロップダウンボックス選択コンポーネントを実装するためのネイティブ js

この記事の例では、ドロップダウンボックス選択コンポーネントを実装するためのjsの具体的なコードを参考...

超詳細なMySQL使用仕様の共有

最近、データベース関連の操作が多くなり、会社の既存の仕様はあまり包括的ではありません。インターネット...

リンクをクリックしたときに表示される点線のボックスを削除するいくつかの方法

削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...

Vue ページ スタック マネージャーの詳細

目次2. 試した方法2.1 キープアライブ2.2 ネストされたルートを持つ CSS 3. 機能説明4...

MySQLデータベースインデックスの詳細な紹介

目次マインドマップシンプルな理解インデックスモデルの進化二分探索木自己バランス型二分木BツリーB+ ...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

IE6では画像要素imgに余分な空白スペースがある

ページの DIV+CSS レイアウトを行う際、IE6 で画像要素 img の下に余分なスペースができ...

jsでシンプルなパズルゲームを実現する

この記事では、簡単なパズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な...

MYSQL クエリの効率を向上させる 10 の SQL ステートメント最適化テクニック

MySQL データベースの実行効率はプログラムの実行速度に大きな影響を与えます。データベースの効率的...

CentOS 7 で rpm パッケージを使用して MySQL 5.7.18 をインストールする

最近、MySQL を使っています。Linux での mysql-installation という記事...

MySQLのグローバルロックとテーブルロックに関する詳細な理解

序文ロックの範囲に応じて、MySQL のロックは、グローバル ロック、テーブル ロック、行ロックに大...

Docker コンテナのデプロイの試み - マルチコンテナ通信 (node+mongoDB+nginx)

その理由はモッカー プラットフォームを導入したかったので、友人の勧めで既成のプロジェクト api-m...

Vueの監視プロパティの詳細

目次1.watchは一般的なデータ(数値、文字列、ブール値)の変更を監視します。 1. 数値2. 文...