2024.07.19
ChatGPTにクラス名を付けてもらってみた
- コーディング
今回は、text-align
が効かない時の原因と考えられることを解説していきます!
目次
text-align
プロパティでは、ブロック要素または表セルボックスの水平方向の配置を決めることができます。
つまり、ブロック要素(表セルボックス)の中身をどのように配置したいのかを指定できるプロパティです。
参考:https://developer.mozilla.org/ja/docs/Web/CSS/text-align
以下は、上から順に
・left(初期値)
・center
・right
を指定している例です。
See the Pen text-align by spiqa design (@spiqa_design) on CodePen.
本来はこのように表示されるのですが、指定が間違っているとtext-align
が効かない場合があります。このtext-align
が効かない時の原因と考えられる事項をご説明いたします。
要素は、大きくブロック要素(ブロックレベル要素)とインライン要素の2つに分類できます。
ブロック要素とインライン要素については、以下の記事で解説していますので、参考にしてください!
今回指定するtext-align
は、最初にご説明したとおり、ブロック要素または表セルボックスに指定することができるものです。
以下の例では、どちらにもtext-align:right
を指定しています。
1つ目の例は、インライン要素であるspan
に指定しているので、右に寄っていません。
2つ目の例は、display:block
を指定してブロック要素にしているので、text-align
が効いて右に寄っています。
See the Pen text-align by spiqa design (@spiqa_design) on CodePen.
text-align
を指定しているにもかかわらず、うまくいかないという時は、インライン要素に指定しようとしていないか確認してみてください。
これまでご説明したとおりtext-align
はブロック要素に指定する必要があります。
今回、画像を真ん中寄せにしてみたいと思います。img
はインライン要素なので、上記の例と同じように、ブロック要素にします(display:block
を指定する)と思います。
See the Pen text-align by spiqa design (@spiqa_design) on CodePen.
img
をブロック要素にしているにもかかわらず、画像が真ん中寄せになりません。これは、text-align
がブロック要素(表セルボックス)の中身をどのように配置するかを決めるものだからです。
検証ツールで確認すると分かりますが、img
要素いっぱいに画像が表示されている状況になっています。
そのため、img
要素の中身をどのように配置するかの指定はできないのです。
img
をdiv
など他のブロック要素で囲んで、その囲んだブロック要素にtext-align
を指定する方法があります。img
が親要素の指定に従い配置されることになります。
See the Pen text-align by spiqa design (@spiqa_design) on CodePen.
こちらはtext-align
を使用した方法ではないのですが、実際によく使われる方法でとても便利なのでご紹介します。
まず、img
にdisplay:block
を指定してブロック要素にします。このままだと初期値通りに左寄せになっています。
真ん中寄せにしたい場合は、margin : 0 auto
(別途上下のmargin
を指定したい時は指定してください。必要なのは右と左の「auto
」の部分です)を、右寄せにしたい場合は、margin-left: auto
で実現できます。
See the Pen mdOBbLK by spiqa design (@spiqa_design) on CodePen.
margin
による配置を行う場合には、必ず要素がブロック要素である必要がありますので、きちんと確認してくださいね!
text-align
には、両端揃えの指定もできます。
文章が入る範囲がわかりやすいように、背景をピンク色にしています。
See the Pen zYoEOJo by spiqa design (@spiqa_design) on CodePen.
何も指定していない場合、左から文字が並んでいき、入らなくなったところで折り返されています。そのため、右側がガタガタになってしまっています。
ここにtext-align: justify
を指定することで、両端揃えになります。
文章が1行しかない場合を見てみたいと思います。
See the Pen xxRXKQd by spiqa design (@spiqa_design) on CodePen.
text-align: right
は問題なく効いているのに対し、text-align: justify
は左に寄ったままです。
この原因を説明するために、先程の例をもう一度見ていただきたいのですが、これは、最終行については両端揃えになっていません。
See the Pen zYoEOJo by spiqa design (@spiqa_design) on CodePen.
text-align: justify
は、テキストの場合、最終行を除いて、両端揃えになるのです。
最終行の配置方法を指定するにはtext-align-last
を使います。text-align-last: justify
を指定することで、1行でも(最終行も)両端揃えにすることができます。
ただし、こちらのサイトを見ていただくとわかるように、Safariではまだサポートされておりません。
https://developer.mozilla.org/ja/docs/Web/CSS/text-align-last
そのため、1行の文章のレイアウトには、letter-spacing
やpadding
などを用いて調整するのが良いかもしれません。
デザイン上、上下中央寄せにしたいときもありますよね。
おすすめの方法は、display: flex
を指定して、align-items: center
で中央寄せにする方法です。
ボックスの下に寄せたいときはalign-items: flex-end
を指定すればOKです。
さらに左右の配置を調整したいときは、justify-content
を指定してください。
See the Pen Untitled by spiqa design (@spiqa_design) on CodePen.
text-align
が効かない!と解決に時間をかけてしまったことがあったので、記事を書いてみました。
皆さんも対応ブラウザなどを調べつつ、より良い方法でコーディングを行ってみてください。
こちらもチェック
株式会社スピカデザイン
渋谷のWEB制作会社「スピカデザイン」の現役コーダー達が、WEB制作のヒントになるような情報をお届けします。
© 2020 spiqa design