SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Ajax対応コントロールでJavaScriptレス アニメーションを実装する

AnimationExtenderコントロール(ASP.NET AJAX Control Toolkit)の利用方法を学習する


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

アニメーションを受けるコントロールを変更する方法(サンプル3)

 ここまでのアニメーションはすべてAnimationExtenderコントロールのTargetControlIDプロパティに設定されたコントロールに対して行われています。しかし、各アニメーションにAnimationTargetプロパティにコントロールIDを指定することで、指定されたコントロールに対してアニメーションを実行することが可能になります。

サンプル3概要

 ページ上にButtonコントロールとPanelコントロールを配置し、プロパティ設定はデフォルトの状態にします。このサンプルのフォームレイアウトもサンプル1と同じです。Buttonコントロールの上にマウスがある場合にPanelコントロールの色を紫に変更し、コントロールからマウスが離れると赤色に変更するためのコードは次のようになります。

default.aspx(一部)
<ajaxToolkit:AnimationExtender ID="AnimationExtender1" 
        runat="server" TargetControlID="Button1">
    <Animations>
        <OnHoverOver>
            <Color AnimationTarget="Panel1" Duration="1." 
                Fps="5" StartValue="#ffffff" EndValue="#800080" 
                Property="style" PropertyKey="backgroundColor" />
        </OnHoverOver>
        <OnHoverOut>
            <Color AnimationTarget="Panel1" Duration=".5" 
                Fps="30" StartValue="#800080" EndValue="#DC143C" 
                Property="style" PropertyKey="backgroundColor" />
        </OnHoverOut>
    </Animations>
</ajaxToolkit:AnimationExtender>

 実行時の画面は図17のようになります。OnHoverOverのイベントが発生している時は図18のようになり、OnHoverOutのイベントが発生している時には図19のようになります。

図17 サンプル3の実行時の画面
図17 サンプル3の実行時の画面
図18 サンプル3のOnHoverOverイベント時の画面
図18 サンプル3のOnHoverOverイベント時の画面
図19 サンプル3のOnHoverOutイベント時の画面
図19 サンプル3のOnHoverOutイベント時の画面

 AnimationTargetプロパティの注意点として、ASP.NETのコントロールIDを設定すべきではないという点です。AnimationTargetプロパティに設定するIDはClientIDプロパティを使用する必要があります。例えば、マスターページを使用しているページに対してAnimationTargetプロパティを設定する場合は[ctl00_ContentPlaceHolderID_コントロール名]というように設定します。ページ内に名前付コンテナを使用していない場合、ASP.NETのコントロールIDを直接入力することも可能です。

コントロールのFadeを調整する方法(サンプル4)

 アニメーションの動作の1つにコントロールのFade(はっきり表示もしくはぼんやり表示)を調整するFadeIn Animation、FadeOut Animationがあります。

サンプル4概要

 ページ上にLabelコントロールとPanelコントロールを配置します。プロパティ設定はPanelのBackColorプロパティだけ任意の色に設定してください(図20)。

図20 サンプル4のフォームレイアウト画面
図20 サンプル4のフォームレイアウト画面

 Labelコントロールの上にマウスがある場合にPanelコントロールのFadeをはっきり表示し、コントロールからマウスが離れるとぼんやり表示させるコードは次のようになります。

default.aspx(一部)
<ajaxToolkit:AnimationExtender ID=" AnimationExtender1" 
        runat="server" TargetControlID="Label1">
    <Animations>
        <OnLoad>
            <OpacityAction AnimationTarget="Panel1" Opacity=".2" />
        </OnLoad>
        <OnHoverOver>
            <FadeIn AnimationTarget="Panel1" Duration=".25" Fps="20" 
                    MinimumOpacity=".2" MaximumOpacity="1." />
        </OnHoverOver>
        <OnHoverOut>
            <FadeOut AnimationTarget="Panel1" Duration=".25" Fps="20"
                    MinimumOpacity=".2" MaximumOpacity="1." />
        </OnHoverOut>
    </Animations>
</ajaxToolkit:AnimationExtender>

 実行時の画面は図21のようになります。OnHoverOverのイベントが発生している時は図22のようになり、OnHoverOutのイベントが発生している時には図23のようになります。

図21 サンプル4の実行時の画面
図21 サンプル4の実行時の画面
図22 サンプル4のOnHoverOverイベント時の画面
図22 サンプル4のOnHoverOverイベント時の画面
図23 サンプル4のOnHoverOutイベント時の画面
図23 サンプル4のOnHoverOutイベント時の画面

 Fadeの調整は最小、最大の半透明値を設定することで対象のコントロールのFadeが遷移します。FadeInとFadeOutを、OnHoverイベントやOnMouseイベントで使用する時には最小値と最大値の設定を同じ値にすることで、滑らかなFadeが実装されます(異なる場合は少し不自然なFadeになります)。Opacityプロパティの値は1.0が最大で、0.0が最小となっています。FadeIn Animation、FadeOut Animationの特徴として、タグ内に属性を指定しない場合はそれぞれ最小値が0.0に、最大値が1.0に設定されます。

次のページ
コントロールを拡大、縮小する方法とコントロールの利用可能、不可能を設定する方法(サンプル5)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/883 2007/04/13 13:08

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング