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

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

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

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

HTML5

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

Q&A

解決済

3回答

1455閲覧

display: table-cell;をどこに入れるべきなのか

AmiI

総合スコア24

CSS3

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

HTML5

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

0グッド

0クリップ

投稿2020/03/04 04:45

css

1.flex_test-box { 2 padding: 10px; /* 余白指定 */ 3 display: flex; /* フレックスボックスにする */ 4} 5.flex_test-item { 6 padding: 10px; 7 color: #fff; /* 文字色 */ 8} 9 10.flex_test-item:nth-child(1) { 11 background-color: #0454a4; /* 背景色指定 */ 12 width: 50% 13} 14 15.flex_test-item:nth-child(2) { 16 background-color: #ebf0f5; /* 背景色指定 */ 17 color: #5A5F64; /* 文字色 */ 18 width: 50% 19}

html

1<div class="flex_test-box"> 2 <div class="flex_test-item"> 3 <b>あいうえお</b> 4 </div> 5 <div class="flex_test-item"> 6 あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお 7 </div> 8</div>

で、ボックスを作っています。
イメージ説明
今の状態だと左のボックスの文字が上に寄っているので、これを上下左右中央にしたいと思っております。(左右はすでに中央になっている)

https://www.granfairs.com/blog/staff/centering-by-css
このサイトを参考に、

css

1.inner{ 2 display: table-cell; 3 vertical-align: middle; 4}

このコードを入れて上下中央にしたいと思っているのですが、どこに入れればいいのでしょうか。
もしくは別のコードを入れたほうがいいのでしょうか。

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

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

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

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

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

guest

回答3

0

参考にしたリンク先 の最後に紹介してある display: flex; を使う方法が簡単でしょう。

css

1.flex_test-box { 2 padding: 10px; /* 余白指定 */ 3 display: flex; /* フレックスボックスにする */ 4} 5.flex_test-item { 6 padding: 10px; 7 color: #fff; /* 文字色 */ 8 width: 50%; 9 display: flex; 10 justify-content: center; /* 左右中央寄せ */ 11 align-items: center; /* 上下中央寄せ */ 12} 13 14.flex_test-item:nth-child(1) { 15 background-color: #0454a4; /* 背景色指定 */ 16} 17 18.flex_test-item:nth-child(2) { 19 background-color: #ebf0f5; /* 背景色指定 */ 20 color: #5A5F64; /* 文字色 */ 21}

Codepenサンプル

投稿2020/03/04 05:37

hatena19

総合スコア33715

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

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

AmiI

2020/03/04 06:13

左のボックスの問題は解決されたのですが、今度はなぜか右のボックス入れている文字が、途中で9つ中2つだけ完全な左寄せにならず、ちょっと右に行ってしまいました。なぜでしょうか。
hatena19

2020/03/04 07:42 編集

「途中で9つ中2つだけ」というのは何のことでしょうか。 質問のHTMLの右のボックスには1行のテキストがあるだけですが。
guest

0

ベストアンサー

作法通りにするなら、display: table-cell;は単体では使用せず、
親要素へのdisplay: table;の指定とセットで使うのが無難です。

(無難というのは、IE・Edge・Safariなどは「作法通り」でないとバグになることがよくあるためです。その場合、Chromeでは動いているのに何故..? とバグの発見に時間がかかります。)

[案1] .flex_test-boxにdisplay: table;を指定

.flex_test-box { display: table; } .flex_test-item { display: table-cell; text-align: center; /* 横方向の中央揃え */ vertical-align: middle; /* 縦方向の中央揃え */ }

.flex_test-itemはすべてdisplay: table-cell;を指定するのが妥当です。

[案2] .flex_test-itemにdisplay: flex;を指定

.flex_test-box { display: flex; } .flex_test-item:nth-child(1) { display: flex; justify-content: center; /* 横方向の中央揃え */ align-items: center; /* 縦方向の中央揃え */ }

上記、<b>あいうえお</b>というように、flex_test-itemに子要素を挟んでいるので
IEなどでも安全です。<b>がない場合、IEだと上下中央揃えができなかったりします。

[案3] .flex_test-itemにdisplay: table;、.innerにdisplay: table-cell;を指定

.flex_test-item:nth-child(1) { display: table; } .flex_test-item:nth-child(1) .inner { display: table-cell; text-align: center; /* 横方向の中央揃え */ vertical-align: middle; /* 縦方向の中央揃え */ }

案1か案2がオススメですが、display: flex;display: table; + display: table-cell;を両方使用したい場合は案3もあり得ると思います。

投稿2020/03/04 05:15

編集2020/03/05 00:06
y-arakaki

総合スコア19

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

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

0

こんな感じでどうでしょう?

投稿2020/03/04 04:53

yambejp

総合スコア114839

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

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

yambejp

2020/03/04 04:54

<style> .flex_test-box{ display:flex; height:200px; width:600px; } .flex_test-item{ border:1px solid #000000; display:grid; width:33%; justify-content: center;/*左右*/ align-items: center;/*上下*/ } </style> <div class="flex_test-box"> <div class="flex_test-item"> <b>あいうえお</b> </div> <div class="flex_test-item"> あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお </div> <div class="flex_test-item"> <b>かきくけこ</b> </div> </div>
AmiI

2020/03/04 05:17

すみません、それですと枠線がある上に、色も全く違うのですが…。 あと、もっと横長で左右のボックスが半分ずつになっているボックスを作りたいと思っております。なので、大きさは今のでよいと思っているのですが、これだと小さすぎます。
yambejp

2020/03/04 05:20 編集

単純に上下左右がセンタリングされることがわかるためのサンプルなんですが・・・ 全て書かないと理解いただけないのでしょうか? ・.flex_test-boxにdisplay:flexを設定 ・.flex_test-itemにdisplay:gridを設定 justify-content: centerと、align-items: centerを指定
AmiI

2020/03/04 05:35

とりあえず、CSS部分これでやってみたのですが、全くなりません。 それどころかなぜか左のボックスの文字色がグレーになったのですが…。 <style> .flex_test-box { padding: 10px; /* 余白指定 */ display: flex; /* フレックスボックスにする */ } .flex_test-item { padding: 10px; display:grid color: #fff; /* 文字色 */ justify-content: center;/*左右*/ align-items: center;/*上下*/ } .flex_test-item:nth-child(1) { background-color: #0454a4; /* 背景色指定 */ width: 50% } .flex_test-item:nth-child(2) { background-color: #ebf0f5; /* 背景色指定 */ text-align: left; color: #5A5F64; /* 文字色 */ width: 50% } </style>
AmiI

2020/03/04 05:37

とりあえず、文字色は(1)に「color: #fff;」を挿入して直しました。
yambejp

2020/03/04 05:53

こういうこと? <style> .flex_test-box { padding: 10px; display: flex; } .flex_test-item { display: grid; padding: 10px; color: #fff; justify-content: center; align-items: center } .flex_test-box div:nth-child(1).flex_test-item{ background-color: #0454a4; width: 50%; } .flex_test-box div:nth-child(2).flex_test-item{ background-color: #ebf0f5; color: #5A5F64; width: 50%; } </style> <div class="flex_test-box"> <div class="flex_test-item"> <b>あいうえお</b> </div> <div class="flex_test-item"> あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお </div> </div>
yambejp

2020/03/04 05:55

.flex_test-item:nth-child(n)は機能を誤解していると思うので よく仕様確認してくださいね 「flex_test-itemクラスのついたn番目」は指定できません 「n番目のHTML要素のうちのflex_test-itemクラスがついたもの」です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問