可変するボックスでブロック要素を縦中央に配置したい場合はjQueryを使おう

  • あとで読みたい人は…

@cappeeです。

ボックスを縦中央に配置する系のテクニックはたくさん記事がありますが、画面全体の縦中央か、サイズが固定されたボックスの中で縦中央にするものばかりです。

縦中央の問題点

今回私が実現したかったのは、左に文字数が前後するテキストがあり、左に画像置換したボタンをテキストの量に関わらず縦中央配置する、というものです。

画像置換の方法はいろいろありますが、今回のボタンは画像置換の関係でブロック要素になっています。

tate middle 可変するボックスでブロック要素を縦中央に配置したい場合はjQueryを使おう

よく記事で書かれているポジションやネガティブマージンを使う方法だとボックスのサイズを固定する必要があるのです。

あと、とても便利なCSSである table-cell を使うという選択肢もありますね。
ただIE8以降からの対応となるので、スマホサイトの制作であればこちらが大活躍するかと思います。

[意外と知らないCSS]スマホ制作に便利!display:table-cellを使った横並びのレイアウト

固定サイズでの縦中央配置については下記をご覧ください。

CSSでボックスを上下左右中央に配置する第3の方法

可変するボックスはjQueryで縦中央に配置

上記のようにボックスの高さが可変する場合は、jQueryで縦中央に配置することができます。

jQuery本体と「jQuery Center plugin」をダウンロードします。

あとは、ページに下記のようなコードを追加して、クラスやID名を指定してください。

<script>
 // 上下左右中央
 $("クラスやID").center();
 //左右だけ中央
 $("クラスやID").center({
 vertical: false
 });
 //上下だけ中央
 $("クラスやID").center({
 horizontal: false
 });
 </script>

ひとつ注意が必要なのは、ボタンのひとつ上の要素の高さから算出しているようなので、ボタンをさらにdivなどで囲っているとそこの高さから算出されてうまくいきません。

上記のような配置の場合、ボタンは「上下だけ中央」に指定して、左右はポジションの right を記述すれば実現できます。(可変するボックスには position:relative を指定してください)

jQueryの詳しい記述方法は下記をご覧ください。

jQueryでボックスを上下左右中央に簡単配置

Pocket
article clipper 可変するボックスでブロック要素を縦中央に配置したい場合はjQueryを使おう

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>