Postal Search APIs & Solutions
Postal Search APIs & Solutions
  • チュートリアル
  • ダイジェスト
  • リファレンス
  • デモ
  • テスト
  • 構築キット
  • with Gadgets
  • with jQuery
  • with Microformats
  • よくある質問
  • お問い合わせ
  • 利用規約
  • フォーラム
  • ブログ
Design by
Studio7designs
opensourcetemplates.org
ホーム > Postal Search Ajax API with jQuery > fixedUI プラグイン

画面の下からフィードバックフォームをスライド表示して固定する

WEB ブラウザの画面下に指定したブロック要素を固定して表示する jQuery プラグインです。ページをスクロールしても、指定したブロック要素を常に WEB ブラウザの画面下に表示します。

また、固定したブロック要素は表示や非表示の指示ができます。表示を指示すると、画面下からブロック要素をスライドしながら表示します。非表示を指示すると、画面下にブロック要素をスライドしながら隠します。

同じ効果のある jQuery Catfish Advert Plugin という jQuery プラグインもあるのですが、配布していたサイトが休止?していて入手できなくなっています。今後、再開してメンテナンスするのかもかわかりません。それじゃということで jQuery Catfish Advert Plugin と同じ振る舞いをするプラグインを自ら作ってみたわけです。

ダウンロード

jquery.fixedUI.js (Uncompressed only)

デモ

次のボタンをクリックすると、IBM developerWorks のようなフィードバックのフォームを WEB ブラウザの画面下に表示したり隠したりします。また、フォームの送信ボタンをクリックしても隠れます。

この記事についてどう思われますか?
大変素晴らしい 良い まあまあ 改善の余地あり 不充分・不完全である
<script type="text/javascript">
//<![CDATA[

jQuery(function($) {

$('#show').click(function() {
  $.fixedUI('#box');
});

$('#hide').click(function() {
  $.unfixedUI();
});
  
$('#form').submit(function() {
  $.unfixedUI();
  return false;
});

}); //jQuery

//]]>
</script>

<p>
<input id="show" type="button" value="$.fixedUI" />
<input id="hide" type="button" value="$.unfixedUI" />
</p>

<div id="box" style="display:none;">
この記事についてどう思われますか?
<form id="form">
<input type="radio" name="pt" value="5" />大変素晴らしい
<input type="radio" name="pt" value="4" />良い
<input type="radio" name="pt" value="3" />まあまあ
<input type="radio" name="pt" value="2" />改善の余地あり
<input type="radio" name="pt" value="1" />不充分・不完全である<br />
<input type="submit" value="送信" />
</form>
</div>

仕組みや問題点など

WEB ブラウザの画面下へのブロック要素の固定は position: fixed スタイルを使って実現しています。IE 7.0 の標準モード、Firefox 2.0、Opera 9.2、Safari 3 (ともに Windows XP) は期待どおり動作します。

ただし、IE 6.0 は fixed スタイルをサポートしないため、次のように absolute スタイルを使って擬似的に fixed 相当を実現しています。ですので、目立たないように工夫はしていますが、ページをスクロールしたとき、どうしてもブロック要素が 1px くらいズレながらカクカクとしてしまいます。

また IE 7.0 は互換モードのみ fixed スタイルをサポートしていません。IE 6.0 と同じく absolute で擬似的に fixed を実現しようと試みていますが解決できていません。何かよいアイディアはありませんでしょうか。特に IE 6.0 と 7.0 で position: absolute としたときの bottom: 0 の振る舞いの違いに悩んでいます。

        container
          .css('position', 'absolute')
          .each(function() {
              this.setExpression('', 'this.style.filter=""'); // --(1)
              this.style.setExpression('width', // --(2)
                'document.documentElement.clientWidth || ' +
                'document.body.clientWidth'
              );
            });

        if (body.css('backgroundImage') == 'none') // --(3) 
          body.css('backgroundImage', 'url(#fixedUI)');
        body.css('backgroundAttachment', 'fixed'); // --(4)

(1) はウィンドウのリサイズやページのスクロールなど、ブロック要素の位置が変化したときに再描画するためのおまじないです。expression() > 仮想-position:fixed を参考にしました。

