amyu8TweetPocketdivタグなどの枠内に画像を入れる時、縦横中央表示にして、かつ、枠のサイズより大きければ枠に収まるように画像の比率は変えずに小さくしたいということがあると思います。いうより、先日自分はそういう事態に遭遇しました。サイズの比率を保ったまま、枠内に収める方法ですが、いろいろ試行錯誤した結果、下記のようにするとうまくいくことが分かりました。}123456img{width:auto;height:auto;max-width:100%;max-height:100%;}widthとheightは普通、デフォルトがautoなので指定しなくていい場合が多いのですが、autoじゃないと動かないため指定しています。上記の記述だと、枠(この場合、imgタグの親要素)のサイズより大きければ、max-widthとmax-heightの指定により、それ以上のサイズを超えないようになるので、枠に収まってくれます。最初はてっきり、どちらも100%のサイズになってしまうのではないかと思ったのですが、どうやら大きい方にあわせて縮小されるようです。次に、縦横中央表示の方法ですが、横は簡単です。親要素に『text-align:center』を指定してやればいいだけです。問題は、縦の中央表示。調べてみると、:before擬似要素を使って下記のように書くと、縦横中央表示する方法があることが分かりました。middle;}before擬似要素をinline-blockとし、縦方向の揃えをmiddleとしています。画像のほうもmiddleとすることにより、どちらも縦中央表示になります。ちなみに、IE8には対応していませんが、画像をCSSのbackground-imageで指定し、background-sizeをcontainとすると、枠に収まるようになりますが、この場合、枠のサイズより小さければ画像が拡大して枠のサイズに合わせて表示するようになります(もちろん、そのほうがいいということもあると思います)。IE8対応しなくていいのであれば、フレックスボックスやtransformを使って縦中央表示できます。0);}下記にサンプルリンクを載せておきます。while(isプログラマ))のつづき。今回は確認ダイアログ版。Deferredの勉強のメモです。Deferredについて調べてみました。Deferredを使った確認ダイアログを作成することにしました。今回作るのは、標準のconfirmメソッドを使うと下記のようなものです。'http://www.google.co.jp/';}});つまり、確認ダイアログを表示して、『OK』を押せばYahoo!JAPANへ、『キャンセル』を押せばGoogleへ飛ぶという処理です(キャンセルなら何もしないのが普通じゃないかと思われそうですが、分かりやすいようにどちらも何かしらの動作をするようにします)。これだとダイアログのレイアウトを変更できないので、独自のダイアログを作成することに。Deferredで実現することにしました。試しに書いてみたコードが下記です。promiseオブジェクトを返すのが一般的らしい。promiseオブジェクトを返すのが一般的らしい。})});サンプル:ダイアログのテストようは、OKボタンを押した時にresolveメソッドを呼び、doneメソッドの引数に入れた関数を呼ぶ。キャンセルボタンを押した時にrejectメソッドを呼び、failメソッドの引数に入れた関数を呼ぶという処理をしています。Deferredを使う必要はないんですけどね。そもそもキャンセルボタンを押すことが何でreject(異常終了)なのかと突っ込まれそうです。Deferredを使う例としては間違っていると思います。$.Deferred』としているページが多々ありました。$.Deferred』とすればいいだろうと思ったのですが、結果はfalseになってしまいました。思って、jQueryのコードを見てみると、Deferredメソッド内で作成したオブジェクトをreturnしており、Deferred自身のインスタンスを生成しているわけではないようです。Documentation)。newを付けている解説ページが多いのだけど、なぜそうなったのだろうか・・・。ところで、今回作成したopenConfirmメソッドでは、promiseメソッドで取得したpromiseオブジェクトを返していますが、ここはDeferredオブジェクトをそのまま返しても結果は変わりません。promiseオブジェクトとの違いとしては、promiseオブジェクトにはresolveやrejectがありません。それだけの違いですが、一般的にpromiseオブジェクトを返すようにするそうです。この辺りは、書きページの『deferred図解』の『なぜわざわざpromiseを渡すのか』を参考にしてください。Deferredはいろいろ応用ができそうな機能です。複数のDeferredオブジェクトを使ってwhenメソッドを使うとか。自分自身よく分かってないところもあるので、もう少し勉強しようと思います。世界一のアニメーション企業の今まで語られなかったお金の話(ブクログレビュー)当サイトは以下のサービス、ツールによって運営されています。