酸素ビルダーリピーターのためのユニークなホバー効果

公開: 2022-04-10

このチュートリアルでは、OxygenBuilderRepeatersに表示されるコンテンツに独自のホバー効果を作成します。 Codropsの「DistortionHoverEffect」をモデルにしており、そのリソースのソースコードを使用すると、訪問者がリピーターセルにホバリングすると、この効果によってユーザー定義の画像に歪んだフェードが作成されます。

このチュートリアルには、OxygenBuilderのいくつかの優れた概念が組み込まれています。

  • 高度なリピーター技術
  • ACFフィールドグループとOxygenBuilderとの手動統合
  • 基本的なCSSグリッド
  • 動的属性
  • コードブロックの使用法と中間JS

さらに一歩進んで、これを100%動的な機能にします。つまり、設定して忘れてしまいます。 セルごとに特定の効果を初期化する必要はありません!

フォローアロング(ソースダウンロード):

注:これは概念実証であり、実稼働サイトで使用するには最適化が必要になる可能性があります。

他の2つのこと:

  • OxygenBuilderコースを開始します。 ここで詳細を確認し、順番待ちリストに参加できます。
  • これは私たちの素晴らしいFacebookグループでリクエストされたチュートリアルでした。 ぜひご参加ください!

エフェクトデモ:

demo_iso_effect_oxygen_builder

ステップ1:ACFフィールド

ACFを使用して、これを100%動的にし、エンドユーザーが簡単に編集できるようにします。 フィールドグループを作成し、ホバー画像とディスプレイスメント画像を追加します。 最初の画像は、投稿の注目画像になります。 ホバー画像は、訪問者がリピーターの投稿にカーソルを合わせたときに効果が薄れるものです。

ディスプレイスメント画像は、2つの画像間で独自のモーフ/フェードアニメーションを作成するために使用されます。 この例では、変位に次の画像を使用しています。

実際にはどの画像でも使用できますが、通常はテクスチャの優れた白黒画像が最適です。 この方法を試すのは簡単です!

等方性-2022-04-07-at-12-11-43
フィールドグループを作成し、投稿タイプに割り当てます。
等方性-2022-04-07-at-12-11-24
各画像の戻り形式は、画像のURLである必要があります。

新しい投稿を追加すると、フィールドグループと関連する画像は次のようになります。

等方性-2022-04-07-at-12-53-46
3つの画像のいずれかを簡単に交換できます。

ステップ2:エフェクトの構造を作成する

基本的に、Codropsの例からソースコードを少し変更してコピーしています。

<div class = "grid"> <!-これはリピーターです-> <div class = "grid__item grid__item--bg"> <!-これはリピーターのdivです-> <div class = " grid__item-img "data-displacement =" img / displacement / 8.jpg "data-intensity =" -0.65 "data-speedIn =" 1.2 "data-speedOut =" 1.2 "> <!-これは「画像ラッパー」ですdiv "-> <img src =" img / Img22.jpg "alt =" Image "/> <img src =" img / Img21.jpg "alt =" Image "/> </ div> <div class =" grid__item-content "> <!-これは"コンテンツラッパーdiv>-><spanclass="grid__item-meta">カリフォルニア</span><h2class="grid__item-title">ジャンプ</h2 > <h3 class ="grid__item-subtitle"><span>カリフォルニアの最後の空のジャンプスポット</span><a class="grid__item-link"href="#">詳細を確認</a></h3> </ div> </ div> </ div>
等方性-2022-04-07-at-13-12-26

Oxygen Builder要素を使用して、上記のHTML構造を単純に複製します。 上記のHTMLの例からクラスを追加することを忘れないでください。これから、CSSを追加し、JSはそれらを使用して特定の要素を識別します。 これらのクラスを変更する場合は、それに応じてCSSとJSを更新する必要があります。

私たちのリピーターは、CSSグリッドを使用して、多くの作業を行わずにすべてのセルを均等に配置しています。

等方性-2022-04-07-at-13-25-06

ステップ3:動的にする

動的になるように構成するものがいくつかあります。 まず、リピーターにWordPressPostタイプを照会させます。

次に、日付と投稿のタイトルを動的に設定します。

等方性-2022-04-07-at-13-17-17

次に、3つの画像を設定します。 これは物事が複雑になる可能性がある場所です。 画像1のURLを注目画像のURLに設定します。

等方性-2022-04-07-at-13-20-11

画像2のURLをACFで設定したホバー画像に設定します。 このチュートリアルでは、「動的データの挿入」ポップアップにACFフィールドが表示されませんでした(おそらくOxygen Builder 4.0 Beta 2のバグが原因です)。 これを経験したことがある場合は、簡単な回避策があります。

1-動的データを挿入します

2-PHP関数の戻り値を選択します

等方性-2022-04-07-at-13-20-47

