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

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

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

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

5回答

13740閲覧

CSSでテーブル内の数字を中寄せにしつつ、桁揃えのため右揃えにしたい

mitsuru793

総合スコア157

CSS3

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2015/09/17 00:12

編集2015/09/17 01:14

cssでテーブルのセル内の文字を中央寄せにしたいです。ただ中央寄せならできるのですが、数字の場合は右寄せにして桁を揃えたいです。私が書いたソースだと次の画像のとおりに表示されます。
※th(ヘッダー)の文字数が違うため、td要素は可変幅
※tdにwidthは指定したくない

コメントアウトのwidth: 30px;を解除すれば中央寄せになりますが、数字は左揃えになってしまいます。どうすればよいでしょうか?ご回答よろしくお願い致します。

イメージ説明

html

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style> 7 table { 8 width: 500px; 9 } 10 table, td { 11 border: 1px solid black; 12 } 13 #target td > span { 14 /* width: 30px; */ 15 margin: 0 auto; 16 display: block; 17 text-align: right; 18 } 19 </style> 20</head> 21<body> 22 <table id="target"> 23 <tr> 24 <td>hoo</td> 25 <td><span>12345</span></td> 26 </tr> 27 <tr> 28 <td>bar</td> 29 <td><span>123</span></td> 30 </tr> 31 </table> 32</body> 33</html>

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

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

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

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

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

guest

回答5

0

何らかの方法でspanの幅を統一しないと末尾は揃わないと思いますので
もし数字の桁の限界値が決まってるなら

CSS

1 #target td > span { 2 display: block; 3 margin: 0 auto; 4 width:3em; 5 text-align: right; 6 }

※これだと半角で6桁越えた数値があるとずれます。
プログラムで出力してるなら最大桁数にあわせてwidthを調整するとか?

またはaKusanoさんと同じですが、固定でなくても割合で右側を空ける等

CSS

1 #target td > span { 2 padding-right:20%; 3 display: block; 4 text-align: right; 5 }

テーブルのセルは常に20%以上幅に余裕があること前提になります。

投稿2015/09/17 02:31

hirohiro

総合スコア2068

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

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

mitsuru793

2015/09/17 03:07 編集

2つ目の方法だと中央寄せになりませんが、1つ目の方法はうまくいきました。数字の桁数+1をem単位で幅として指定すればいいのですね。完璧に中央とまではいかないですが、中央よりになっています。 これならjavascirpt側でも制御しやすいです。 ご回答頂き、ありがとうございました。
guest

0

ベストアンサー

CSSだけで、という解決策ではないですが、visibility:hiddenで「123」の前に「ゼロ2つ分の空白」を入れて幅を合わせてみる、のも1つの手段かなと思いました。

投稿2015/09/17 02:04

maisumakun

総合スコア145183

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

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

mitsuru793

2015/09/17 03:10

cssではありませんが、これが一番中央寄せになっていました!足りない桁数の2倍、&nbsp;を入れれば大丈夫でした。 ご回答頂き、ありがとうございました。
takito

2015/09/17 03:20

コメント失礼します プロポーショナルフォントだと右揃えがうまくいかないと思ったのですが、大丈夫でしょうか?その点が気になったので空白等で揃えるのはナシかなと思ったのですが・・・
mitsuru793

2015/09/17 23:39 編集

> takitoさん ご回答、ありがとうざいます。 プロポーショナルフォントというのを初めて知りました。一文字ごとに固有の文字幅が設定されているフォントなのですね。クライアント側がこれを使用し、空白と数字の文字幅が違う場合は、その分ずれてしまいますね。 これの対策にem指定は大丈夫なのかと思いましたが、emは1文字分を相対指定なのでどの文字が基準になるのかが不安要素です。
guest

0

厳密に中寄にはならないですが、こういう形ではいかがでしょうか。

CSS

1#target td > span { 2 display: inline-block; 3 text-align: right; 4 width: 50px; 5} 6table, td { 7 border: 1px solid black; 8 text-align: center; 9}

余分なところもセンタリングしますが、そこはご調整いただいて……

投稿2015/09/17 01:44

Lhankor_Mhy

総合スコア36074

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

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

Lhankor_Mhy

2015/09/17 01:47

あ、widthを設定したくないのか…… うーん……
mitsuru793

2015/09/17 02:47

ご回答頂き、ありがとうございます。 はい、widthを設定しなければヘッダーに何文字入ろうと対応できると思いましたので。
guest

0

width: 30px;
では、入っている数字の長さに対してwidthが不足してませんか?
試しに
width: 50px;
としてみたら、提示された例では数字が中央で右寄せ表示になりました

数字の入っている span に margin-right を付与するとかでもできますね

あとは左側tdの幅が影響を受けますのでご注意を

投稿2015/09/17 00:48

takito

総合スコア3111

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

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

mitsuru793

2015/09/17 01:17

ご回答頂き、ありがとうございます。 数値の幅が30pxじゃ足りなかったのですね。tdにwidthを指定したくない場合は、どうすればいいでしょうか? margin: 0 auto;を付与しても中央寄せにはならず、右揃えだけ有効でした。
takito

2015/09/17 01:50 編集

#target td > span{...} に margin-right: 30px; を追加するのはいかがでしょう?
mitsuru793

2015/09/17 02:45

やってみましたがダメでした。中央寄せの右揃えにはなりませんでした。
guest

0

数字が入っているtdにpadding-rightを大きめに取った上でtext-alignはrightにする、っていうのじゃダメでしょうか?

投稿2015/09/17 00:36

aKusano

総合スコア3763

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

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

mitsuru793

2015/09/17 01:09

今回、tdの要素は可変幅なのでpadding-rightに固定値を決めることが出来ないです。 ご提案頂き、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問