質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

2回答

1557閲覧

要素の中のテキストを縦方向で中央に配置したい

keisuke3035

総合スコア21

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2019/08/09 17:00

編集2019/08/09 18:00

HTML,CSSの練習でコーディング模写をしています。

要素の中でのテキストの位置を、縦方向で中央揃えにしたいです。自分ではvertical-alignプロパティを使ってやってみましたが、上手くいきません。

以下に該当するコードを示します。

HTML

<div class="three-ball"> <ol> <li>1.テキストテキストテキスト</li> <li>2.テキストテキストテキスト</li> <li>3.テキストテキストテキスト</li> </ol> </div>

CSS

.three-ball > ol > li { display: inline-block; margin-left: 50px; border: solid; border-radius: 50%; height: 200px; width: 200px; vertical-align: middle; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/08/09 17:18

(質問文は編集できます)質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
keisuke3035

2019/08/09 18:01

すみません。気が付きませんでした。修正しました。
guest

回答2

0

ベストアンサー

こんな感じでしょうか。

CSS

1 .three-ball > ol > li { 2 display: inline-flex; /* CHANGE */ 3 margin-left: 50px; 4 border: solid; 5 border-radius: 50%; 6 height: 200px; 7 width: 200px; 8 /* vertical-align: middle; *//* DELETE */ 9 align-items: center; /* ADD */ 10 } 11```**動くサンプル:**[https://jsfiddle.net/52pxfn9s/](https://jsfiddle.net/52pxfn9s/)

投稿2019/08/09 18:12

編集2019/08/11 05:30
kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keisuke3035

2019/08/10 12:56

回答ありがとうございます!とても参考になりました。
think49

2019/08/11 04:13 編集

To: kei344 さん vertical-align: middle が無効状態(不要)ではありませんか。 align-items: center で縦方向の中央揃えは実装できているように見えます。
kei344

2019/08/11 05:28

To: think49さん そうですね、不要です。無効状態なので放置していましたが、「必須なので書いている」ように見えてもいけないので回答を修正しておきます。
guest

0

line-heightを200pxにするといいかも。

投稿2019/08/10 02:35

icegreen

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keisuke3035

2019/08/10 12:56 編集

回答ありがとうございます! 無事解決できました。お手数で申し訳ないですがなぜそうなるのかもおしえて頂けるとありがたいです。一番早く回答いただいたのでベストアンサーにさせていただきます。
icegreen

2019/08/10 13:02

基本的にline-heightは文字の上下の中央から、次の行の文字の中央までの高さを指しています。 もし、次の行がなければheightの高さになるようです。 もちろん、ここでの次の行とは、brのことです。 Liタグはブロック要素が基本なので、次のliタグは別の段落扱いになります。
think49

2019/08/11 01:07

To: keisuke3035 さん 文字列の幅が200pxを超過するように長い文字列を挿入すれば、挙動が分かると思います。
yoshinavi

2019/08/11 02:15

line-heightだと、1行のみなら良いですが、複数行になったらダメですね。 提示のコードでも私の環境では複数行になります。
icegreen

2019/08/11 03:51

では、方法の一つとして… olタグに対して、display:table; liタグに対して、display:table-cell; vertical-align: middle; というのはどうでしょう? たしかに1行の想定で回答してみましたが、複数行を考えるのであれば、こちらが有効かと思います。
think49

2019/08/11 04:06

To: icegreen さん それだと、自動改行による折り返しが働かないのでは…。
yoshinavi

2019/08/11 04:26

icegreenさんへ table-cellも良いかと思いますが、各要素のmargin調整がいる場合(この場合は左右)に、少し厄介になるかと思われます。
think49

2019/08/11 05:24

To: yoshinavi さん table は border-spacing でセル間のマージンを調整可能です。 marginと違って4方向別々の値を振る事はできませんが、今回のケースでは2方向でも支障はなさそうです。 ただ、親要素の幅が不足している時の挙動が質問者の期待通りではないように思います(質問文では、display: inline-block でしたので)。 https://jsfiddle.net/L245tbo1/show/ https://jsfiddle.net/L245tbo1/
yoshinavi

2019/08/11 05:46

think49さんへ ありがとうございます。 「border-spacing でセル間のマージンを調整可能」 すっかり抜けてました。勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問