Vueは移動可能なフローティングボタンを実装します

Vueは移動可能なフローティングボタンを実装します

この記事の例では、どこにでも移動できるフローティングボタンを実現するためのVueの具体的なコードを共有しています。具体的な内容は次のとおりです。

1.htmlコード

<div
 class="コールバックフロート"
 @click="クリック時"
 @mousedown="下"
 @touchstart="下"
 @mousemove="移動"
 @touchmove="移動"
 @mouseup="終了"
 @touchend="終了"
 ref="fu"
 >
 <!-- <p @click="callback">戻る</p> -->
 <img @click="コールバック" src="@/assets/images/callbs.jpg" alt />
</div>

2. データで定義する

データ() {
 戻る {
  isLoading: false、
  flags: false, //コントロール使用位置: {
  x: 0,
  y: 0,
  },
  索引: "",
  ny: "",
  dx: "",
  dy: "",
  xPum: "",
  yPum: "",
 };
 },

3.jsコード

メソッド: {
 折り返し電話() {
  $router.go(-1);
 },
 リフレッシュ() {
  // ウィンドウの場所を再読み込みします。
  setTimeout((res) => {
  コンソールログ(res);
  this.isLoading = false;
  }, 1000);
 },
 下() {
  this.flags = true;
  var タッチ;
  if (イベント.タッチ) {
  タッチ = イベント.タッチ[0];
  } それ以外 {
  タッチ = イベント;
  }
  this.position.x = touch.clientX;
  this.position.y = touch.clientY;
  this.dx = this.$refs.fu.offsetLeft;
  this.dy = this.$refs.fu.offsetTop;
 },
 動く() {
  if (this.flags) {
  var タッチ;
  if (イベント.タッチ) {
   タッチ = イベント.タッチ[0];
  } それ以外 {
   タッチ = イベント;
  }
  this.nx = touch.clientX - this.position.x;
  this.ny = touch.clientY - this.position.y;
  this.xPum = this.dx + this.nx;
  this.yPum = this.dy + this.ny;
  let width = window.innerWidth - this.$refs.fu.offsetWidth; // 画面の幅からコントロールの幅を引いた値 let height = window.innerHeight - this.$refs.fu.offsetHeight; // 画面の高さからコントロールの高さを引いた値 this.xPum < 0 && (this.xPum = 0);
  this.yPum < 0 && (this.yPum = 0);
  this.xPum > 幅 && (this.xPum = 幅);
  this.yPum > 高さ && (this.yPum = 高さ);
  // if (this.xPum >= 0 && this.yPum >= 0 && this.xPum<= 幅 &&this.yPum<= 高さ) {
  this.$refs.fu.style.left = this.xPum + "px";
  this.$refs.fu.style.top = this.yPum + "px";
  // }
  //デフォルトでページがスライドしないようにする document.addEventListener(
   「タッチムーブ」、
   関数 () {
   イベントをデフォルトにしない();
   },
   間違い
  );
  }
 },
 //マウスが離されたときの関数 end() {
  this.flags = false;
 },
 クリック() {
  //ここではこれをサブコンポーネントとして使用しています。this.$emit("click");
 },
 },

4.スタイル

<スタイルスコープ>
.コールバックp{
 フォントサイズ: 16px;
 色: #fff;
 背景: rgba(56, 57, 58, 0.5);
 境界線の半径: 50%;
 テキスト配置: 中央;
 幅: 50px;
 高さ: 50px;
 行の高さ: 50px;
 フォントファミリー: PingFang SC;
 フォントの太さ: 600;
 ボックスシャドウ: 0 0 10px #fff;
}
.コールバック画像{
 表示: ブロック;
 幅: 50px;
 高さ: 50px;
 ボックスシャドウ: 0 0 10px rgb(133, 129, 129);
 境界線の半径: 50%;
 背景: #fff;
}
。折り返し電話 {
 位置: 固定;
 上: 40px;
 左: 20px;
 zインデックス: 99999;
}
.float {
 位置: 固定;
 右: 20px;
 上位: 60%
 タッチアクション: なし;
 テキスト配置: 中央;
 幅: 50px;
 高さ: 50px;
 境界線の半径: 24px;
 行の高さ: 48px;
 色: 白;
}
</スタイル>

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

以下もご興味があるかもしれません:
  • Vueはモバイル端末上でフローティングウィンドウ効果を実現します
  • Vue の一時停止されたドラッグ可能なフローティング ボタンのサンプル コード
  • Vue の element-ui テーブル サムネイル フローティング ズーム機能のサンプル コード
  • Vueはページの右上隅にフローティング/非表示のシステムメニューを実装します。
  • マウスがテキスト上を通過するとフローティングボックスを表示する効果を実現するVueサンプルコード
  • Vue.js マウスホバー画像変更機能
  • vue+jquery+lodashはスライド時にトップフローティング固定効果を実現します
  • VueはPCの側面にボールを浮かべるコードを実装する
  • Vue は超長テキストインターセプションとフローティングボックスプロンプトを実装します
  • Vueは浮遊ボール効果を実現します

<<:  Ubuntu Server のターミナルのウェルカム メッセージで広告を無効にする方法

>>:  エラー mysql テーブル 'performance_schema...解決方法

推薦する

XHTML 入門チュートリアル: テーブルタグの応用

<br />テーブルは XHTML では扱いにくいタグなので、このセクションで理解するだ...

Linux ソフトウェアのインストール場所を確認する簡単な方法

1. ソフトウェアのインストールパスを確認します。 Linuxソフトウェアをインストールできる場所は...

MySQL でレプリケーション フィルターを動的に変更する方法

MySQLはレプリケーションフィルターを動的に変更します今日遭遇した問題についてお話しします。今日は...

要素のel-tree複数選択ツリー(チェックボックス)親子ノードの関連付けが関連付けられていません

属性チェック-厳密公式ドキュメントでは、チェックボックスが表示されるときに親項目と子項目を互いに関連...

Youdaの新しいプチビューの実装

目次序文導入ライブ使いやすいルートスコープマウント要素の指定ライフサイクルコンポーネントグローバル状...

Vue を通じて QR コードスキャン機能を実装する

ヒントこのプラグインは https プロトコルでのみアクセスできます。http プロトコルはうまく機...

ZabbixはSNMPに基づいてLinuxホストを監視します

序文: Linux ホストは、エージェント プログラムをインストールする場合でも、SNMP を使用す...

easycomモードでUNI-APPコンポーネントを呼び出す際に習得する必要がある実践的なスキル

この記事は議論の出発点となることを目的としています。詳細なドキュメントと easycom の仕様につ...

Linux コマンドラインからファイルを削除する実用的な方法

rm コマンドrm コマンドは、ファイルを削除するときによく使用されるコマンドです。ファイルまたはデ...

VMware 仮想マシンでの Centos8 ブリッジの静的 IP 設定方法

1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

Xmeter APIインターフェーステストツールの使用状況の分析

XMeter API は、以下のサービスを含む、JMeter に基づくワンストップのオンライン イン...

CSS を使用してサブ要素に応じて異なるスタイルを記述する方法

達成すべき効果: 必要なもの1枚、2枚、3枚とスタイルが異なります。子要素の判定はjsで完結できます...

MySQL の lru リンク リストの簡単な分析

1. 従来のLRUリンクリストについて簡単に説明するLRU:最も最近使われなかったものLRU リンク...