XHTMLとCSSを使ってホームページを作成中の初心者です。
表の中のデータを中央揃えにするのですが、ある1つの列の文字だけは全て右揃えにしたいのです。
A-1 B-1 C-1
A-2 B-2 C-2
A-3 B-3 C-3
という表があったとすると、この中の「C-1、C-2、C-3」は右揃え、他の部分は中央揃えにしたいのです。
もし、表の中のデータ全てを中央揃えにするのであれば、ソース部分は
<table class="test">
<colgroup span="1" id="test-a"></colgroup>
<colgroup span="1" id="test-b"></colgroup>
<colgroup span="1" id="test-c"></colgroup>
<tbody>
<tr><td>A-1</td><td>B-1</td><td>C-1</td></tr>
<tr><td>A-2</td><td>B-2</td><td>C-2</td></tr>
<tr><td>A-3</td><td>B-3</td><td>C-3</td></tr>
</tbody>
</table>
のような感じで、CSS部分は
table.test td {text-align: center}
というようにすればよいかと思います。
また、個別に指定するのであれば、ソース部分は
<tbody>
<tr><td class="c">A-1</td><td class="c">B-1</td><td class="r">C-1</td></tr>
<tr><td class="c">A-2</td><td class="c">B-2</td><td class="r">C-2</td></tr>
<tr><td class="c">A-3</td><td class="c">B-3</td><td class="r">C-3</td></tr>
</tbody>
のような感じで、CSS部分は
td.c {text-align: center}
td.r {text-align: right}
でも良いかと思います。
ただ、データの量が多く、全てのセルに対して
<td class="c">
<td class="r">
等の指定をすることは非常に大変です。
列ごとに横幅の指定をするときなどはCSS部分で
colgroup#test-c {width: 20px}
等のようにすると思いますが、例えば、この
colgroup#test-c
等を利用してCの列は右揃え、他の列は中央揃えにする方法をご教示お願いします。
No.6ベストアンサー
- 回答日時:
なぜ、1つだけ右なのでしょう?他となぜちがうのか?と考えると、例えば、中央揃えは品番や色、右揃えは値段かな?と想像して、中央揃えは品番や色はtableのhead、<th>、値段はtableのdata<td>と考えると、マークアップは
css
.test *{width:5em;background:#ffcccc;}/*確認しやすいためのおまけ*/
.test th{font-weight:100;text-align:center;}
.test td{text-align:right;}
html
<table class="test">
<tbody>
<tr><th>A-1</th><th>B-1</th><td>C-1</td></tr>
<tr><th>A-2</th><th>B-2</th><td>C-2</td></tr>
<tr><th>A-3</th><th>B-3</th><td>C-3</td></tr>
</tbody>
</table>
のようになります。
<th>と<td>を使い分けることも考えたのですが、<th>は必ず太字になってしまい、
対処方法がわかりませんでした。
CSSで
th {font-weight: 100}
と指定してtdと同じ字体に変更可能なことを初めて知りました。
疑問がすっきりしました。
ありがとうございました。
No.7
- 回答日時:
方法にベストはないでしょう。
様々な条件からベターなものを決めるしかありません。・tdにいちいちclass名をつけるのは厄介
(これは悪い方法ではない。本来はclass="price"など意味のあるものを付ける)
その上で、「colgroup,colに対するスタイルを処理できるブラウザはほとんどない」という現状を考えると、colgroup,colは使えません。(colは構造化マークアップではないので、もともと使えない)
★表の最初の部分以外は手を付けないを最優先として対処を考えると
CSS2の隣接セレクタを使って指定するのが良いでしょう。その場合古いIE5,IE6は無視せざるを得ない。
そのかわり、IE7以降と限定することで、擬似要素、擬似クラスも使えるのでHTMLにはまったく手を付けないで、期待の表示をさせることもできる。サンプル参照
★対応ブラウザを多くしたいを最優先とするなら、CSS1でデザインすることになります。
そのためには、
<td class="name">ABCD</td><td class="data">EFG</td><td class="price">\1,200-</td>
とマークアップするのが良いでしょう。その場合、高機能なテキストエディタがあるとExcelなどから出力したCSVファイルから数回の置換作業でTABLEにできるでしょう。
★ちなみに、もっとも楽なのは、XMLからXSLTをつかってHTMLを出力させること。
[サンプル]IE7以降
★CSSはXHTMLでは本体に書くべきではないので別フィルにすること★
★_はタブに置換すること★
★The W3C Markup Validation Service ( http://validator.w3.org/#validate_by_input )
W3C CSS 検証サービス ( http://jigsaw.w3.org/css-validator/#validate_by_ … )
Another HTML-lint gateway ( http://openlab.ring.gr.jp/k16/htmllint/htmllint. … )
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
_<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951" />
_<meta http-equiv="Content-Style-Type" content="text/css" />
_<link rev="made" href="http://hoge.com" title="send a mail" />
_<link rel="START" href="../index.html" />
<style type="text/css">
<!--
table.price_table{
_border-collapse:collapse;
_border:solid 1px gray;
_text-align:center;
}
table.price_table th,
table.price_table td{
_border:solid 1px gray;
}
table.price_table th[abbr="品名"]{width:6em;}
table.price_table th[abbr="説明"]{width:20em;}
table.price_table th[abbr="価格"]{width:5em;}
table.price_table td+td{
_text-align:left;
_text-indent:1em;
}
table.price_table td+td+td{
_text-align:right;
_padding-right:0.5em;
}
table.price_table tr:first-child+tr+tr+tr+tr td,
table.price_table tr:first-child+tr+tr+tr+tr+tr+tr+tr+tr+tr td{
_border-top:2px red;
}
table.price_table tr+tr,
table.price_table tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr{
_background-color:rgb(220,220,220);
}
table.price_table tr+tr+tr,
table.price_table tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr{
_background-color:white;
}
-->
_</style>
</head>
<body>
_<h1>サンプル</h1>
_<table class="price_table" summary="テスト">
__<thead>
___<tr>
____<th abbr="品名">製品名</th><th abbr="説明">説明</th><th abbr="価格">価格</th>
___</tr>
__</thead>
__<tbody>
___<tr>
____<td>name</td><td>data</td><td>\1,000</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,200</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,500</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,600</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\2,000</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,000</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,200</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,500</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,600</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\2,000</td>
___</tr>
___<tr>
____<td>name</td><td>data</td><td>\1,000</td>
___</tr>
__</tbody>
_</table>
</body>
</html>
お忙しい中、何度もご回答いただき、ありがとうございました。
なにぶん私が初心者のため、よく意味がわからないところがあり、理解しきれませんでした。
中級程度まで上達した時点でORUKA1951様に回答いただいたことを試してみたいと思います。
No.5
- 回答日時:
#2のddが間違っていますからね・・・
----------------
col や colgroup を使った align や valign は、
ブラウザによって挙動が違うからCSSで統一できません。
ただ、基本的なCSSは、
他の全てが、center なら class="c" は不要でしょう。
少しは単純化出来ます。<tbody>も必要ですか?
<head>
<style type="text/css">
table{ text-align: center;}
td.r { text-align: right;}
</style>
</head>
<body>
<div>
<table>
<tr><td>A-1</td><td>B-1</td><td class="r">C-1</td></tr>
<tr><td>A-2</td><td>B-2</td><td class="r">C-2</td></tr>
<tr><td>A-3</td><td>B-3</td><td class="r">C-3</td></tr>
</table>
</div>
</body>
C列を<p>などでブロック化して、
table{ text-align: center;}
td p{ margin:0; padding:0; text-align: right;}
って方法もあるけど。
<table>
<tr><td>A-1</td><td>B-1</td><td><p>C-1</p></td></tr>
<tr><td>A-2</td><td>B-2</td><td><p>C-2</p></td></tr>
<tr><td>A-3</td><td>B-3</td><td><p>C-3</p></td></tr>
</table>
table.test td {text-align: center}
という指定だと、個別に
td.r {text-align: right}
等と指定しても無効だったので悩んでおりました。
table.test {text-align: center}
という指定により、個別に
td.r {text-align: right}
等と指定したものが有効になりました。
ありがとうございました。
No.4
- 回答日時:
<thead>を使っているのは、大きな表の場合に印刷すると各ページに項目が印刷されるからです。
大きな表の場合、次のようなCSSも加えておくと見やすくなります。
table.price_table tr+tr,
table.price_table tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr{
background-color:rgb(220,220,220);
}
table.price_table tr+tr+tr,
table.price_table tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr,
table.price_table tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr+tr{
background-color:white;
}
No.3
- 回答日時:
HTML4の仕様では、colgroupは構造化のはずなので、スタイルシートで様々に使えるはずですが、現時点でcorgroupに対してスタイルシートが有効なのは、background-colorやcolor位で、text-alignに対応しているブラウザはほとんどありません。
よって、IE6,7を無視すると下記のCSSで良いはずです。(一部HTMLを間違えていました。)
★タブインデントは_(全角)に置換してあります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css">
<!--
table.price_table{
_border-collapse:collapse;
_border:solid 1px gray;
_text-align:center;
}
table.price_table th,
table.price_table td{
_width:6em;
_border:solid 1px gray;
}
table.price_table td+td+td{
_text-align:right;
_padding-right:0.5em;
}
table.price_table td+td+td+td{
_text-align:center;
_padding:0;
}
-->
_</style>
</head>
<body>
_<h1>サンプル</h1>
_<table class="price_table" summary="テスト">
___<colgroup span="2">
___</colgroup>
__<thead>
___<tr>
____<th abbr="A">A</th><th abbr="B">B</th><th>価格</th>
___</tr>
__</thead>
__<tbody>
___<tr>
____<td>data</td><td>data</td><td>\1,000</td>
___</tr>
___<tr>
____<td>data</td><td>data</td><td>\1,200</td>
___</tr>
___<tr>
____<td>data</td><td>data</td><td>\1,500</td>
___</tr>
___<tr>
____<td>data</td><td>data</td><td>\1,600</td>
___</tr>
___<tr>
____<td>data</td><td>data</td><td>\2,000</td>
___</tr>
__</tbody>
_</table>
</body>
</html>
table.price_table td+td+td{}は、
隣接セレクタ ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
で、兄に最低2つのtdをもつtdを指定するセレクタです。(IE7以降対応)
table.price_table td+td+td+td{}はもし4番目の列を追加したときに、それにも適用されたらまずいので指定してあります。
No.2
- 回答日時:
間違い・・
<thead><tbody>の下位にcolgroupは置けない。またFirefoxではうまくいかないようだ
とりあえず
table.price_table dd+dd+dd{text-align:right;}
で逃げておいてください。
念のため
table.price_table dd+dd+dd+td{text-align:center;}
も、追加しておいてね。
ちょっと方策を考えてみる。
まあ、高機能テキストエディタで
<td>(.*?)</td>$ 置換→ <td class="price">\1</td>
が普通の方法かも。少なくとも私はそうしている。
class名は後でのことも考えると、ちゃんとした意味のあるものを付けましょう。
この回答への補足
CSS部分は
table.price_table{
border-collapse:collapse;
border:solid 1px gray;
text-align: center;
}
table.price_table th,table.price_table td{
width:6em;
border:solid 1px gray;
}
table.price_table dd+dd+dd {text-align: right;}
table.price_table dd+dd+dd+td {text-align: center;}
ということになるという意味でしょうか?
上記のように入力してみても全て中央揃いなのですが・・・。
No.1
- 回答日時:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd"><html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<meta name="author" content="ORUKA1951">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
<link rel="START" href="../index.html">
<style type="text/css">
<!--
table.price_table{
border-collapse:collapse;
border:solid 1px gray;
text-align:center;
}
table.price_table th,table.price_table td{
width:6em;
border:solid 1px gray;
}
table.price_table colgroup.price{
color:red;
text-align:right;
}
-->
</style>
</head>
<body>
<h1>サンプル</h1>
<table class="price_table" summary="テスト">
<thead>
<tr>
<th abbr="A">A</th><td>B</td><td>C</td>
</tr>
</thead>
</tbody>
<colgroup span="2">
</colgroup>
<colgroup span="1" class="price">
</colgroup>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<td>data</td><td>data</td><td>data</td>
</tr>
</tbody>
</table>
</body>
</html>
colgrpupを使わないときは
table_price_table td+td+td{text-align:right;}
でも良い。ただしIE6以前は不可・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Perl PERL 1 2022/04/26 14:15
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tableの要素(tr、td)に一...
-
TRタグの余白をcssで設定するには
-
【HTML】Tableの列と行の入れ替え
-
テーブルの行を折りたたみたい...
-
ホームページ 表の上の余白を...
-
tableにul,または,olを入れられ...
-
テーブルのセルに画像をピッタ...
-
HTMLのテーブルで桁をそろ...
-
EXCELからhtmlへの変換で罫線が...
-
CSSだけで<table>の<td>や<tr>...
-
テーブルの任意の列を非表示に...
-
テーブルの装飾
-
テーブルを挿入すると他のCSSと...
-
テーブルタグのセルの幅の一部...
-
HTML5で、テーブル内tdタグの高...
-
tableタグとformタグの組み合わせ
-
スタイルシート テーブル内の...
-
TABLEのセルの中の文字を行単位...
-
箇条書きリストのすぐ横に画像...
-
テーブルの一部分のセルだけに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルの行を折りたたみたい...
-
テーブルの任意の列を非表示に...
-
TRタグの余白をcssで設定するには
-
cssで、表示されるテキストによ...
-
tableにul,または,olを入れられ...
-
ホームページ 表の上の余白を...
-
テーブルのセルに画像をピッタ...
-
テーブルのヘッダとボディの幅...
-
中に<table></table>が使えるア...
-
テーブルの表示がずれます
-
テーブルの行の高さを指定する...
-
colspanを使うと正しく表示でき...
-
HTMLで文とテーブルの間が空く。
-
tableの要素(tr、td)に一...
-
テーブルタグのセルの幅の一部...
-
tableでcolspanを使うと次行以...
-
HTMLのテーブルで桁をそろ...
-
HTML <td></td>タグ セル内余...
-
スタイルシートで colspan=3と...
-
html・cssで日付をキレイに揃え...
おすすめ情報