Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
jQuery UI逆引きリファレンス

jQuery UI逆引きリファレンス

リサイズ可能なパネルを生成するには?

2013年8月29日

指定の要素を(画像、テキストにかかわらず)マウスのドラッグ操作でリサイズできるようにするResizableウィジェットの基本的な使い方を説明する。

  • このエントリーをはてなブックマークに追加

jQuery UIとは?

 jQuery UIは、jQueryを拡張するライブラリ(プラグイン)の一種で、名前のとおり、ユーザー・インターフェイス(UI)に関わる機能を提供します。jQuery UIの導入方法や使い方、jQuery UIが提供する主要なコンポーネントについては、「jQuery UI逆引きリファレンス: jQuery UIを利用するには?」を参照してください。

 Resizableウィジェットを利用することで、指定の要素を(画像、テキストにかかわらず)マウスのドラッグ操作でリサイズできるようになります。

 さっそく、具体的な例を見てみましょう。以下は、あらかじめ用意した画像をResizableウィジェットでリサイズ可能にするサンプルです。

HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Resizableウィジェット</title>
<link type="text/css" rel="stylesheet"
  href="http://code.jquery.com/ui/1.10.3/themes/cupertino/jquery-ui.min.css" />
<script type="text/javascript"
  src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript"
  src="http://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function() {
  // resizableメソッドを呼び出す①
  $('.ham').resizable({
  });
});
</script>
</head>
<body>
<div>
  <img src="images/ham1.jpg" class="ham" />
  <img src="images/ham2.jpg" class="ham" />
  <img src="images/ham3.jpg" class="ham" />
</div>
</body>
</html>
リサイズ可能な画像を準備するコード(image.html)
マウスのドラッグ操作で画像を拡大/縮小
マウスのドラッグ操作で画像を拡大/縮小

 リサイズ対象の要素に対してresizableメソッドを呼び出し、拡大/縮小機能を適用するだけです(1)。

 テキスト・パネルの場合も同様です。

HTML
<script type="text/javascript">
  $(function() {
    $( "#resizable" ).resizable({
      autoHide: true
    });
  });
</script>
……中略……
<div id="resizable" class="ui-widget-content" style="overflow: hidden;">
  <p>jQuery UIは、jQueryを拡張するライブラリ(プラグイン)の一種で、名前のとおり、ユーザー・インターフェイス(UI)に関わる機能を提供します。<br />
jQuery UIの導入方法や使い方、jQuery UIが提供する主要なコンポーネントについては、「jQuery UI逆引きリファレンス: jQuery UIを利用するには?」を参照してください。
  </p>
  <p>Resizableウィジェットを利用することで、指定の要素を(画像であると、テキストであるとに関わらず)マウスのドラッグ操作でリサイズできるようになります。<br />
さっそく、具体的な例を見てみましょう。
  </p>
</div>
リサイズ可能なテキスト・パネルを準備するコード(text.html)
マウスのドラッグ操作でパネルを拡大/縮小
マウスのドラッグ操作でパネルを拡大/縮小
マウスのドラッグ操作でパネルを拡大/縮小

 ただし、そのままでは、「パネル・サイズがテキストの内容よりも小さくなった」場合に、テキストがパネルの外にあふれてしまいます。そこで、パネルのoverflowプロパティを「hidden」(=領域からあふれたコンテンツは隠す)としています。

Resizableウィジェットのパラメーター

 resizableメソッドには、ハッシュ形式で以下のようなパラメーターを指定できます。

(1)maxHeight/maxWidth、minHeight/minWidthパラメーター

 リサイズ可能な最大/最小の幅/高さを表します。指定のサイズを超えてリサイズすることはできません。minHeight/minWidthパラメーターのデフォルト値はいずれも「10」です(maxHeight/maxWidthパラメーターは無指定)。

JavaScript
<script type="text/javascript">
$(function() {
  $('.ham').resizable({
    maxHeight: 200,
    maxWidth: 200,
    minHeight: 100,
    minWidth: 100
  });
});
</script>
リサイズ可能なサイズ範囲を指定するコード(maxmin.html)

 containmentパラメーターを指定することで、特定の要素(セレクター)の範囲内でリサイズを制限することもできます。

HTML
<style type="text/css">
#content { width: 300px; height: 350px; border-style: solid; }
</style>
……中略……
<script type="text/javascript">
$(function() {
  $('.ham').resizable({
    containment: "#content"
  });
});
</script>
……中略……
<div id="content">
  <img src="images/ham1.jpg" class="ham" />
