Why use colspan= or rowspan=? I have set my table cell #3 to 246px and have placed an image (called keyboard.jpg) with a width of 246px in it as a background image (the only cell in the table with an image), yet the table cell has expanded beyond that 246px width. The content (text,image,etc..) inside the columns can be aligned horizontally using the tag attribute "align" The content (text,image,etc..) inside the columns can be aligned vertically using the tag attribute "valign" This especially shows if you have a border defined for your table. i.e. Any image alone in a table cell (e.g., single-pixel spacer images) should be made block-level. This attribute defines the size of the space between two cells in a percentage value or pixels. To accomplish this we have to take two steps. The browser would use that image as a background image for the table element to which the background attribute had been applied.. Example 1 below renders a table that is 500 pixels wide and has two columns. This attribute has been deprecated in favor of styling tables with CSS.. To apply a background image with CSS, use the background property. It will override any style set in the HTML