アプリ版:「スタンプのみでお礼する」機能のリリースについて

たとえば、

<style type="text/css">

table {
width: 100%;
}

</style>
</head>
<body>
<table border=1 cellspacing=1 cellpadding=1>
<tr><td>a</td><td>b</td><td>c</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</table>

このようなcssとコードがある場合、
3列目のcと3の列の幅を10%にしたい場合、
どのようなコードを書けばいいですか?

td {
width: 10%;
}

こうすると、すべての列が10%になってしまいます。

指定した列のみのcssで幅を調整する方法を教えてください。
できれば直接テーブルのタグをいじるのではなく、スタイルシートの宣言部分で対応したいです。

A 回答 (5件)

対象セルにクラスをつけて指定するという方法はダメでしょうか?



<style>
td.column { width:10% }
</style>
<table border=1 cellspacing=1 cellpadding=1>
<tr><td>a</td><td>b</td><td class="column">c</td></tr>
<tr><td>1</td><td>2</td><td class="column">3</td></tr>
</table>

ターゲットブラウザにもよりますが、nth-childはモダンブラウザにしか効きませんのであまりおすすめできません。
それとサイズを厳密に調整したいのであればborder,cellpaddingは0にして全てスタイルで指定したほうがいいと思います。なぜならwidth=10%+cellspacing+border+cellpaddingになってしまいますから。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2014/11/08 07:37

>できれば直接テーブルのタグをいじるのではなく、



とおっしゃいますが、実際列を処理するなら<col>など列に対して
処理する方がいいと思いますけどね
また余計なお世話だと思いますがclassを設定するのが賢明です。

<style>
table {width: 100%;}
col.col3 {width: 10%;background-Color:lime;}
</style>
<body>
<table border=1 cellspacing=1 cellpadding=1>
<col><col><col class="col3">
<tbody>
<tr><td>a</td><td>b</td><td>c</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2014/11/08 07:37

単純にtd+td+td{width:10%;}


じゃまずいのですか?

CSS3(古いブラウザ無視してよいなら・・)
td:nth-child(3){width:10%;}
とか

その他、様々な選択できます。
tr{background-color:yellow;}
tr+tr{background-color:aqua;}
tr+tr+tr{background-color:lime;}
tr+tr+tr+tr{background-color:silver;}

先日回答した
cellpadding - HTML - 教えて!goo( http://oshiete.goo.ne.jp/qa/8788064.html )
で色々な例紹介してます。

 いずれにしてもカスケーディングはカスケーディングスタイルシートCSSの根幹となる仕組みですから、プロパティより先に理解しておかないと使いこなせないですよ。

>できれば直接テーブルのタグをいじるのではなく、スタイルシートの宣言部分で対応したいです。
 すべての要素に対して、HTMLは一切弄らずにスタイルの指定はできます。
 それが、「構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」、スタイルシートを使う目的なのですから

5 セレクタ( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
6 プロパティ値とカスケーディング、継承の割り当て( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )

 なによりも、兎にも角にも、この二項目は完璧にマスターしましょう。

※細かい点ですが
<table border=1 cellspacing=1 cellpadding=1>ではなく
<table border="1" summary="表の説明">
とするように、cellspacing,cellpaddingは、HTML4.01strict以降はありませんので・・
スタイルシートを使って設定しましょう。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2014/11/08 07:37

つ nth-child


https://developer.mozilla.org/ja/docs/Web/CSS/:n …

でも3列目だけ変えたいというのなら列にそれなりの意味があるわけですから、
> 直接テーブルのタグをいじるのではなく
と言わずに col を追加したほうがいいと思うんだけどなぁ。
https://developer.mozilla.org/ja/docs/Web/HTML/E …
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2014/11/08 07:37

td:nth-child(3) { スタイル }



タグをいじれないならこう。

css3だから対応しないブラウザもまだある。

http://weboook.blog22.fc2.com/blog-entry-268.html

セレクタについてどうぞ、探してみたら他にも方法があるかも?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2014/11/08 07:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!