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...解決方法

推薦する

Dockerを使用してMySQL 8.0をデプロイする方法の例

1. 公式サイトを参照してdockerをインストールする2. MySQLイメージをプルします(デフォ...

Tomcat サーバーの応答が遅い場合の解決策

1. 分析的思考1. 機械自身の理由を排除する2. サーバーパフォーマンス分析3. プロジェクト自体...

シンプルなログインページを実装するための HTML+jQuery

目次導入公開コード(バックエンドインターフェース)例 1: 最もシンプル (純粋な HTML)コード...

HTML フォーム コントロールの無効な属性の読み取り専用と無効の概要

HTML でフォームの送信を無効にする方法は 2 つあります。 1. コントロールタグにreadon...

VMware 仮想マシンの 3 つのネットワーク方式と原則 (概要)

1. ブリッジ: デフォルトでは VMnet0 が使用されます1. 原則:ブリッジは、それぞれ 2...

LambdaProbe を使用して Tomcat を監視する方法

導入: Lambda Probe (旧称 Tomcat Probe) は、Apache Tomcat...

MySQL 8.0 のタイムゾーン問題を解決する手順

ソフトウェアバージョンウィンドウズ: ウィンドウズ10 MySQL: mysql-8.0.16-wi...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...

Dockerを使用してSonarQubeをインストールする詳細なチュートリアル

目次1. イメージをプルする1.1 関連するイメージをプルして実行する1.1.1 関連する画像を取得...

Alibaba Cloudのセキュリティルール設定の詳細な説明

2日前、ダブル11ショッピングフェスティバルを利用して、Alibaba CloudでECS(サーバー...

Google ブラウザのラベルと入力間のスペースに関する小さな問題

最初にコード、次にテキストコードをコピーコードは次のとおりです。 <!DOCTYPE html...

Vue+Element+Springboot画像アップロードの実装例

最近、たまたま vue+springboot のフロントエンドとバックエンドの分離プロジェクトに触れ...

CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明

この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...

使用場所によって混乱しやすいXHTMLタグ

<br />jb51.net では、常に記事のセマンティクスを重視してきましたが、HTM...

Linuxファイアウォールiptablesの詳細な紹介、設定方法と事例

1.1 iptablesファイアウォールの概要Netfilter/Iptables (以下、Ipta...