(2) はブロック要素を WEB ブラウザの画面横いっぱいに表示するためのものです。width: 100% スタイルでも同じ効果が期待できますが、BODY (HTML) のマージンがあるとその分だけ余白ができてしまうので、setExpression を使って常に再描画するようにしています。

(3)(4) は (1) の再描画のチラツキを防止するためのおまじないです。IEでボックスを固定配置する方法 (ウェブのあれこれ格納庫) を参考にしました。

関連情報

  • 郵便番号から住所を検索する #1
  • 郵便番号から住所を検索する #2
  • 送信フォームの入力形式を郵便番号に制限する
  • 住所の単語から郵便番号を検索する
  • 住所の単語から郵便番号を検索してその住所を表示する
  • 住所の単語から住所の候補をサジェスト表示する #1
  • 住所の単語から住所の候補をサジェスト表示する #2
  • 住所の単語から住所の候補をサジェスト表示する #3
  • 郵便番号から住所を検索する jQuery lookup プラグイン
  • 住所の単語から郵便番号を検索する jQuery coder プラグイン
  • 指定した処理の実行を後回しにする jQuery later プラグイン
fixedUI プラグイン
  • 画面の下からフィードバックフォームをスライド表示して固定する
jTemplates
  • jTemplates を使ってテンプレートから HTML の貼り付けコードを作成する
Cycle Plugin
  • cycle プラグインとフォートラベル API で旅行写真をシャッフル表示する
Flash Plugin
  • Flash Plugin を使って Youtube の動画を再生する
tablesorter
  • 指定した条件でテーブルの行を並び替える
  • 選択ボックスで指定した列でテーブルの行を並び替える
  • HTML 要素を含む列でテーブルの行を並び替える
  • 並び替えできるテーブルであることをリンクで伝える方法
  • 現在の位置をページ単位でなく行単位で表示する方法
Interface Elements
  • Interface Elements の Carousel とフォートラベル API で旅行写真の 3D ギャラリーを作る
  • Interface Elements の Imagebox とフォートラベル API で旅行写真のギャラリーを作る
  • Interface Elements の Slider で郵便番号を入力してみたが・・・
  • Interface Elements の Slider で旅行写真を拡大(または縮小)表示する
  • Interface Elements の Tooltips をいろいろな要素で使ってみた
  • Interface Elements の Scrollto でページ内リンクをスムースにする
  • Interface Elements の Carousel と YouTube Data API で動画のサムネイルを回転表示する
Selectors
  • セレクタでカンマを使って異なる要素の OR をとる
  • Web ブラウザに依存したコードを書き分ける jQuery Browser Selector プラグイン #1
  • Web ブラウザに依存したコードを書き分ける jQuery Browser Selector プラグイン #2
Events
  • 指定した処理をキューに追加して後でまとめて実行する jQuery Delay プラグイン
DOM Manipulation
  • ページから自ページのリンクを削除してユーザビリティを改善する
  • メソッドチェーンを途切ることなく HTML タグを組み立てる jQuery Tag プラグイン
  • 指定した URL からそのサイトのファビコンを表示する jQuery Favicon プラグイン
AJAX
  • コールバックのイベントハンドリングを容易にする jQuery JSONP プラグイン
Forms with Functions
  • 入力ボックスに郵便番号のマスクを適用する #1
  • 入力ボックスに郵便番号のマスクを適用する #2
  • 検索ボックスでカチカチとキーワード入力を再生する jQuery oogo プラグイン
Using with Other Libraries
  • jQuery のグローバルオブジェクトとオブジェクト書き換えの範囲
  • Prototype $$ メソッドを jQuery Selector で置き換えてみる
Books
  • Learning jQuery: Better Interaction Design and Web Development with Simple Javascript Techniques
  • jQuery Reference Guide: A Comprehensive Exploration of the Popular JavaScript Library
  • jQuery in Action
  • jQuery で作る Ajax アプリケーション
  • 実践! Ajax フレームワーク jQuery
Learning jQuery: Better Interaction Design and Web Development with Simple Javascript Techniques jQuery Reference Guide: A Comprehensive Exploration of the Popular JavaScript Library jQuery in Action jQueryで作る Ajaxアプリケーション 実践!Ajaxフレームワーク jQuery
Resources
  • jQuery のロゴやボタンがいろいろあります
Copyright© 2007 LEARNING RESOURCE LAB and the Postal Search APIs & Solutions team.