3- get_field('fieldname')を使用してACFフィールドコンテンツを手動で挿入します

等方性-2022-04-07-at-13-21-30

最後に、エフェクトがモーフトランジションを作成するために使用するディストーションイメージを設定する必要があります。 これは、JSが読み取ってエフェクトに組み込むデータ属性としてHTMLに挿入されます。 上記のHTMLから、効果を変更するために編集できるいくつかの属性があることがわかります。

<div class = "grid__item-img" data-displacement = "img / displacement / 8.jpg" data-intensity = "-0.65" data-speedIn = "1.2" data-speedOut = "1.2"> <!-this 「画像ラッパーdiv」です->...</ div>

動的にする必要がある主なものはデータ変位です。これには、ACFを使用して投稿に設定された画像のURLが含まれます。 他の3つの属性をハードコーディングしましたが、以下に概説するのと同じ方法を使用して、これらのユーザーを編集可能にすることもできます。

画像ラッパー要素(2つの動的画像の周囲のdiv)に移動します。 [詳細設定]->[属性]をクリックして、以下を追加します。

等方性-2022-04-07-at-13-28-05

data-displacementの場合、コンテンツのdata +ボタンをクリックし、対応するACFフィールドを挿入することで、これを動的にします。

フロントエンドHTMLは次のようになり、JSはこのすべてのデータ(動的でACFを介してユーザーが編集可能)を使用して、WordPressにクールなディスプレイスメントホバー効果を作成します。

等方性-2022-04-07-at-13-46-39

ステップ4:CSS、ライブラリ、JSを追加する

次のCSSをユニバーサルCSSスタイルシートに追加します。 すべてをうまく機能させるには、追加のCSSスタイルを試す必要があるかもしれません。

.grid__item {overflow:hidden; 位置:相対; } .grid__item-content {z-index:5; } .grid__item-img {表示:ブロック; 高さ:100%; 幅:100%; } .grid__item-imgキャンバス{高さ:100%; 位置:絶対; top:0; z-index:1; } .grid__item-img img {高さ:100%; 表示ブロック; } / *これは、JSが機能しない場合のフォールバックです* / .grid__item-img img:nth-​​child(2){position:absolute; 上:0; 左:0; 不透明度:0; 遷移:不透明度0.3秒; } .grid__item:hover .grid__item-img img:nth-​​child(2){不透明度:1; } .js .grid__item-img img {表示:なし; }

最後に、必要なJSライブラリとコードをロードします(これはコードブロックで行いました)。

<script src = "https://cdn.statically.io/gh/robin-dela/hover-effect/15fc09f0/example/js/imagesloaded.pkgd.min.js"> </ script> <script src = "https ://cdnjs.cloudflare.com/ajax/libs/three.js/r83/three.js"> </ script> <script src =" https://cdnjs.cloudflare.com/ajax/libs/gsap/latest /TweenMax.min.js "> </ script> <script src =" https://cdn.statically.io/gh/robin-dela/hover-effect/15fc09f0/dist/hover-effect.umd.js"> </ script> <script> imagesLoaded(document.querySelectorAll('img')、()=> {document.body.classList.remove('loading');}); Array.from(document.querySelectorAll('。grid__item-img'))。forEach((el)=> {const imgs = Array.from(el.querySelectorAll('img')); new hoverEffect({parent:el、強度:el.dataset.intensity ||未定義、speedIn:el.dataset.speedin ||未定義、speedOut:el.dataset.speedout ||未定義、イージング:el.dataset.easing ||未定義、ホバー:el.dataset。ホバー||undefined、image1:imgs [0] .getAttribute('src')、image2:imgs [1] .getAttribute('src')、displacementImage:el.dataset.displacement});}); </ script>

この例では静的に使用しています(GitHubからImagesLoadedライブラリとHover Effectライブラリをプルしています)が、理想的には、ScriptsOrganizerやAdvancedScriptsなどのツールを使用してサイトでこれをホストする必要があります。

また、変位効果を生成するために機能する2つの基盤となるライブラリであるThree.JSとTweenMax.JSをロードします。

最後に、JSは次のことを行います。画像が読み込まれるタイミングを識別し、 .grid__item-imgを持つ要素にホバー効果を適用して、各投稿から関連する画像と変位画像を取得します。 完全に動的であり、OxygenBuilderリピーターによって返される投稿の数に関係なく機能します。

これらすべてを追加すると、エフェクトが機能するはずです。

これは、等方性Facebookグループのメンバーからリクエストされました。 こちらからご参加ください。

購読&共有
このコンテンツが気に入った場合は、WordPressニュース、Webサイトのインスピレーション、独占取引、興味深い記事の毎月のまとめを購読してください。
いつでも退会できます。 私たちはスパムを送信せず、あなたの電子メールを販売または共有することは決してありません。