Eyecatch jQuery

Javascript,jQuery

jQueryで画面の縦・横幅を取得して、ボックス要素を中央に配置する方法

Javascriptのアラートウィンドウのようなものを自作したいとき、jQueryを使って画面(ブラウザ)の縦・横幅を取得し、表示させたいボックスを画面の中央に配置する法です。

ボックス要素を中央に配置する方法

イメージ

20150427_centering

画面の縦・横幅を取得

まずは画面(ブラウザ)の縦および横幅を取得する方法。
以前にもポストした、リアルタイムで横幅を取得する方法を拡張してみます。

解説

前回も書きましたが、jQuery ではブラウザの横幅は $(window).width(); で取得できますが、リロードのあとなど1回しか動きません。なので動的に取りたい場合は resize() を使用する事で取得が可能となります。

デモはコチラ
console.log(); しているので、FireBugなどで、リアルタイムに縦横幅を取得している様子を確認して下さい。

ボックスを配置するための考え方と計算式

横中央に配置するの計算式

考え方として横中央に配置ということは、例えば、横幅全体が 800px、ボックスが 300px だとすると、左端からの中央が 800px の半分で 400px、ボックスの半分が 150px ということで、400-150 すると 250px 左端から離せば中央にくるって事になります。

今の話を式にすると、(800/2)-(300/2) = 250 になり、整理すると、(800-300)/2 = 250px となり、公式は以下とまとめることができます。

(画面横幅 - ボックス幅)÷ 2

縦中央に配置するの計算式

同様に、縦中央に配置する公式は以下のようになります。

(画面縦幅 - ボックス縦幅)÷ 2

画面の縦横中央にボックスを配置

CSS

ボックスを縦:200px、横:300pxに設定。

JS

取得と配置のスクリプト。
ブラウザとボックスの縦・横幅を取得し、表示させたいボックスを画面中央に配置。

デモはコチラ

解説

リアルタイムの値を取得したいために、縦・横の2つに分かれていますが、ほぼほぼ同じ内容です。
スマホのブラウザなど、幅が変わらないものは統合しても少し単純なものにしても問題無いと思われます。

取得する値についてですが、width() で横幅を取得できると書きましたが、結果値は padding を考慮せずに取得します。
padding を含んだ値としたい場合は、innerWidth() を使用します。
縦も同様です。

以下を参照。

Dimensions | jQuery 1.9 日本語リファレンス | js STUDIO

-Javascript,jQuery
-, , , , ,