🔥 新しいプロジェクトのご紹介 t0ggles - 究極のプロジェクト管理ツール! 🔥
JavaScriptReactVueSvelteElement

Atropos React ドキュメント

ブラウザ互換性

Atroposは、以下の機能をサポートするブラウザと互換性があります。

インストール

NPMからAtroposをインストールできます。

npm i atropos

スタイル

まず、Atroposのスタイルシートを含める必要があります。

<link rel="stylesheet" href="path/to/atropos.css" />

バンドラー(webpackなど)を使用すると、JavaScriptから直接スタイルをインポートできます。

// main.js
import 'atropos/css'

SCSSプリプロセッサを使用している場合は、次の方法でSCSSからAtroposのスタイルをインポートできます。

// main.scss
@import 'atropos/scss'

Atroposには、さまざまな形式のスタイルシートが付属しています。以下のファイルが利用可能です。

  • atropos.css (atropos/cssとしてエクスポート) - すべてのAtroposスタイル
  • atropos.min.css (atropos/css/minとしてエクスポート) - ミニファイされたAtroposスタイル
  • atropos.scss (atropos/scssとしてエクスポート) - SCSS構文でのAtroposスタイル
  • atropos.less (atropos/lessとしてエクスポート) - LESS構文でのAtroposスタイル

コンポーネントの使用法

// import Atropos component
import Atropos from 'atropos/react';
export default function App () {
return (
<div id="app">
{/* Atropos */}
<Atropos className="my-atropos">
{/* ... */}
</Atropos>
</div>
)
}

AtroposのメインCSSスタイルに加えて、Atroposのサイズを設定するなど、カスタムスタイルを追加する必要がある場合があります。

.my-atropos {
width: 320px;
height: 160px;
}

コンポーネントプロパティ

名前デフォルト説明
componentstring'div'Atroposのメインコンポーネントタグ
eventsElHTMLElement | stringポインターイベントのターゲット。指定しない場合、イベントハンドラーはメインコンテナ(el)にアタッチされます。
activeOffsetnumber50アクティブ化された(ホバー時)メインコンテナのオフセット。基本的に、 translateZの値
alwaysActivebooleanfalseAtroposを常にアクティブにする
durationnumber300アクティブ化、離脱、および回転中のトランジション時間(ミリ秒単位)
rotatebooleantrueポインター移動時に(アクティブ化されたときに)コンテナを回転させるかどうかを定義します。
rotateTouchboolean | stringtrueタッチ移動時に(アクティブ化されたときに)コンテナを回転させるかどうかを定義します。rotateを有効にする必要があります。また、特別な値も受け入れます
  • scroll-y - 最初の垂直タッチ移動(垂直スクロール)でコンテナを回転させません。基本的には、ページの垂直スクロールをブロックしません。
  • scroll-x - 最初の水平タッチ移動(水平スクロール)でコンテナを回転させません。基本的には、ページの水平スクロールをブロックしません。
rotateXMaxnumber15X軸に沿った最大回転(度単位)
rotateYMaxnumber15Y軸に沿った最大回転(度単位)
rotateXInvertbooleanfalseX軸に沿った回転を反転します(度単位)
rotateYInvertbooleanfalseY軸に沿った回転を反転します(度単位)
stretchXnumber0この値で、X軸に沿ってAtroposコンテナを移動(トランスレート)します(パーセンテージ単位)。例えば、`50`の値は、コンテナの幅の+-50%移動します。複数のAtroposが同じ親の`eventsEl`コンテナを使用する場合のみ。
stretchYnumber0この値で、Y軸に沿ってAtroposコンテナを移動(トランスレート)します(パーセンテージ単位)。例えば、`50`の値は、コンテナの高さの+-50%移動します。複数のAtroposが同じ親の`eventsEl`コンテナを使用する場合のみ。
stretchZnumber0この値で、Z軸に沿ってAtroposコンテナを移動(トランスレート)します(パーセンテージ単位)。例えば、`50`の値は、コンテナの高さの+-50%移動します。複数のAtroposが同じ親の`eventsEl`コンテナを使用する場合のみ。
commonOriginbooleantrue同じ親を持つすべてのAtroposコンポーネントに対して、同じ点(通常はポインターの位置)に`transform-origin`を動的に設定します。複数のAtroposが同じ親の`eventsEl`コンテナを使用する場合のみ。
shadowbooleantrue影を有効にします
shadowOffsetnumber50影のオフセット。基本的に影要素のtranslateZ
shadowScalenumber1影のスケールファクター
highlightbooleantrueハイライトを有効にします
scaleClassNamestring追加のクラス名 atropos-scale 要素
rotateClassNamestring追加のクラス名 atropos-rotate 要素
innerClassNamestring追加のクラス名 atropos-inner 要素
onEnterfunctionコールバック関数Atroposがアクティブ化されたとき(ホバー時)に実行されます
onLeavefunctionコールバック関数Atroposが非アクティブ化されたとき(ポインターアウト時)に実行されます
onRotatefunction(x, y)コールバック関数回転時に実行されます。引数としてxyの回転角度を受け取ります
rootChildrenここに渡された要素は atropos ルート要素に追加されます
scaleChildrenここに渡された要素は atropos-scale 要素
rotateChildrenここに渡された要素は atropos-rotate ルート要素に追加されます

import Atropos from 'atropos/react';
export default function App () {
return (
<div id="app">
<Atropos
activeOffset={40}
shadowScale={1.05}
onEnter={() => console.log('Enter')}
onLeave={() => console.log('Leave')}
onRotate={(x, y) => console.log('Rotate', x, y)}
>
{/* ... */}
</Atropos>
</div>
)
}

制御要素のオフセット

Atroposは、要素のオフセット(視差効果)を制御するために、特別なdata-属性を使用します。

  • data-atropos-offset - 要素のオフセット/トランスレートをパーセンテージで制御します。

    • data-atropos-offset="5" は、要素が最大回転角度でサイズの5%移動することを意味します。
    • data-atropos-offset="-5" は、要素が最大回転角度でサイズの-5%移動することを意味します。

    基本的に、要素を近くに(シーンの手前に)表示したい場合は、この値を正にする必要があります。要素を遠くに(シーンの後ろに)表示したい場合は、この値を負にする必要があります。

  • data-atropos-opacity - 要素の不透明度を制御します。
    • data-atropos-opacity="0;1" - 要素の不透明度が0(初期状態)から1(最大回転角度)まで変化することを意味します。
    • data-atropos-opacity="0.1;0.8" - 要素の不透明度が0.1(初期状態)から0.8(最大回転角度)まで変化することを意味します。
    • data-atropos-opacity="1;0" - 要素の不透明度が1(初期状態)から0(最大回転角度)まで変化することを意味します。

<Atropos>
{/*
Element with negative offset will move in reverse direction,
making it appear behind the scene
*/}
<img src="image-bg.png" data-atropos-offset="-5" />
{/*
Element with no offset will not move
*/}
<img src="image-middle.png" data-atropos-offset="0" />
{/*
Element with positive offset will move in same direction,
making it appear in front of the scene
*/}
<img src="image-front.png" data-atropos-offset="5" />
</Atropos>

次のステップ

ご覧のとおり、AtroposをWebサイトまたはアプリに簡単に統合できます。以下は次のステップです。