はいー、6月は結局一度も更新できずもうあっという間に7月…ご無沙汰更新となってしまいました。。
さて、今回はJavaScriptに関する投稿となります!この記事タイトルの通りなのですが…「Web上で3D Touchに対応」を実現させてくれるPressure.jsというスクリプトがあるようなのです。
このスクリプトを実際に動かしてサンプルを作ってみたく、今回更新しました。
コンテンツ一覧
Pressure.jsについての概要
3D Touchというのは、iPhoneの機能の一つですね。画面を強く押し込むことによって、また違った動作を得られるというものです。
※非対応端末の場合、画面を押している長さで判定できるようです
Pressure.jsを使用することにより、画面が押されている間0~1まで段階的に変化される数値を取得できるようになります。
その数値をアレコレして、ゴニョゴニョするわけですね。笑
またjQueryライクで使用することが出来たり、他にもオプションなどがあるようです。詳しくは公式ドキュメントを参照してください。
Pressure.js – Documentation
コードサンプル
まずは肝心のスクリプト本体を読み込んでおきましょう。
<script src="js/lib/pressure.min.js"></script>
基本的な使用方法のコード雛形は、次のような形になります。
Pressure.set( '#hoge', {
  start: function( event ){
    // this is called on force start
  },
  end: function(){
    // this is called on force end
  },
  startDeepPress: function( event ){
    // this is called on "force click" / "deep press", aka once the force is greater than 0.5
  },
  endDeepPress: function(){
    // this is called when the "force click" / "deep press" end
  },
  change: function( force, event ){
    // this is called every time there is a change in pressure
    // 'force' is a value ranging from 0 to 1
  },
  unsupported: function(){
    // NOTE: this is only called if the polyfill option is disabled!
    // this is called once there is a touch on the element and the device or browser does not support Force or 3D touch
  }
} );
ざっくりですが、次のような感じでしょうか。
| start | 画面が押されたときの処理。 | 
|---|---|
| end | 画面から離されたときの処理。 | 
| startDeepPress | 段階的に変化される数値が0.5を越えたときの処理。 | 
| endDeepPress | DeepPressが終わったときの処理。 | 
| change | 数値が変化されている間の処理(一番使う)。 | 
| unsupported | 非対応端末の場合の処理。 | 
肝となるのがchangeですね。
例えば、ある要素が押されている間、最大360°まで回転させたいとしましょう。次のようなコードになります。
Pressure.set( '#hoge', {
  change: function( force, event ){
    this.style.transform = 'rotate('+force * 360+'deg)';
  }
} );
今回は要素を拡大縮小・角丸調整・回転させるサンプルを作ってみました!
併せて確認してみてください。
この記事を書いている最中にも、何度か公式ドキュメントを見返していたのですが、なんかもっと色々自由を効かせることが出来そうです。。
近々またサンプルでも作ってみたいと思います!
近々…。。

  
  
  
コメントする