</div>
特定の要素範囲でリサイズを制限するコード(containment.html)
親要素の領域以上には拡大できない
親要素の領域以上には拡大できない
(2)エフェクト関連のパラメーター

 エフェクト関連のパラメーターとしては、以下のようなものがあります。

パラメーター名概要デフォルト値
animate エフェクトを有効にするか false
animateDuration エフェクトの所要時間(ミリ秒) slow(ゆっくり)
delay マウス操作からエフェクト動作開始までの遅延時間 0
animateEasing エフェクトによる変化の度合い swing
エフェクト関連のパラメーター

 以下に、具体的な例を示します。

JavaScript
<script type="text/javascript">
$(function() {
  $('.ham').resizable({
    animate: true,
    animateDuration: 1000,
    delay: 100,
    animateEasing: 'easeOutBounce'
  });
});
</script>
エフェクト関連のパラメーターを指定した例(effect.html)

 animateEasingパラメーターは、「最初はゆっくり、だんだん速く」「跳ねるように」など、変化の程度を表す情報です。指定できる値については、Easingも併せて参照してください。

変化の程度(「http://api.jqueryui.com/easings/」より引用)
(3)ghost/autoHide/helperパラメーター

 いずれも、リサイズする際の補助的な表示を制御するパラメーターです。まず、ghostパラメーターは、リサイズ時にリサイズ・イメージを半透明な状態でプレビュー表示します(デフォルトはfalse)。リサイズ後の状態を予測しやすくなりますので、特に画像のリサイズには便利です。

ghostパラメーターを有効にした場合

 autoHideパラメーターは、リサイズのためのハンドラー(右隅の)を自動で隠すかどうかを表します(デフォルトはfalse)。true指定で、要素にマウスポインタをあてたタイミングでのみハンドラーを表示します。

 そして、helperパラメーターは、リサイズ時に補助線(=ヘルパー)として表示する要素を表します。例えば、以下はリサイズ時に赤い点線枠を表示する例です。

HTML
<style type="text/css">
  .helper { border: 2px dotted Red; }
</style>
……中略……
<script type="text/javascript">
$(function() {
  $('.ham').resizable({
    autoHide: true,
    helper: "helper"
  });
});
</script>
autoHideとhelperを適用した例(helper.html)
リサイズ時に補助線を表示
(4)aspectRatioパラメーター

 リサイズ時の縦横比を表します。例えば、以下は幅:高さが3:2の比率を保ちながら拡大/縮小する例です。特に画像のリサイズ時によく利用します。

JavaScript
<script type="text/javascript">
$(function() {
  $('.ham').resizable({
    aspectRatio: 3 / 2
  });
});
</script>
縦横比を維持しながら拡大/縮小するコード(aspectRatio.html)
(5)gridパラメーター

 リサイズする際の単位を表します。例えば以下は、横100px、縦125pxの単位でリサイズする例です。もしも縦・横ともに20pxずつのような表現をするならば、単に「grid: 100」と指定します。

JavaScript
<script type="text/javascript">
$(function() {
  $('.ham').resizable({
    grid: [100, 125]
  });
});
</script>
リサイズ時の変更の単位を指定したコード(grid.html)

※以下では、本稿の前後を合わせて5回分(第5回~第9回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

jQuery UI逆引きリファレンス
5. Sortableウィジェットで並べ替え可能なリストを生成するには?

指定された要素配下の子要素群をドラッグ操作で並べ替え可能にするSortableウィジェットの基本的な使い方を説明する。

jQuery UI逆引きリファレンス
6. Buttonウィジェットでさまざまなボタンを生成するには?

<button>、<input type=”radio”>、<input type=”checkbox”>、<input type=”submit”>、<a>といった要素を、一様にボタンに整形できるButtonウィジェットの基本的な使い方を説明する。

jQuery UI逆引きリファレンス
7. 【現在、表示中】≫ リサイズ可能なパネルを生成するには?

指定の要素を(画像、テキストにかかわらず)マウスのドラッグ操作でリサイズできるようにするResizableウィジェットの基本的な使い方を説明する。

jQuery UI逆引きリファレンス
8. 展開可能なリッチ・メニューを生成するには?

サブメニューの動的な展開が可能なメニューを生成できるMenuウィジェットの基本的な使い方を説明する。

jQuery UI逆引きリファレンス
9. Accordionウィジェットでアコーディオン・パネルを生成するには?

タイトル部分をクリックすることでコンテンツが開閉するアコーディオン・パネルを実装できる「Accordionウィジェット」の基本的な使い方を説明する。

サイトからのお知らせ

Twitterでつぶやこう!