Vue3.0 は虫眼鏡効果のケーススタディを実装します

Vue3.0 は虫眼鏡効果のケーススタディを実装します

達成される効果は、固定ズームが 2 倍になり、マウスが左側の画像領域に入るとマスク レイヤーが表示され、離れるとマスク レイヤーが非表示になることです。

CSS のカーソル

https://www.runoob.com/cssref/pr-class-cursor.html

マウスの次の効果を実現する方法: (子は父とまったく同じ) 絶対配置 + 上部と左を変更して動きを制御する

@vueuseには、ツールメソッドがあります: useMouseInElement

<テンプレート>
  <div ref="ターゲット">
    <h1>こんにちは世界</h1>
  </div>
</テンプレート>
 
<スクリプト>
'vue' から { ref } をインポートします
'@vueuse/core' から { useMouseInElement } をインポートします。
 
エクスポートデフォルト{
  設定() {
    定数ターゲット = ref(null)
 
    const { x, y, isOutside } = useMouseInElement(ターゲット)
 
    {x, y, isOutside} を返す
  }
}
</スクリプト>

これはVueUse公式サイトでの使い方です。最後に、 return { target }を忘れないようにしてください。冒頭でreturn targetをしていなかったため、x、y、isOutsideの値が0、0、falseとなり、値が変わっていませんでした。

マウスの位置とマスクの位置の関係:

 <div class="layer" :style="layerStyle"></div> //これはマスクレイヤーです setup(){ //これはマウスを実装するためのコードです const layerStyle = reactive({
      上: '0px'、
      左: '0px'
    })
    // 3つの値の変化を監視し、最初のパラメータを配列watch([elementX, elementY, isOutside], () => {で監視します
      // レイヤースタイル.left = 要素X.value / 2 + 'px'
      // レイヤースタイル.top = 要素Y.値 / 2 + 'px'
      上 = 要素Y.値 - 100 とします
      左 = 要素X.値 - 100
 
      // マスク要素に位置を割り当てる if (top < 0) top = 0
      (トップ > 200) トップ = 200
      (左 < 0)の場合、左 = 0
      (左 > 200)の場合、左 = 200
      レイヤースタイル.top = 上 + 'px'
      レイヤースタイル.left = 左 + 'px'
    })
    戻り値: { elementX, elementY, isOutside, target, layerStyle }
 
}

マスク領域は、左側の親ボックスを超えることはできません。上記の 2 行のコードはコメントアウトされています。なぜ一緒に記述できないのでしょうか。後で判断を追加する必要がある場合、判断の後に px を追加すると、どこから始めればよいか分からなくなるからです。上記のように別々に記述すると、top と left は単なる値になります。計算が完了したら、単位を追加します。

増幅効果を実現する方法:

CSSスタイルにはbackground-size属性があります。最初のパラメータは幅、2番目のパラメータは高さを表します。画像を拡大することができます。

元のサイズは400*400なので、2倍にすると800*800になります

CSSスタイルのbackground-position-xとbackground-position-yは指定された領域を拡大することができる

background-positionについて: x,y 最初の値は水平位置、2番目の値は垂直位置です

右側の div にズーム効果を適用します。

 <div class="large" :style="{ backgroundImage:`url(${images[current]})`,...largeStyle }"></div> 

これは CSS コードです。参照できます:

 。大きい {
   位置: 絶対;
    上: 0;
    左: 412px;
    幅: 400ピクセル;
    高さ: 400px;
    ボックスの影: 0 0 10px rgba(0,0,0,0.1);
    背景繰り返し: 繰り返しなし;
    背景サイズ: 800px 800px;
    背景色: #f8f8f8;
 }

最後に:マウスが左のボックス領域から外れると、マスクは非表示になり、右側の拡大されたボックスも非表示になります。

useMouseInElementのisOutSideプロパティは、監視要素を超えているかどうかを検出できます。v-show="!isOutSide"を使用するだけです。

Vue3.0独自の虫眼鏡効果の事例紹介はこれで終了です。Vue3.0の虫眼鏡効果に関するより関連性の高いコンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue3 カプセル化された虫眼鏡コンポーネントのサンプルコード
  • Vue3 を使用して虫眼鏡効果を実現する方法の例
  • Vue3は画像拡大鏡効果を実現します
  • Vueは商品詳細ページの虫眼鏡機能を実装します
  • Vueはタブ切り替えの虫眼鏡効果を実装します
  • Vueはシンプルな虫眼鏡効果を実装します
  • Vue画像拡大鏡コンポーネントのカプセル化と使用方法の詳細な説明
  • Vueは虫眼鏡付きの検索ボックスを実装します
  • Vue3.0 手書き拡大鏡効果
  • Vue が虫眼鏡効果を実装
  • Vueベースの製品メイン画像拡大鏡ソリューションの詳細な説明
  • 手書きのVue拡大鏡効果
  • vue2.x ベースの電子商取引画像拡大プラグインの使用
  • Vueは製品の拡大鏡効果を実現します

<<:  CentOS 7 は Hadoop 2.10 の高可用性 (HA) をビルドします

>>:  Mybatis マッパー動的プロキシの原理の分析

推薦する

MySql 5.6.36 64 ビット グリーン バージョンのインストール グラフィック チュートリアル

MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...

Dockerイメージのローカル移行の実装

最近 Docker を勉強しているのですが、よく問題に遭遇します。Docker イメージをダウンロー...

uniapp プロジェクトをデスクトップ アプリケーションとしてパッケージ化する方法

Electronのインストール cnpm 電子をインストール -g electron-package...

MySQL イベント スケジューラに関するよくある話 (必読)

概要MySQL には独自のイベント スケジューラもあり、これは Linux の crontab ジョ...

Ubuntu の Docker で mysql5.6 をインストールする方法

1. mysql5.6をインストールする docker 実行 mysql:5.6すべてのアイテムのダ...

RGBカラーテーブルコレクション

RGBカラーテーブル色英語名RGB 16色雪255 250 250 #FFFAFAゴーストホワイト2...

jsを使用して動的な背景を実現する

この記事の例では、動的な背景を実現するためのjsの具体的なコードを参考までに共有しています。具体的な...

MySQLデータベースのパスワードを忘れた場合の解決策

先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...

HTMLチュートリアル、簡単に学べるHTML言語

1. <body background=画像ファイル名 bgcolor=color text=...

フレックスレイアウトの改行スペースでの align-content の使用

1. この記事で実装した効果図は以下のとおりです。レイアウトの右側に Flex レイアウトを使用し、...

複数の無関係なテーブルからデータをクエリし、MySQL でページングする方法

MySQL 複数の無関係なテーブルクエリデータとページング機能要件主キーと外部キーの関連付けがない ...

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒント

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒントbashに詳しい人なら、hi...

nginx高可用性クラスタの実装プロセス

この記事は主に、nginx 高可用性クラスタの実装プロセスを紹介します。この記事のサンプルコードは非...

VMware Workstation 14 Pro インストール Ubuntu 16.04 チュートリアル

この記事では、VMware Workstation14 ProにUbuntu 16.04をインストー...

Axios はリクエストをキャンセルし、重複リクエストを回避します

目次起源現状リクエストをキャンセル cancelTokenリクエスト方法の変更重複したリクエストを避...