WordPressのお問い合わせフォームプラグイン「Contact Form 7」を使っていると、「パソコンでは綺麗に表示されているのに、スマホで見ると送信ボタンが左にズレている」という現象に悩まされることがあります。
- text-align: center; を指定しても効かない
- 親要素の p タグをいじると他の項目まで崩れてしまう……。
そんな「泥沼」ハマってしまった方向けに、今回は「CSSで物理的にボタンを中央に配置する」という、最終手段にして確実な解決策をご紹介します。
原因:犯人は「読み込み中アイコン(スピナー)」
そもそも、なぜ送信ボタンは左にズレてしまうのでしょうか?
原因の多くは、送信ボタンの横に隠れている**ローディングアニメーション(スピナー)**です。
HTML上では以下のような記述になっています。
HTML
<span class="wpcf7-spinner"></span>
このスピナーは、送信中にクルクル回るアイコンを表示するためのものですが、これが「幅」を持っているため、「送信ボタン + スピナー」のセットで配置され、ボタン単体が左に追いやられてしまうのです。
解決策:スピナーを消して、計算式で中央に置く
親要素(<p>タグなど)のCSS干渉が激しい場合、親を修正するのは骨が折れます。
そこで今回は、以下の2ステップで解決します。
- スピナーを非表示にする(レイアウト崩れの元を断つ)
- ボタンの位置を計算式(calc)で指定する(親要素に関係なく中央に置く)
コピペ用CSSコード
以下のコードを「外観 > カスタマイズ > 追加CSS」に貼り付けてください。
※ 204px の部分は、ご自身のサイトのボタンの幅に合わせて書き換えてください。
CSS
/* 1. レイアウト崩れの原因になるスピナーを非表示にする */
.wpcf7-spinner {
display: none !important;
}
/* 2. スマホ画面(768px以下)限定の調整 */
@media screen and (max-width: 768px) {
/* 送信ボタン本体を直接指定 */
.wpcf7-form-control.wpcf7-submit.has-spinner {
margin: 0;
position: relative;
top: 0;
/* ここがポイント!計算式で強制的に中央へ */
/* calc((画面幅100% - ボタンの幅) ÷ 2) */
left: calc((100% - 204px) / 2);
}
}
解説:なぜこれで直るのか?
left: calc((100% - 204px) / 2); の意味
この記述は、CSSの calc 関数を使ってブラウザに計算をさせています。
100%: 画面(親要素)の横幅いっぱい204px: 送信ボタンの横幅(※ここが重要!)(100% - 204px): 画面幅からボタン幅を引いた「余白の合計」/ 2: 余白を2等分して、左側の余白として設定
これにより、Flexboxやtext-alignが効かない複雑なテーマ構造であっても、物理的に「左の余白」を正確に確保することで、ボタンをど真ん中に配置できます。
注意点:ボタンの幅を調べること
この方法を使う唯一の注意点は、「自分のサイトのボタン幅(px)」を正確に入力することです。
Google Chromeなどのブラウザで「検証ツール」を使い、送信ボタンの width が何pxになっているかを確認し、コード内の 204px の部分をその数値に書き換えてください。
まとめ
- 送信ボタンのズレは、横にあるスピナーが原因のことが多い。
- 親要素の修正が難しい場合は、スピナーを消してボタンを直接操作する。
calc関数を使えば、どんな環境でも強制的に中央揃えが可能。
「どうしてもCSSが効かない!」と諦めかけていた方は、ぜひこの「強制中央揃え」テクニックを試してみてください。


コメント