Question

How to align all columns by colgroup? It works with colspan?

Example

This HTML here was tested with Firefox and Chrome, but no browser renderize the center for all expected columns.

  <table border="1" width="100%">
    <colgroup>
      <col style="text-align:center;background-color:red"/>
      <col align="center" valign="bottom" style="background-color:blue"/>
      <col align="center" valign="top" style="background-color:yellow"/>
    </colgroup>
    <tr>
      <th>ISBN</th>
      <th>Title</th>
      <th>Price</th>
    </tr>
    <tr>
      <td>3476896</td>
      <td>My first HTML</td>
      <td align="center">$53</td>
    </tr>
    <tr>
      <td><big>5869207</big></td>
      <td>My first CSS</td>
      <td><small>$49</small></td>
    </tr>
  </table>

Use this example (copy/paste to) at w3schools.com/tags.

PS: What is wrong with align and valign attributes? Style (by text-align) also not responding.


EDIT

As I said above, I need a solution "by colgroup". It can be also "by colgroup or col tags with style attribute".

My template system need to use colgroup (!), not is valid a solution without colgroup. My system not need to compatiple with HTML5, it uses something like "XHTML module" (see ex. DTD).

Related questions

  • Is html <COL align> deprecated? : not the same, because my problem is about XHTML, not about HTML5 (that is not XML and is a "plan for future standard").
Was it helpful?

Solution 4

Well, thanks for all answers and clues. My conclusion, about colgroup, is

  1. The HTML must be standard (XHTML1.0, XHTML1.1 or HTML4.X) compliant;

  2. ... but only one browser (Opera) is standard compliant.
    (MS-IE have no "standard compliant" tradiction, we can ignore IE7 surprising case)

"How to center the columns by colgroup?": following the standards instructions... So, my HTML code (at this question introduction) was right all the time! My mistake was wanting to see it at any web-browser!


Some "correct questions" are (examples):

  • Why another browsers not implemented the colgroup standard behaviour? At @ns47731's answer we see some clues. Perhaps web-browswer developer are expecting HTML5 and not XHTML2. See also @Alohci comment below.

  • Why HTML5 and XHTML2 proposals diverge about colgroup? No clues at answers... My supposition: XHTML2 and HTML5 will be not 100% compatible.

  • Can I negociate with my "template system developer" (a XSLT developer) to add this "XHTML1 standard compliant feature"? :-) Please help me in a lobby for PMC Article Previewer.

OTHER TIPS

If you take a look at http://www.w3schools.com/tags/tag_colgroup.asp you will see that the tag is essentially being phased out as of html5. It is likely that your aligns arent working because your doctype is set to HTML5. In practice it would be not good to use a tag that is going out the door but if you have to use it try setting your doctype to html 4, otherwise I would recommend what Kontakt has said and use the CSS selector :nth-child.

Edit: I looked into it further and did some tests. Set doctype

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Then run it in IE7. You will see it works! It seems many browsers don't support it even if your doctype is set to lower than 4. However good'ol IE7 still renders it. All that can be said is that it is a deprecated tag that doesn't work properly because it became unsupported long ago.

Why not use :nth-child(x) on td elements?

Add following code to your example in HEAD section:

<style type='text/css'>
 tr td:nth-child(3) {
  text-align:center;
 }
</style>

and see changes to your third column.

 <table border="1" width="100%">
 <colgroup>
      <col style="text-align:center;background-color:red"/>
      <col align="center" valign="bottom" style="background-color:blue"/>
      <col align="center" valign="top" style="background-color:yellow"/>
 </colgroup>
    <tr>
      <th>ISBN</th>
      <th>Title</th>
      <th>Price</th>
    </tr>
    <tr>
      <th>3476896</th>
      <th>My first HTML</th>
      <th>$53</th>
    </tr>
    <tr>
      <th><big>5869207</big></th>
      <th>My first CSS</th>
      <th><small>$49</small></th>
    </tr>
  </table>

This at least centers your text in the cells, but like ns47731 its a deprecated tag so can't expect too much.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top